| // 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>; |