Bill Wendling | 7c20aab | 2013-08-22 20:46:05 +0000 | [diff] [blame] | 1 | // RUN: llvm-tblgen %s | FileCheck %s |
| 2 | |
Daniel Sanders | 6ef0a2f | 2014-05-02 19:25:52 +0000 | [diff] [blame] | 3 | // 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 Lattner | 376ee78 | 2006-03-31 21:53:01 +0000 | [diff] [blame] | 14 | |
| 15 | class Y<string S> { |
| 16 | string T = !strconcat(S, "foo"); |
Daniel Sanders | 6ef0a2f | 2014-05-02 19:25:52 +0000 | [diff] [blame] | 17 | // More than two arguments is equivalent to nested calls |
| 18 | string T2 = !strconcat(S, "foo", S, "bar"); |
Chris Lattner | be0d672 | 2009-03-11 17:08:13 +0000 | [diff] [blame] | 19 | |
| 20 | // String values concatenate lexically, as in C. |
| 21 | string S = "foo" "bar"; |
Chris Lattner | 376ee78 | 2006-03-31 21:53:01 +0000 | [diff] [blame] | 22 | } |
| 23 | |
| 24 | def Z : Y<"fu">; |