mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 00:17:01 +00:00
[tablegen] !strconcat accepts more than two arguments but this wasn't documented or tested.
Summary: * Updated the documentation * Added a test for >2 arguments * Added a check for the lexical concatenation * Made the existing test a bit stricter. Reviewers: t.p.northover Reviewed By: t.p.northover Subscribers: t.p.northover, llvm-commits Differential Revision: http://reviews.llvm.org/D3485 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207865 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -160,8 +160,10 @@ supported include:
|
|||||||
remaining elements in the list may be arbitrary other values, including
|
remaining elements in the list may be arbitrary other values, including
|
||||||
nested ```dag``' values.
|
nested ```dag``' values.
|
||||||
|
|
||||||
``!strconcat(a, b)``
|
``!strconcat(a, b, ...)``
|
||||||
A string value that is the result of concatenating the 'a' and 'b' strings.
|
A string value that is the result of concatenating the 'a' and 'b' strings.
|
||||||
|
More than two arguments are accepted with the result being the concatenation
|
||||||
|
of all the strings given.
|
||||||
|
|
||||||
``str1#str2``
|
``str1#str2``
|
||||||
"#" (paste) is a shorthand for !strconcat. It may concatenate things that
|
"#" (paste) is a shorthand for !strconcat. It may concatenate things that
|
||||||
|
|||||||
@@ -1,9 +1,21 @@
|
|||||||
// RUN: llvm-tblgen %s | FileCheck %s
|
// RUN: llvm-tblgen %s | FileCheck %s
|
||||||
|
|
||||||
// CHECK: fufoo
|
// 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: }
|
||||||
|
|
||||||
class Y<string S> {
|
class Y<string S> {
|
||||||
string T = !strconcat(S, "foo");
|
string T = !strconcat(S, "foo");
|
||||||
|
// More than two arguments is equivalent to nested calls
|
||||||
|
string T2 = !strconcat(S, "foo", S, "bar");
|
||||||
|
|
||||||
// String values concatenate lexically, as in C.
|
// String values concatenate lexically, as in C.
|
||||||
string S = "foo" "bar";
|
string S = "foo" "bar";
|
||||||
|
|||||||
Reference in New Issue
Block a user