This revision was automatically updated to reflect the committed changes. Closed by commit rG296c6e85c19b: [clang-tidy] Simplify shrink to fit check (authored by stephenkelly).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D97144/new/ https://reviews.llvm.org/D97144 Files: clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h Index: clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h =================================================================== --- clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h +++ clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h @@ -30,6 +30,9 @@ } void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + llvm::Optional<TraversalKind> getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } }; } // namespace modernize Index: clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp +++ clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp @@ -21,31 +21,24 @@ void ShrinkToFitCheck::registerMatchers(MatchFinder *Finder) { // Swap as a function need not to be considered, because rvalue can not // be bound to a non-const reference. - const auto ShrinkableAsMember = - memberExpr(member(valueDecl().bind("ContainerDecl"))); - const auto ShrinkableAsDecl = - declRefExpr(hasDeclaration(valueDecl().bind("ContainerDecl"))); - const auto CopyCtorCall = cxxConstructExpr(hasArgument( - 0, anyOf(ShrinkableAsMember, ShrinkableAsDecl, - unaryOperator(has(ignoringParenImpCasts(ShrinkableAsMember))), - unaryOperator(has(ignoringParenImpCasts(ShrinkableAsDecl)))))); - const auto SwapParam = - expr(anyOf(memberExpr(member(equalsBoundNode("ContainerDecl"))), - declRefExpr(hasDeclaration(equalsBoundNode("ContainerDecl"))), - unaryOperator(has(ignoringParenImpCasts( - memberExpr(member(equalsBoundNode("ContainerDecl")))))), - unaryOperator(has(ignoringParenImpCasts(declRefExpr( - hasDeclaration(equalsBoundNode("ContainerDecl")))))))); + const auto ShrinkableExpr = mapAnyOf(memberExpr, declRefExpr); + const auto Shrinkable = + ShrinkableExpr.with(hasDeclaration(valueDecl().bind("ContainerDecl"))); + const auto BoundShrinkable = ShrinkableExpr.with( + hasDeclaration(valueDecl(equalsBoundNode("ContainerDecl")))); Finder->addMatcher( cxxMemberCallExpr( - on(hasType(hasCanonicalType(hasDeclaration(namedDecl( - hasAnyName("std::basic_string", "std::deque", "std::vector")))))), callee(cxxMethodDecl(hasName("swap"))), - has(ignoringParenImpCasts( - memberExpr(traverse(TK_AsIs, hasDescendant(CopyCtorCall))))), - hasArgument(0, SwapParam.bind("ContainerToShrink")), - unless(isInTemplateInstantiation())) + hasArgument( + 0, anyOf(Shrinkable, unaryOperator(hasUnaryOperand(Shrinkable)))), + on(cxxConstructExpr(hasArgument( + 0, + expr(anyOf(BoundShrinkable, + unaryOperator(hasUnaryOperand(BoundShrinkable))), + hasType(hasCanonicalType(hasDeclaration(namedDecl(hasAnyName( + "std::basic_string", "std::deque", "std::vector")))))) + .bind("ContainerToShrink"))))) .bind("CopyAndSwapTrick"), this); }
Index: clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h =================================================================== --- clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h +++ clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.h @@ -30,6 +30,9 @@ } void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + llvm::Optional<TraversalKind> getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } }; } // namespace modernize Index: clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp +++ clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp @@ -21,31 +21,24 @@ void ShrinkToFitCheck::registerMatchers(MatchFinder *Finder) { // Swap as a function need not to be considered, because rvalue can not // be bound to a non-const reference. - const auto ShrinkableAsMember = - memberExpr(member(valueDecl().bind("ContainerDecl"))); - const auto ShrinkableAsDecl = - declRefExpr(hasDeclaration(valueDecl().bind("ContainerDecl"))); - const auto CopyCtorCall = cxxConstructExpr(hasArgument( - 0, anyOf(ShrinkableAsMember, ShrinkableAsDecl, - unaryOperator(has(ignoringParenImpCasts(ShrinkableAsMember))), - unaryOperator(has(ignoringParenImpCasts(ShrinkableAsDecl)))))); - const auto SwapParam = - expr(anyOf(memberExpr(member(equalsBoundNode("ContainerDecl"))), - declRefExpr(hasDeclaration(equalsBoundNode("ContainerDecl"))), - unaryOperator(has(ignoringParenImpCasts( - memberExpr(member(equalsBoundNode("ContainerDecl")))))), - unaryOperator(has(ignoringParenImpCasts(declRefExpr( - hasDeclaration(equalsBoundNode("ContainerDecl")))))))); + const auto ShrinkableExpr = mapAnyOf(memberExpr, declRefExpr); + const auto Shrinkable = + ShrinkableExpr.with(hasDeclaration(valueDecl().bind("ContainerDecl"))); + const auto BoundShrinkable = ShrinkableExpr.with( + hasDeclaration(valueDecl(equalsBoundNode("ContainerDecl")))); Finder->addMatcher( cxxMemberCallExpr( - on(hasType(hasCanonicalType(hasDeclaration(namedDecl( - hasAnyName("std::basic_string", "std::deque", "std::vector")))))), callee(cxxMethodDecl(hasName("swap"))), - has(ignoringParenImpCasts( - memberExpr(traverse(TK_AsIs, hasDescendant(CopyCtorCall))))), - hasArgument(0, SwapParam.bind("ContainerToShrink")), - unless(isInTemplateInstantiation())) + hasArgument( + 0, anyOf(Shrinkable, unaryOperator(hasUnaryOperand(Shrinkable)))), + on(cxxConstructExpr(hasArgument( + 0, + expr(anyOf(BoundShrinkable, + unaryOperator(hasUnaryOperand(BoundShrinkable))), + hasType(hasCanonicalType(hasDeclaration(namedDecl(hasAnyName( + "std::basic_string", "std::deque", "std::vector")))))) + .bind("ContainerToShrink"))))) .bind("CopyAndSwapTrick"), this); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits