mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-12 14:17:59 +00:00
f38833c7ad
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169862 91177308-0d34-0410-b5e6-96231b3b80d8
30 lines
876 B
TableGen
30 lines
876 B
TableGen
// 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
|
|
|
|
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>;
|