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