2013-08-22 22:46:05 +02:00
|
|
|
// RUN: llvm-tblgen %s | FileCheck %s
|
|
|
|
|
2014-05-02 21:25:52 +02:00
|
|
|
// CHECK: class Y<string Y:S = ?> {
|
|
|
|
// CHECK: string T = !strconcat(Y:S, "foo");
|
|
|
|
// CHECK: string T2 = !strconcat(Y:S, !strconcat("foo", !strconcat(Y:S, "bar")));
|
|
|
|
// CHECK: string S = "foobar";
|
|
|
|
// CHECK: }
|
|
|
|
|
|
|
|
// CHECK: def Z {
|
|
|
|
// CHECK: string T = "fufoo";
|
|
|
|
// CHECK: string T2 = "fufoofubar";
|
|
|
|
// CHECK: string S = "foobar";
|
|
|
|
// CHECK: }
|
2006-03-31 23:53:01 +02:00
|
|
|
|
|
|
|
class Y<string S> {
|
|
|
|
string T = !strconcat(S, "foo");
|
2014-05-02 21:25:52 +02:00
|
|
|
// More than two arguments is equivalent to nested calls
|
|
|
|
string T2 = !strconcat(S, "foo", S, "bar");
|
2009-03-11 18:08:13 +01:00
|
|
|
|
|
|
|
// String values concatenate lexically, as in C.
|
|
|
|
string S = "foo" "bar";
|
2006-03-31 23:53:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
def Z : Y<"fu">;
|