• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: llvm-tblgen %s | FileCheck %s
2
3// CHECK: class X<list<int> X:a = ?, list<int> X:b = ?, list<int> X:c = ?> {
4// CHECK:   list<int> x = !listconcat(!listconcat(X:a, X:b), !listconcat(X:b, X:c));
5// CHECK: }
6
7// CHECK: class Y<list<string> Y:S = ?> {
8// CHECK:   list<string> T1 = !listconcat(Y:S, ["foo"]);
9// CHECK:   list<string> T2 = !listconcat(Y:S, !listconcat(["foo"], !listconcat(Y:S, ["bar", "baz"])));
10// CHECK: }
11
12// CHECK: def A0 {
13// CHECK:   list<int> lst = [4];
14// CHECK: }
15
16// CHECK: def A1 {
17// CHECK:   list<int> lst = [];
18// CHECK: }
19
20// CHECK: def DX {
21// CHECK:   list<int> x = [0, 1, 1, 2]
22// CHECK: }
23
24// CHECK: def Z {
25// CHECK:   list<string> T1 = ["fu", "foo"];
26// CHECK:   list<string> T2 = ["fu", "foo", "fu", "bar", "baz"];
27// CHECK: }
28
29class A<bit x> {
30  // The empty lists type-check without issues.
31  list<int> lst = !listconcat([], !if(x, [], [4]));
32}
33
34def A0 : A<0>;
35def A1 : A<1>;
36
37class X<list<int> a, list<int> b, list<int> c> {
38    list<int> x = !listconcat(!listconcat(a, b), !listconcat(b, c));
39}
40
41class Y<list<string> S> {
42  list<string> T1 = !listconcat(S, ["foo"]);
43  list<string> T2 = !listconcat(S, ["foo"], S, ["bar", "baz"]);
44}
45
46def DX : X<[0], [1], [2]>;
47
48def Z : Y<["fu"]>;
49