[clang] 46f4439 - [SyntaxTree] Ignore implicit leaf `CXXConstructExpr`
Eduardo Caldas via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 8 02:44:36 PDT 2020
Author: Eduardo Caldas
Date: 2020-09-08T09:44:23Z
New Revision: 46f4439dc9bf9b8cfee0001b6752c3d074c83b00
URL: https://github.com/llvm/llvm-project/commit/46f4439dc9bf9b8cfee0001b6752c3d074c83b00
DIFF: https://github.com/llvm/llvm-project/commit/46f4439dc9bf9b8cfee0001b6752c3d074c83b00.diff
LOG: [SyntaxTree] Ignore implicit leaf `CXXConstructExpr`
Differential Revision: https://reviews.llvm.org/D86700
Added:
Modified:
clang/lib/Tooling/Syntax/BuildTree.cpp
clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
Removed:
################################################################################
diff --git a/clang/lib/Tooling/Syntax/BuildTree.cpp b/clang/lib/Tooling/Syntax/BuildTree.cpp
index e5389ae4eff4..72083eeefa31 100644
--- a/clang/lib/Tooling/Syntax/BuildTree.cpp
+++ b/clang/lib/Tooling/Syntax/BuildTree.cpp
@@ -1132,6 +1132,14 @@ class BuildTreeVisitor : public RecursiveASTVisitor<BuildTreeVisitor> {
return true;
}
+ bool WalkUpFromCXXConstructExpr(CXXConstructExpr *S) {
+ // Ignore the implicit calls to default constructors.
+ if ((S->getNumArgs() == 0 || isa<CXXDefaultArgExpr>(S->getArg(0))) &&
+ S->getParenOrBraceRange().isInvalid())
+ return true;
+ return RecursiveASTVisitor::WalkUpFromCXXConstructExpr(S);
+ }
+
bool TraverseCXXOperatorCallExpr(CXXOperatorCallExpr *S) {
// To construct a syntax tree of the same shape for calls to built-in and
// user-defined operators, ignore the `DeclRefExpr` that refers to the
diff --git a/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp b/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
index fe89e0d7d1a2..00e18057d7be 100644
--- a/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
+++ b/clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
@@ -548,9 +548,6 @@ namespace n {
struct S { };
}
void test() {
- // FIXME: Remove the `UnknownExpression` wrapping `s1` and `s2`. This
- // `UnknownExpression` comes from a leaf `CXXConstructExpr` in the
- // ClangAST. We need to ignore leaf implicit nodes.
[[::n::S s1]];
[[n::S s2]];
}
@@ -564,8 +561,7 @@ SimpleDeclaration
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s1'
+ `-'s1'
)txt",
R"txt(
SimpleDeclaration
@@ -575,8 +571,7 @@ SimpleDeclaration
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s2'
+ `-'s2'
)txt"}));
}
@@ -608,8 +603,7 @@ SimpleDeclaration
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s1'
+ `-'s1'
)txt",
R"txt(
SimpleDeclaration
@@ -623,8 +617,7 @@ SimpleDeclaration
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s2'
+ `-'s2'
)txt"}));
}
More information about the cfe-commits
mailing list