[PATCH] D86700: [SyntaxTree] Ignore leaf implicit `CXXConstructExpr`
Eduardo Caldas via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 7 05:40:26 PDT 2020
eduucaldas updated this revision to Diff 290260.
eduucaldas added a comment.
Add comments
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 default constructs.
+ 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D86700.290260.patch
Type: text/x-patch
Size: 1929 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200907/78c87cf5/attachment.bin>
More information about the cfe-commits
mailing list