Author: Stephen Kelly Date: 2020-05-24T22:33:10+01:00 New Revision: 2be92b7f7e41037e051096df8a9c4de35502c036
URL: https://github.com/llvm/llvm-project/commit/2be92b7f7e41037e051096df8a9c4de35502c036 DIFF: https://github.com/llvm/llvm-project/commit/2be92b7f7e41037e051096df8a9c4de35502c036.diff LOG: Fix ignore-traversal to call correct method As is done by ignoreParenImpCasts(). We were not previously calling the correct internal method. Adjust tests to account for this. Added: Modified: clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp clang/lib/AST/Expr.cpp clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp b/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp index 70d2a10ae2d8..aab45faa6cb3 100644 --- a/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp @@ -196,12 +196,12 @@ void UppercaseLiteralSuffixCheck::registerMatchers(MatchFinder *Finder) { // Sadly, we can't check whether the literal has suffix or not. // E.g. i32 suffix still results in 'BuiltinType::Kind::Int'. // And such an info is not stored in the *Literal itself. - Finder->addMatcher( + Finder->addMatcher(traverse(TK_AsIs, stmt(eachOf(integerLiteral().bind(IntegerLiteralCheck::Name), floatLiteral().bind(FloatingLiteralCheck::Name)), unless(anyOf(hasParent(userDefinedLiteral()), hasAncestor(isImplicit()), - hasAncestor(substNonTypeTemplateParmExpr())))), + hasAncestor(substNonTypeTemplateParmExpr()))))), this); } diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 0184140ab07e..b9b7ca95b218 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -2909,7 +2909,7 @@ Expr *Expr::IgnoreUnlessSpelledInSource() { Expr *LastE = nullptr; while (E != LastE) { LastE = E; - E = IgnoreExprNodes(E, IgnoreImplicitSingleStep, IgnoreImpCastsSingleStep, + E = IgnoreExprNodes(E, IgnoreImplicitSingleStep, IgnoreImpCastsExtraSingleStep, IgnoreParensOnlySingleStep); auto SR = E->getSourceRange(); diff --git a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp index d38086616460..82a28d00cebf 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp @@ -303,11 +303,13 @@ TEST(Matcher, SubstNonTypeTemplateParm) { EXPECT_FALSE(matches("template<int N>\n" "struct A { static const int n = 0; };\n" "struct B : public A<42> {};", - substNonTypeTemplateParmExpr())); + traverse(TK_AsIs, + substNonTypeTemplateParmExpr()))); EXPECT_TRUE(matches("template<int N>\n" "struct A { static const int n = N; };\n" "struct B : public A<42> {};", - substNonTypeTemplateParmExpr())); + traverse(TK_AsIs, + substNonTypeTemplateParmExpr()))); } TEST(Matcher, NonTypeTemplateParmDecl) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits