brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 657ecda Raw
68 lines · plain
1// RUN: llvm-tblgen %s | FileCheck %s2// XFAIL: vg_leak3 4class Honorific<string t> {5  string honorific = t;6}7 8def Mr : Honorific<"Mr.">;9def Ms : Honorific<"Ms.">;10def Mrs : Honorific<"Mrs.">;11def TVAR : Honorific<"Bogus">;12 13class Name<string n, Honorific t> {14  string name = n;15  Honorific honorific = t;16}17 18class AName<string name, Honorific honorific> : 19  Name<!subst("FIRST", "John", !subst("LAST", "Smith", name)),20       !subst(TVAR, Mr, honorific)>;21 22def JohnSmith : AName<"FIRST LAST", TVAR>;23def JaneSmith : AName<"Jane LAST", Ms>;24def JohnSmithJones : AName<"FIRST LAST-Jones", Mr>;25def JimmyJohnson : AName<"Jimmy Johnson", Mr>;26 27// CHECK:      ------------- Classes -----------------28// CHECK-NEXT: class AName<string AName:name = ?, Honorific AName:honorific = ?> {29// CHECK-NEXT:   string name = !subst("FIRST", "John", !subst("LAST", "Smith", AName:name));30// CHECK-NEXT:   Honorific honorific = !subst(TVAR, Mr, AName:honorific);31// CHECK-NEXT: }32// CHECK-NEXT: class Honorific<string Honorific:t = ?> {33// CHECK-NEXT:   string honorific = Honorific:t;34// CHECK-NEXT: }35// CHECK-NEXT: class Name<string Name:n = ?, Honorific Name:t = ?> {36// CHECK-NEXT:   string name = Name:n;37// CHECK-NEXT:   Honorific honorific = Name:t;38// CHECK-NEXT: }39// CHECK-NEXT: ------------- Defs -----------------40// CHECK-NEXT: def JaneSmith {41// CHECK-NEXT:   string name = "Jane Smith";42// CHECK-NEXT:   Honorific honorific = Ms;43// CHECK-NEXT: }44// CHECK-NEXT: def JimmyJohnson {45// CHECK-NEXT:   string name = "Jimmy Johnson";46// CHECK-NEXT:   Honorific honorific = Mr;47// CHECK-NEXT: }48// CHECK-NEXT: def JohnSmith {49// CHECK-NEXT:   string name = "John Smith";50// CHECK-NEXT:   Honorific honorific = Mr;51// CHECK-NEXT: }52// CHECK-NEXT: def JohnSmithJones {53// CHECK-NEXT:   string name = "John Smith-Jones";54// CHECK-NEXT:   Honorific honorific = Mr;55// CHECK-NEXT: }56// CHECK-NEXT: def Mr 57// CHECK-NEXT:   string honorific = "Mr.";58// CHECK-NEXT: }59// CHECK-NEXT: def Mrs {60// CHECK-NEXT:   string honorific = "Mrs.";61// CHECK-NEXT: }62// CHECK-NEXT: def Ms {63// CHECK-NEXT:   string honorific = "Ms.";64// CHECK-NEXT: }65// CHECK-NEXT: def TVAR {66// CHECK-NEXT:   string honorific = "Bogus";67// CHECK-NEXT: }68