annotate llvm/test/TableGen/subst.td @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: llvm-tblgen %s | FileCheck %s
anatofuz
parents:
diff changeset
2 // XFAIL: vg_leak
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 class Honorific<string t> {
anatofuz
parents:
diff changeset
5 string honorific = t;
anatofuz
parents:
diff changeset
6 }
anatofuz
parents:
diff changeset
7
anatofuz
parents:
diff changeset
8 def Mr : Honorific<"Mr.">;
anatofuz
parents:
diff changeset
9 def Ms : Honorific<"Ms.">;
anatofuz
parents:
diff changeset
10 def Mrs : Honorific<"Mrs.">;
anatofuz
parents:
diff changeset
11 def TVAR : Honorific<"Bogus">;
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 class Name<string n, Honorific t> {
anatofuz
parents:
diff changeset
14 string name = n;
anatofuz
parents:
diff changeset
15 Honorific honorific = t;
anatofuz
parents:
diff changeset
16 }
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 class AName<string name, Honorific honorific> :
anatofuz
parents:
diff changeset
19 Name<!subst("FIRST", "John", !subst("LAST", "Smith", name)),
anatofuz
parents:
diff changeset
20 !subst(TVAR, Mr, honorific)>;
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 def JohnSmith : AName<"FIRST LAST", TVAR>;
anatofuz
parents:
diff changeset
23 def JaneSmith : AName<"Jane LAST", Ms>;
anatofuz
parents:
diff changeset
24 def JohnSmithJones : AName<"FIRST LAST-Jones", Mr>;
anatofuz
parents:
diff changeset
25 def JimmyJohnson : AName<"Jimmy Johnson", Mr>;
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 // CHECK: ------------- Classes -----------------
anatofuz
parents:
diff changeset
28 // CHECK-NEXT: class AName<string AName:name = ?, Honorific AName:honorific = ?> {
anatofuz
parents:
diff changeset
29 // CHECK-NEXT: string name = !subst("FIRST", "John", !subst("LAST", "Smith", AName:name));
anatofuz
parents:
diff changeset
30 // CHECK-NEXT: Honorific honorific = !subst(TVAR, Mr, AName:honorific);
anatofuz
parents:
diff changeset
31 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
32 // CHECK-NEXT: class Honorific<string Honorific:t = ?> {
anatofuz
parents:
diff changeset
33 // CHECK-NEXT: string honorific = Honorific:t;
anatofuz
parents:
diff changeset
34 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
35 // CHECK-NEXT: class Name<string Name:n = ?, Honorific Name:t = ?> {
anatofuz
parents:
diff changeset
36 // CHECK-NEXT: string name = Name:n;
anatofuz
parents:
diff changeset
37 // CHECK-NEXT: Honorific honorific = Name:t;
anatofuz
parents:
diff changeset
38 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
39 // CHECK-NEXT: ------------- Defs -----------------
anatofuz
parents:
diff changeset
40 // CHECK-NEXT: def JaneSmith {
anatofuz
parents:
diff changeset
41 // CHECK-NEXT: string name = "Jane Smith";
anatofuz
parents:
diff changeset
42 // CHECK-NEXT: Honorific honorific = Ms;
anatofuz
parents:
diff changeset
43 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
44 // CHECK-NEXT: def JimmyJohnson {
anatofuz
parents:
diff changeset
45 // CHECK-NEXT: string name = "Jimmy Johnson";
anatofuz
parents:
diff changeset
46 // CHECK-NEXT: Honorific honorific = Mr;
anatofuz
parents:
diff changeset
47 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
48 // CHECK-NEXT: def JohnSmith {
anatofuz
parents:
diff changeset
49 // CHECK-NEXT: string name = "John Smith";
anatofuz
parents:
diff changeset
50 // CHECK-NEXT: Honorific honorific = Mr;
anatofuz
parents:
diff changeset
51 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
52 // CHECK-NEXT: def JohnSmithJones {
anatofuz
parents:
diff changeset
53 // CHECK-NEXT: string name = "John Smith-Jones";
anatofuz
parents:
diff changeset
54 // CHECK-NEXT: Honorific honorific = Mr;
anatofuz
parents:
diff changeset
55 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
56 // CHECK-NEXT: def Mr
anatofuz
parents:
diff changeset
57 // CHECK-NEXT: string honorific = "Mr.";
anatofuz
parents:
diff changeset
58 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
59 // CHECK-NEXT: def Mrs {
anatofuz
parents:
diff changeset
60 // CHECK-NEXT: string honorific = "Mrs.";
anatofuz
parents:
diff changeset
61 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
62 // CHECK-NEXT: def Ms {
anatofuz
parents:
diff changeset
63 // CHECK-NEXT: string honorific = "Ms.";
anatofuz
parents:
diff changeset
64 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
65 // CHECK-NEXT: def TVAR {
anatofuz
parents:
diff changeset
66 // CHECK-NEXT: string honorific = "Bogus";
anatofuz
parents:
diff changeset
67 // CHECK-NEXT: }