Mercurial > hg > CbC > CbC_llvm
view test/TableGen/subst.td @ 52:c22698ecb2a9
modified CreateIdentifierInfo and create new function which was named 'CreateUniqueIdentifierInfo'.
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 15 Jan 2014 21:01:33 +0900 |
parents | 95c75e76d11b |
children | c2174574ed3a |
line wrap: on
line source
// RUN: llvm-tblgen %s | FileCheck %s // 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>; // CHECK: ------------- Classes ----------------- // CHECK-NEXT: class AName<string AName:name = ?, Honorific AName:honorific = ?> { // CHECK-NEXT: string name = !subst("FIRST", "John", !subst("LAST", "Smith", AName:name)); // CHECK-NEXT: Honorific honorific = !subst(TVAR, Mr, AName:honorific); // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: class Honorific<string Honorific:t = ?> { // CHECK-NEXT: string honorific = Honorific:t; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: class Name<string Name:n = ?, Honorific Name:t = ?> { // CHECK-NEXT: string name = Name:n; // CHECK-NEXT: Honorific honorific = Name:t; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: ------------- Defs ----------------- // CHECK-NEXT: def JaneSmith { // CHECK-NEXT: string name = "Jane Smith"; // CHECK-NEXT: Honorific honorific = Ms; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def JimmyJohnson { // CHECK-NEXT: string name = "Jimmy Johnson"; // CHECK-NEXT: Honorific honorific = Mr; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def JohnSmith { // CHECK-NEXT: string name = "John Smith"; // CHECK-NEXT: Honorific honorific = Mr; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def JohnSmithJones { // CHECK-NEXT: string name = "John Smith-Jones"; // CHECK-NEXT: Honorific honorific = Mr; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def Mr // CHECK-NEXT: string honorific = "Mr."; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def Mrs { // CHECK-NEXT: string honorific = "Mrs."; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def Ms { // CHECK-NEXT: string honorific = "Ms."; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: } // CHECK-NEXT: def TVAR { // CHECK-NEXT: string honorific = "Bogus"; // CHECK-NEXT: string NAME = ?; // CHECK-NEXT: }