This revision was automatically updated to reflect the committed changes.
Closed by commit rG46f4439dc9bf: [SyntaxTree] Ignore implicit leaf
`CXXConstructExpr` (authored by eduucaldas).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D86700/new/
https://reviews.llvm.org/D86700
Files:
clang/lib/Tooling/Syntax/BuildTree.cpp
clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
Index: clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
===================================================================
--- clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
+++ clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
@@ -548,9 +548,6 @@
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 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s1'
+ `-'s1'
)txt",
R"txt(
SimpleDeclaration
@@ -575,8 +571,7 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s2'
+ `-'s2'
)txt"}));
}
@@ -608,8 +603,7 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s1'
+ `-'s1'
)txt",
R"txt(
SimpleDeclaration
@@ -623,8 +617,7 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s2'
+ `-'s2'
)txt"}));
}
Index: clang/lib/Tooling/Syntax/BuildTree.cpp
===================================================================
--- clang/lib/Tooling/Syntax/BuildTree.cpp
+++ clang/lib/Tooling/Syntax/BuildTree.cpp
@@ -1132,6 +1132,14 @@
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
Index: clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
===================================================================
--- clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
+++ clang/unittests/Tooling/Syntax/BuildTreeTest.cpp
@@ -548,9 +548,6 @@
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 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s1'
+ `-'s1'
)txt",
R"txt(
SimpleDeclaration
@@ -575,8 +571,7 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s2'
+ `-'s2'
)txt"}));
}
@@ -608,8 +603,7 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s1'
+ `-'s1'
)txt",
R"txt(
SimpleDeclaration
@@ -623,8 +617,7 @@
| `-'::' ListDelimiter
|-'S'
`-SimpleDeclarator Declarator
- `-UnknownExpression
- `-'s2'
+ `-'s2'
)txt"}));
}
Index: clang/lib/Tooling/Syntax/BuildTree.cpp
===================================================================
--- clang/lib/Tooling/Syntax/BuildTree.cpp
+++ clang/lib/Tooling/Syntax/BuildTree.cpp
@@ -1132,6 +1132,14 @@
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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits