| // RUN: llvm-tblgen %s | FileCheck %s | |
| // CHECK: class Y<string Y:S = ?> { | |
| // CHECK: string T = !strconcat(Y:S, "foo"); | |
| // CHECK: string T2 = !strconcat(Y:S, !strconcat("foo", !strconcat(Y:S, "bar"))); | |
| // CHECK: string S = "foobar"; | |
| // CHECK: } | |
| // CHECK: def Z { | |
| // CHECK: string T = "fufoo"; | |
| // CHECK: string T2 = "fufoofubar"; | |
| // CHECK: string S = "foobar"; | |
| // CHECK: } | |
| class Y<string S> { | |
| string T = !strconcat(S, "foo"); | |
| // More than two arguments is equivalent to nested calls | |
| string T2 = !strconcat(S, "foo", S, "bar"); | |
| // String values concatenate lexically, as in C. | |
| string S = "foo" "bar"; | |
| } | |
| def Z : Y<"fu">; |