blob: ce9f45d0a481950e5de04349dbb17ad201683ae0 [file] [log] [blame]
David Greene4f124db2009-05-14 21:54:42 +00001// RUN: tblgen %s | grep {Smith} | count 7
2// RUN: tblgen %s | grep {Johnson} | count 2
3// RUN: tblgen %s | grep {FIRST} | count 1
4// RUN: tblgen %s | grep {LAST} | count 1
5// RUN: tblgen %s | grep {TVAR} | count 2
6// RUN: tblgen %s | grep {Bogus} | count 1
7
8class Honorific<string t> {
9 string honorific = t;
10}
11
12def Mr : Honorific<"Mr.">;
13def Ms : Honorific<"Ms.">;
14def Mrs : Honorific<"Mrs.">;
15def TVAR : Honorific<"Bogus">;
16
17class Name<string n, Honorific t> {
18 string name = n;
19 Honorific honorific = t;
20}
21
22class AName<string name, Honorific honorific> :
23 Name<!subst("FIRST", "John", !subst("LAST", "Smith", name)),
24 !subst(TVAR, Mr, honorific)>;
25
26def JohnSmith : AName<"FIRST LAST", TVAR>;
27def JaneSmith : AName<"Jane LAST", Ms>;
28def JohnSmithJones : AName<"FIRST LAST-Jones", Mr>;
29def JimmyJohnson : AName<"Jimmy Johnson", Mr>;