diff options
author | Eduardo Caldas <ecaldas@google.com> | 2020-06-04 14:03:04 +0200 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2020-06-04 14:05:31 +0200 |
commit | 3b739690b01e595f6da412316b58a0a291702049 (patch) | |
tree | 920f55d593cbdbb8dd54e7d59fa590fc7e229553 /clang/unittests/Tooling/Syntax/TreeTest.cpp | |
parent | 9bdb91889020b3e61cba26adb1b9c64a24c09f95 (diff) | |
download | llvm-3b739690b01e595f6da412316b58a0a291702049.zip llvm-3b739690b01e595f6da412316b58a0a291702049.tar.gz llvm-3b739690b01e595f6da412316b58a0a291702049.tar.bz2 |
Add support for IntegerLiteral in SyntaxTree
Reviewers: gribozavr2
Reviewed By: gribozavr2
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81135
Diffstat (limited to 'clang/unittests/Tooling/Syntax/TreeTest.cpp')
-rw-r--r-- | clang/unittests/Tooling/Syntax/TreeTest.cpp | 250 |
1 files changed, 199 insertions, 51 deletions
diff --git a/clang/unittests/Tooling/Syntax/TreeTest.cpp b/clang/unittests/Tooling/Syntax/TreeTest.cpp index c7a2b14..49fdcb7 100644 --- a/clang/unittests/Tooling/Syntax/TreeTest.cpp +++ b/clang/unittests/Tooling/Syntax/TreeTest.cpp @@ -64,6 +64,11 @@ struct TestClangConfig { Language == Lang_CXX17 || Language == Lang_CXX20; } + bool isCXX14OrLater() const { + return Language == Lang_CXX14 || Language == Lang_CXX17 || + Language == Lang_CXX20; + } + bool supportsCXXDynamicExceptionSpecification() const { return Language == Lang_CXX03 || Language == Lang_CXX11 || Language == Lang_CXX14; @@ -321,7 +326,7 @@ int b = 42; |-SimpleDeclarator | |-b | |-= - | `-UnknownExpression + | `-IntegerLiteralExpression | `-42 `-; )txt")); @@ -378,7 +383,7 @@ int main() { |-IfStatement | |-if | |-( - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-1 | |-) | `-CompoundStatement @@ -387,7 +392,7 @@ int main() { |-IfStatement | |-if | |-( - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-1 | |-) | |-CompoundStatement @@ -397,7 +402,7 @@ int main() { | `-IfStatement | |-if | |-( - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-0 | |-) | `-CompoundStatement @@ -468,7 +473,7 @@ void test() { | | |-a | | `-ArraySubscript | | |-[ - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-3 | | `-] | `-; @@ -513,7 +518,7 @@ void test() { | | `-SimpleDeclarator | | |-a | | |-= - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-10 | `-; `-} @@ -544,14 +549,14 @@ void test() { |-SwitchStatement | |-switch | |-( - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-1 | |-) | `-CompoundStatement | |-{ | |-CaseStatement | | |-case - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-0 | | |-: | | `-DefaultStatement @@ -585,7 +590,7 @@ void test() { |-WhileStatement | |-while | |-( - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-1 | |-) | `-CompoundStatement @@ -627,7 +632,7 @@ int main() { | |-: | `-ReturnStatement | |-return - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-100 | `-; `-} @@ -665,7 +670,7 @@ void test() { |-IfStatement | |-if | |-( - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-1 | |-) | |-ExpressionStatement @@ -716,6 +721,149 @@ void test() { )txt")); } +TEST_P(SyntaxTreeTest, IntegerLiteral) { + EXPECT_TRUE(treeDumpEqual( + R"cpp( +void test() { + 12; + 12u; + 12l; + 12ul; + 014; + 0XC; +} +)cpp", + R"txt( +*: TranslationUnit +`-SimpleDeclaration + |-void + |-SimpleDeclarator + | |-test + | `-ParametersAndQualifiers + | |-( + | `-) + `-CompoundStatement + |-{ + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-12 + | `-; + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-12u + | `-; + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-12l + | `-; + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-12ul + | `-; + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-014 + | `-; + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-0XC + | `-; + `-} +)txt")); +} + +TEST_P(SyntaxTreeTest, IntegerLiteralLongLong) { + if (!GetParam().isCXX11OrLater()) { + return; + } + EXPECT_TRUE(treeDumpEqual( + R"cpp( +void test() { + 12ll; + 12ull; +} +)cpp", + R"txt( +*: TranslationUnit +`-SimpleDeclaration + |-void + |-SimpleDeclarator + | |-test + | `-ParametersAndQualifiers + | |-( + | `-) + `-CompoundStatement + |-{ + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-12ll + | `-; + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-12ull + | `-; + `-} +)txt")); +} + +TEST_P(SyntaxTreeTest, IntegerLiteralBinary) { + if (!GetParam().isCXX14OrLater()) { + return; + } + EXPECT_TRUE(treeDumpEqual( + R"cpp( +void test() { + 0b1100; +} +)cpp", + R"txt( +*: TranslationUnit +`-SimpleDeclaration + |-void + |-SimpleDeclarator + | |-test + | `-ParametersAndQualifiers + | |-( + | `-) + `-CompoundStatement + |-{ + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-0b1100 + | `-; + `-} +)txt")); +} + +TEST_P(SyntaxTreeTest, IntegerLiteralWithDigitSeparators) { + if (!GetParam().isCXX14OrLater()) { + return; + } + EXPECT_TRUE(treeDumpEqual( + R"cpp( +void test() { + 1'2'0ull; +} +)cpp", + R"txt( +*: TranslationUnit +`-SimpleDeclaration + |-void + |-SimpleDeclarator + | |-test + | `-ParametersAndQualifiers + | |-( + | `-) + `-CompoundStatement + |-{ + |-ExpressionStatement + | |-IntegerLiteralExpression + | | `-1'2'0ull + | `-; + `-} +)txt")); +} + TEST_P(SyntaxTreeTest, PostfixUnaryOperator) { EXPECT_TRUE(treeDumpEqual( R"cpp( @@ -931,18 +1079,18 @@ void test(int a) { |-{ |-ExpressionStatement | |-BinaryOperatorExpression - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-1 | | |-- - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-2 | `-; |-ExpressionStatement | |-BinaryOperatorExpression - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-1 | | |-== - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-2 | `-; |-ExpressionStatement @@ -950,7 +1098,7 @@ void test(int a) { | | |-UnknownExpression | | | `-a | | |-= - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-1 | `-; |-ExpressionStatement @@ -958,23 +1106,23 @@ void test(int a) { | | |-UnknownExpression | | | `-a | | |-<<= - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-1 | `-; |-ExpressionStatement | |-BinaryOperatorExpression - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-1 | | |-|| - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-0 | `-; |-ExpressionStatement | |-BinaryOperatorExpression - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-1 | | |-& - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-2 | `-; |-ExpressionStatement @@ -982,7 +1130,7 @@ void test(int a) { | | |-UnknownExpression | | | `-a | | |-^= - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-3 | `-; `-} @@ -1035,10 +1183,10 @@ void test(int a) { | `-; |-ExpressionStatement | |-BinaryOperatorExpression - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-1 | | |-bitand - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-2 | `-; |-ExpressionStatement @@ -1046,7 +1194,7 @@ void test(int a) { | | |-UnknownExpression | | | `-a | | |-xor_eq - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-3 | `-; `-} @@ -1089,20 +1237,20 @@ void test(int a, int b) { | | |-UnknownExpression | | | |-( | | | |-BinaryOperatorExpression - | | | | |-UnknownExpression + | | | | |-IntegerLiteralExpression | | | | | `-1 | | | | |-+ - | | | | `-UnknownExpression + | | | | `-IntegerLiteralExpression | | | | `-2 | | | `-) | | |-* | | `-UnknownExpression | | |-( | | |-BinaryOperatorExpression - | | | |-UnknownExpression + | | | |-IntegerLiteralExpression | | | | `-4 | | | |-/ - | | | `-UnknownExpression + | | | `-IntegerLiteralExpression | | | `-2 | | `-) | `-; @@ -1115,7 +1263,7 @@ void test(int a, int b) { | | | `-UnknownExpression | | | `-b | | |-+ - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-42 | `-; |-ExpressionStatement @@ -1127,7 +1275,7 @@ void test(int a, int b) { | | |-UnknownExpression | | | `-b | | |-= - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-42 | `-; |-ExpressionStatement @@ -1140,10 +1288,10 @@ void test(int a, int b) { | | | |-UnknownExpression | | | | `-b | | | |-* - | | | `-UnknownExpression + | | | `-IntegerLiteralExpression | | | `-4 | | |-+ - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-2 | `-; |-ExpressionStatement @@ -1152,14 +1300,14 @@ void test(int a, int b) { | | | |-UnknownExpression | | | | `-a | | | |-% - | | | `-UnknownExpression + | | | `-IntegerLiteralExpression | | | `-2 | | |-+ | | `-BinaryOperatorExpression | | |-UnknownExpression | | | `-b | | |-* - | | `-UnknownExpression + | | `-IntegerLiteralExpression | | `-42 | `-; `-} @@ -1582,7 +1730,7 @@ template <class T> int fun() {} | |-SimpleDeclarator | | |-var | | |-= -| | `-UnknownExpression +| | `-IntegerLiteralExpression | | `-10 | `-; `-TemplateDeclaration @@ -1944,10 +2092,10 @@ void test() { | |-I: if | |-I: ( | |-I: BinaryOperatorExpression - | | |-I: UnknownExpression + | | |-I: IntegerLiteralExpression | | | `-I: 1 | | |-I: + - | | `-I: UnknownExpression + | | `-I: IntegerLiteralExpression | | `-I: 1 | |-I: ) | |-I: CompoundStatement @@ -1992,14 +2140,14 @@ void test() { |-CompoundStatement | |-{ | |-ExpressionStatement - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-1 | | `-; | `-} |-CompoundStatement | |-{ | |-ExpressionStatement - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-2 | | `-; | `-} @@ -2022,7 +2170,7 @@ int c[] = {1,2,3}; | | |-a | | `-ArraySubscript | | |-[ -| | |-UnknownExpression +| | |-IntegerLiteralExpression | | | `-10 | | `-] | `-; @@ -2032,17 +2180,17 @@ int c[] = {1,2,3}; | | |-b | | |-ArraySubscript | | | |-[ -| | | |-UnknownExpression +| | | |-IntegerLiteralExpression | | | | `-1 | | | `-] | | |-ArraySubscript | | | |-[ -| | | |-UnknownExpression +| | | |-IntegerLiteralExpression | | | | `-2 | | | `-] | | `-ArraySubscript | | |-[ -| | |-UnknownExpression +| | |-IntegerLiteralExpression | | | `-3 | | `-] | `-; @@ -2057,13 +2205,13 @@ int c[] = {1,2,3}; | `-UnknownExpression | `-UnknownExpression | |-{ - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-1 | |-, - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-2 | |-, - | |-UnknownExpression + | |-IntegerLiteralExpression | | `-3 | `-} `-; @@ -2093,7 +2241,7 @@ void f(int xs[static 10]); | | `-ArraySubscript | | |-[ | | |-static - | | |-UnknownExpression + | | |-IntegerLiteralExpression | | | `-10 | | `-] | `-) @@ -2579,7 +2727,7 @@ const int const *const *volatile b; | | |-= | | `-PrefixUnaryOperatorExpression | | |-- -| | `-UnknownExpression +| | `-IntegerLiteralExpression | | `-1 | `-; |-SimpleDeclaration @@ -2588,7 +2736,7 @@ const int const *const *volatile b; | |-SimpleDeclarator | | |-east | | |-= -| | `-UnknownExpression +| | `-IntegerLiteralExpression | | `-1 | `-; |-SimpleDeclaration @@ -2598,7 +2746,7 @@ const int const *const *volatile b; | |-SimpleDeclarator | | |-universal | | |-= -| | `-UnknownExpression +| | `-IntegerLiteralExpression | | `-0 | `-; `-SimpleDeclaration |