[clang] 23f17ab - Fix use of directly-nested traverse() matchers
Stephen Kelly via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 9 11:28:40 PST 2020
Author: Stephen Kelly
Date: 2020-11-09T19:23:17Z
New Revision: 23f17ab5ff64c993c6242551de44af58c5b43b23
URL: https://github.com/llvm/llvm-project/commit/23f17ab5ff64c993c6242551de44af58c5b43b23
DIFF: https://github.com/llvm/llvm-project/commit/23f17ab5ff64c993c6242551de44af58c5b43b23.diff
LOG: Fix use of directly-nested traverse() matchers
Added:
Modified:
clang/include/clang/ASTMatchers/ASTMatchersInternal.h
clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/ASTMatchers/ASTMatchersInternal.h b/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
index b6934c6349b71..f5563977cb7e1 100644
--- a/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
+++ b/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
@@ -1206,6 +1206,8 @@ template <typename T> class TraversalMatcher : public MatcherInterface<T> {
}
llvm::Optional<clang::TraversalKind> TraversalKind() const override {
+ if (auto NestedKind = this->InnerMatcher.getTraversalKind())
+ return NestedKind;
return Traversal;
}
};
diff --git a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
index c7ce63c5784aa..0d06bdce7f343 100644
--- a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
+++ b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
@@ -2372,6 +2372,11 @@ void foo()
callExpr(has(callExpr(traverse(
TK_AsIs, callExpr(has(implicitCastExpr(
has(floatLiteral())))))))))));
+
+ EXPECT_TRUE(matches(
+ Code,
+ traverse(TK_IgnoreImplicitCastsAndParentheses,
+ traverse(TK_AsIs, implicitCastExpr(has(floatLiteral()))))));
}
TEST(Traversal, traverseMatcherThroughImplicit) {
More information about the cfe-commits
mailing list