blob: f5d7512fd69506761c99a1e26ea911dd819c7085 [file] [log] [blame]
Bill Wendling7c20aab2013-08-22 20:46:05 +00001// RUN: llvm-tblgen %s | FileCheck %s
2
Daniel Sanders6ef0a2f2014-05-02 19:25:52 +00003// CHECK: class Y<string Y:S = ?> {
4// CHECK: string T = !strconcat(Y:S, "foo");
5// CHECK: string T2 = !strconcat(Y:S, !strconcat("foo", !strconcat(Y:S, "bar")));
6// CHECK: string S = "foobar";
7// CHECK: }
8
9// CHECK: def Z {
10// CHECK: string T = "fufoo";
11// CHECK: string T2 = "fufoofubar";
12// CHECK: string S = "foobar";
13// CHECK: }
Chris Lattner376ee782006-03-31 21:53:01 +000014
15class Y<string S> {
16 string T = !strconcat(S, "foo");
Daniel Sanders6ef0a2f2014-05-02 19:25:52 +000017 // More than two arguments is equivalent to nested calls
18 string T2 = !strconcat(S, "foo", S, "bar");
Chris Lattnerbe0d6722009-03-11 17:08:13 +000019
20 // String values concatenate lexically, as in C.
21 string S = "foo" "bar";
Chris Lattner376ee782006-03-31 21:53:01 +000022}
23
24def Z : Y<"fu">;