diff options
author | Eduardo Caldas <ecaldas@google.com> | 2020-07-09 15:49:15 +0000 |
---|---|---|
committer | Eduardo Caldas <ecaldas@google.com> | 2020-07-10 16:21:11 +0000 |
commit | 1db5b348c4c93b6610afb4fd515b389989efc302 (patch) | |
tree | d2e54377e6d3de33c1d911fcc8bd1ba8341eee50 /clang/unittests/Tooling/Syntax/TreeTest.cpp | |
parent | f33c2c27a8d4ea831aa7c2c2649066be91318d85 (diff) | |
download | llvm-1db5b348c4c93b6610afb4fd515b389989efc302.zip llvm-1db5b348c4c93b6610afb4fd515b389989efc302.tar.gz llvm-1db5b348c4c93b6610afb4fd515b389989efc302.tar.bz2 |
Add kinded UDL for raw literal operator and numeric literal operator template
Diffstat (limited to 'clang/unittests/Tooling/Syntax/TreeTest.cpp')
-rw-r--r-- | clang/unittests/Tooling/Syntax/TreeTest.cpp | 134 |
1 files changed, 53 insertions, 81 deletions
diff --git a/clang/unittests/Tooling/Syntax/TreeTest.cpp b/clang/unittests/Tooling/Syntax/TreeTest.cpp index 91e7a8f..bd639aa 100644 --- a/clang/unittests/Tooling/Syntax/TreeTest.cpp +++ b/clang/unittests/Tooling/Syntax/TreeTest.cpp @@ -1190,32 +1190,45 @@ TEST_P(SyntaxTreeTest, UserDefinedLiteral) { } EXPECT_TRUE(treeDumpEqual( R"cpp( +typedef decltype(sizeof(void *)) size_t; + unsigned operator "" _i(unsigned long long); unsigned operator "" _f(long double); unsigned operator "" _c(char); - -unsigned operator "" _r(const char*); // raw-literal operator - +unsigned operator "" _s(const char*, size_t); +unsigned operator "" _r(const char*); template <char...> -unsigned operator "" _t(); // numeric literal operator template +unsigned operator "" _t(); void test() { - 12_i; // call: operator "" _i(12uLL) | kind: integer - 1.2_f; // call: operator "" _f(1.2L) | kind: float - '2'_c; // call: operator "" _c('2') | kind: char + 12_i; // call: operator "" _i(12uLL) | kind: integer + 1.2_f; // call: operator "" _f(1.2L) | kind: float + '2'_c; // call: operator "" _c('2') | kind: char + "12"_s; // call: operator "" _s("12") | kind: string - // TODO: Generate `FloatUserDefinedLiteralExpression` and - // `IntegerUserDefinedLiteralExpression` instead of - // `UnknownUserDefinedLiteralExpression`. See `getUserDefinedLiteralKind` - 12_r; // call: operator "" _r("12") | kind: integer - 1.2_r; // call: operator "" _i("1.2") | kind: float - 12_t; // call: operator<'1', '2'> "" _x() | kind: integer - 1.2_t; // call: operator<'1', '2'> "" _x() | kind: float + 12_r; // call: operator "" _r("12") | kind: integer + 1.2_r; // call: operator "" _i("1.2") | kind: float + 12_t; // call: operator<'1', '2'> "" _x() | kind: integer + 1.2_t; // call: operator<'1', '2'> "" _x() | kind: float } )cpp", R"txt( *: TranslationUnit |-SimpleDeclaration +| |-typedef +| |-decltype +| |-( +| |-UnknownExpression +| | |-sizeof +| | |-( +| | |-void +| | |-* +| | `-) +| |-) +| |-SimpleDeclarator +| | `-size_t +| `-; +|-SimpleDeclaration | |-unsigned | |-SimpleDeclarator | | |-operator @@ -1259,6 +1272,24 @@ void test() { | |-SimpleDeclarator | | |-operator | | |-"" +| | |-_s +| | `-ParametersAndQualifiers +| | |-( +| | |-SimpleDeclaration +| | | |-const +| | | |-char +| | | `-SimpleDeclarator +| | | `-* +| | |-, +| | |-SimpleDeclaration +| | | `-size_t +| | `-) +| `-; +|-SimpleDeclaration +| |-unsigned +| |-SimpleDeclarator +| | |-operator +| | |-"" | | |-_r | | `-ParametersAndQualifiers | | |-( @@ -1308,88 +1339,29 @@ void test() { | | `-'2'_c | `-; |-ExpressionStatement - | |-UnknownUserDefinedLiteralExpression + | |-StringUserDefinedLiteralExpression + | | `-"12"_s + | `-; + |-ExpressionStatement + | |-IntegerUserDefinedLiteralExpression | | `-12_r | `-; |-ExpressionStatement - | |-UnknownUserDefinedLiteralExpression + | |-FloatUserDefinedLiteralExpression | | `-1.2_r | `-; |-ExpressionStatement - | |-UnknownUserDefinedLiteralExpression + | |-IntegerUserDefinedLiteralExpression | | `-12_t | `-; |-ExpressionStatement - | |-UnknownUserDefinedLiteralExpression + | |-FloatUserDefinedLiteralExpression | | `-1.2_t | `-; `-} )txt")); } -TEST_P(SyntaxTreeTest, UserDefinedLiteralString) { - if (!GetParam().isCXX11OrLater()) { - return; - } - EXPECT_TRUE(treeDumpEqual( - R"cpp( -typedef decltype(sizeof(void *)) size_t; -unsigned operator "" _s(const char*, size_t); -void test() { - "12"_s;// call: operator "" _s("12") | kind: string -} - )cpp", - R"txt( -*: TranslationUnit -|-SimpleDeclaration -| |-typedef -| |-decltype -| |-( -| |-UnknownExpression -| | |-sizeof -| | |-( -| | |-void -| | |-* -| | `-) -| |-) -| |-SimpleDeclarator -| | `-size_t -| `-; -|-SimpleDeclaration -| |-unsigned -| |-SimpleDeclarator -| | |-operator -| | |-"" -| | |-_s -| | `-ParametersAndQualifiers -| | |-( -| | |-SimpleDeclaration -| | | |-const -| | | |-char -| | | `-SimpleDeclarator -| | | `-* -| | |-, -| | |-SimpleDeclaration -| | | `-size_t -| | `-) -| `-; -`-SimpleDeclaration - |-void - |-SimpleDeclarator - | |-test - | `-ParametersAndQualifiers - | |-( - | `-) - `-CompoundStatement - |-{ - |-ExpressionStatement - | |-StringUserDefinedLiteralExpression - | | `-"12"_s - | `-; - `-} -)txt")); -} - TEST_P(SyntaxTreeTest, IntegerLiteralLongLong) { if (!GetParam().isCXX11OrLater()) { return; |