summaryrefslogtreecommitdiff
path: root/test/TableGen/subst.td
diff options
context:
space:
mode:
Diffstat (limited to 'test/TableGen/subst.td')
-rw-r--r--test/TableGen/subst.td30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/TableGen/subst.td b/test/TableGen/subst.td
new file mode 100644
index 00000000000..850ac38465c
--- /dev/null
+++ b/test/TableGen/subst.td
@@ -0,0 +1,30 @@
+// RUN: llvm-tblgen %s | grep "Smith" | count 7
+// RUN: llvm-tblgen %s | grep "Johnson" | count 2
+// RUN: llvm-tblgen %s | grep "FIRST" | count 1
+// RUN: llvm-tblgen %s | grep "LAST" | count 1
+// RUN: llvm-tblgen %s | grep "TVAR" | count 2
+// RUN: llvm-tblgen %s | grep "Bogus" | count 1
+// XFAIL: vg_leak
+
+class Honorific<string t> {
+ string honorific = t;
+}
+
+def Mr : Honorific<"Mr.">;
+def Ms : Honorific<"Ms.">;
+def Mrs : Honorific<"Mrs.">;
+def TVAR : Honorific<"Bogus">;
+
+class Name<string n, Honorific t> {
+ string name = n;
+ Honorific honorific = t;
+}
+
+class AName<string name, Honorific honorific> :
+ Name<!subst("FIRST", "John", !subst("LAST", "Smith", name)),
+ !subst(TVAR, Mr, honorific)>;
+
+def JohnSmith : AName<"FIRST LAST", TVAR>;
+def JaneSmith : AName<"Jane LAST", Ms>;
+def JohnSmithJones : AName<"FIRST LAST-Jones", Mr>;
+def JimmyJohnson : AName<"Jimmy Johnson", Mr>;