xref: /aosp_15_r20/external/llvm/test/TableGen/foreach.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-tblgen %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker// XFAIL: vg_leak
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker// CHECK: Classes
5*9880d681SAndroid Build Coastguard Worker// CHECK: Sr
6*9880d681SAndroid Build Coastguard Worker// CHECK: Jr
7*9880d681SAndroid Build Coastguard Worker// CHECK: "NAME"
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker// CHECK: Defs
10*9880d681SAndroid Build Coastguard Worker// CHECK: Jr
11*9880d681SAndroid Build Coastguard Worker// CHECK: Sr
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker// Variables for foreach
14*9880d681SAndroid Build Coastguard Workerclass decls {
15*9880d681SAndroid Build Coastguard Worker  string name;
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdef Decls : decls;
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerclass A<list<string> names> {
21*9880d681SAndroid Build Coastguard Worker  list<string> Names = names;
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerclass B<list<string> names> : A<!foreach(Decls.name, names, !strconcat(Decls.name, ", Sr."))>;
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerclass C<list<string> names> : A<!foreach(Decls.name, names, !strconcat(Decls.name, ", Jr."))>;
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerclass D<list<string> names> : A<!foreach(Decls.name, names, !subst("NAME", "John Smith", Decls.name))>;
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerclass Names {
31*9880d681SAndroid Build Coastguard Worker  list<string> values = ["Ken Griffey", "Seymour Cray"];
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdef People : Names;
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdef Seniors : B<People.values>;
37*9880d681SAndroid Build Coastguard Workerdef Juniors : C<People.values>;
38*9880d681SAndroid Build Coastguard Workerdef Smiths : D<["NAME", "Jane Smith"]>;
39*9880d681SAndroid Build Coastguard Workerdef Unprocessed : D<People.values>;
40