1 // RUN: llvm-tblgen %s | FileCheck %s 2 3 // CHECK: class Y<string Y:S = ?> { 4 // CHECK: string T = !strconcat(Y:S, "foo"); 5 // CHECK: string T2 = !strconcat(Y:S, !strconcat("foo", !strconcat(Y:S, "bar"))); 6 // CHECK: string S = "foobar"; 7 // CHECK: } 8 9 // CHECK: def Z { 10 // CHECK: string T = "fufoo"; 11 // CHECK: string T2 = "fufoofubar"; 12 // CHECK: string S = "foobar"; 13 // CHECK: } 14 15 class Y<string S> { 16 string T = !strconcat(S, "foo"); 17 // More than two arguments is equivalent to nested calls 18 string T2 = !strconcat(S, "foo", S, "bar"); 19 20 // String values concatenate lexically, as in C. 21 string S = "foo" "bar"; 22 } 23 24 def Z : Y<"fu">; 25