diff options
author | Eduardo Caldas <ecaldas@google.com> | 2020-05-26 12:19:07 +0200 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2020-05-26 12:25:58 +0200 |
commit | 3785eb83af4161bd52ed993ef3a2184c998071e6 (patch) | |
tree | d1cfd698e6a167fcf5a44e0a42b7d74a7c4b3641 /clang/unittests/Tooling/Syntax/TreeTest.cpp | |
parent | 5229dd1366ab1423d66d3d16dddff6fbaee049d8 (diff) | |
download | llvm-3785eb83af4161bd52ed993ef3a2184c998071e6.zip llvm-3785eb83af4161bd52ed993ef3a2184c998071e6.tar.gz llvm-3785eb83af4161bd52ed993ef3a2184c998071e6.tar.bz2 |
Add support for binary operators in Syntax Trees
Reviewers: gribozavr2
Reviewed By: gribozavr2
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80540
Diffstat (limited to 'clang/unittests/Tooling/Syntax/TreeTest.cpp')
-rw-r--r-- | clang/unittests/Tooling/Syntax/TreeTest.cpp | 269 |
1 files changed, 255 insertions, 14 deletions
diff --git a/clang/unittests/Tooling/Syntax/TreeTest.cpp b/clang/unittests/Tooling/Syntax/TreeTest.cpp index d11a365..634f99f 100644 --- a/clang/unittests/Tooling/Syntax/TreeTest.cpp +++ b/clang/unittests/Tooling/Syntax/TreeTest.cpp @@ -564,7 +564,8 @@ void test() { |-{ |-ExpressionStatement | |-UnknownExpression - | | |-test + | | |-UnknownExpression + | | | `-test | | |-( | | `-) | `-; @@ -576,14 +577,16 @@ void test() { | |-) | |-ExpressionStatement | | |-UnknownExpression - | | | |-test + | | | |-UnknownExpression + | | | | `-test | | | |-( | | | `-) | | `-; | |-else | `-ExpressionStatement | |-UnknownExpression - | | |-test + | | |-UnknownExpression + | | | `-test | | |-( | | `-) | `-; @@ -591,6 +594,237 @@ void test() { )txt"); } +TEST_F(SyntaxTreeTest, BinaryOperator) { + expectTreeDumpEqual( + R"cpp( +void test(int a) { + 1 - 2; + 1 == 2; + a = 1; + a <<= 1; + + true || false; + true or false; + + 1 & 2; + 1 bitand 2; + + a ^= 3; + a xor_eq 3; +} + )cpp", + R"txt( +*: TranslationUnit +`-SimpleDeclaration + |-void + |-SimpleDeclarator + | |-test + | `-ParametersAndQualifiers + | |-( + | |-SimpleDeclaration + | | |-int + | | `-SimpleDeclarator + | | `-a + | `-) + `-CompoundStatement + |-{ + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-1 + | | |-- + | | `-UnknownExpression + | | `-2 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-1 + | | |-== + | | `-UnknownExpression + | | `-2 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-a + | | |-= + | | `-UnknownExpression + | | `-1 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-a + | | |-<<= + | | `-UnknownExpression + | | `-1 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-true + | | |-|| + | | `-UnknownExpression + | | `-false + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-true + | | |-or + | | `-UnknownExpression + | | `-false + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-1 + | | |-& + | | `-UnknownExpression + | | `-2 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-1 + | | |-bitand + | | `-UnknownExpression + | | `-2 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-a + | | |-^= + | | `-UnknownExpression + | | `-3 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-a + | | |-xor_eq + | | `-UnknownExpression + | | `-3 + | `-; + `-} +)txt"); +} + +TEST_F(SyntaxTreeTest, NestedBinaryOperator) { + expectTreeDumpEqual( + R"cpp( +void test(int a, int b) { + (1 + 2) * (4 / 2); + a + b + 42; + a = b = 42; + a + b * 4 + 2; + a % 2 + b * 42; +} + )cpp", + R"txt( +*: TranslationUnit +`-SimpleDeclaration + |-void + |-SimpleDeclarator + | |-test + | `-ParametersAndQualifiers + | |-( + | |-SimpleDeclaration + | | |-int + | | `-SimpleDeclarator + | | `-a + | |-, + | |-SimpleDeclaration + | | |-int + | | `-SimpleDeclarator + | | `-b + | `-) + `-CompoundStatement + |-{ + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | |-( + | | | |-BinaryOperatorExpression + | | | | |-UnknownExpression + | | | | | `-1 + | | | | |-+ + | | | | `-UnknownExpression + | | | | `-2 + | | | `-) + | | |-* + | | `-UnknownExpression + | | |-( + | | |-BinaryOperatorExpression + | | | |-UnknownExpression + | | | | `-4 + | | | |-/ + | | | `-UnknownExpression + | | | `-2 + | | `-) + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-BinaryOperatorExpression + | | | |-UnknownExpression + | | | | `-a + | | | |-+ + | | | `-UnknownExpression + | | | `-b + | | |-+ + | | `-UnknownExpression + | | `-42 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-a + | | |-= + | | `-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-b + | | |-= + | | `-UnknownExpression + | | `-42 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-BinaryOperatorExpression + | | | |-UnknownExpression + | | | | `-a + | | | |-+ + | | | `-BinaryOperatorExpression + | | | |-UnknownExpression + | | | | `-b + | | | |-* + | | | `-UnknownExpression + | | | `-4 + | | |-+ + | | `-UnknownExpression + | | `-2 + | `-; + |-ExpressionStatement + | |-BinaryOperatorExpression + | | |-BinaryOperatorExpression + | | | |-UnknownExpression + | | | | `-a + | | | |-% + | | | `-UnknownExpression + | | | `-2 + | | |-+ + | | `-BinaryOperatorExpression + | | |-UnknownExpression + | | | `-b + | | |-* + | | `-UnknownExpression + | | `-42 + | `-; + `-} +)txt"); +} + TEST_F(SyntaxTreeTest, MultipleDeclaratorsGrouping) { expectTreeDumpEqual( R"cpp( @@ -1201,10 +1435,12 @@ void test() { |-IfStatement | |-I: if | |-I: ( - | |-I: UnknownExpression - | | |-I: 1 + | |-I: BinaryOperatorExpression + | | |-I: UnknownExpression + | | | `-I: 1 | | |-I: + - | | `-I: 1 + | | `-I: UnknownExpression + | | `-I: 1 | |-I: ) | |-I: CompoundStatement | | |-I: { @@ -1312,13 +1548,17 @@ void f(int xs[static 10]); | | | `-] | | |-= | | `-UnknownExpression -| | |-{ -| | |-1 -| | |-, -| | |-2 -| | |-, -| | |-3 -| | `-} +| | `-UnknownExpression +| | |-{ +| | |-UnknownExpression +| | | `-1 +| | |-, +| | |-UnknownExpression +| | | `-2 +| | |-, +| | |-UnknownExpression +| | | `-3 +| | `-} | `-; `-SimpleDeclaration |-void @@ -1628,7 +1868,8 @@ const int const *const *volatile b; | | |-= | | `-UnknownExpression | | |-- -| | `-1 +| | `-UnknownExpression +| | `-1 | `-; |-SimpleDeclaration | |-int |