brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · a989c3a Raw
49 lines · plain
1// RUN: llvm-tblgen %s | FileCheck %s2 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