diff options
| author | Piotr Padlewski <piotr.padlewski@gmail.com> | 2016-05-31 15:26:56 +0000 |
|---|---|---|
| committer | Piotr Padlewski <piotr.padlewski@gmail.com> | 2016-05-31 15:26:56 +0000 |
| commit | e93a73fb7aa49d04f1109e6c3c69530ea6d81d31 (patch) | |
| tree | 11aca431300988da1967aee59494d6e2b06d4eb1 /clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp | |
| parent | cfed2bf5881597a05a1abab446b96bb8d3adb33a (diff) | |
| download | bcm5719-llvm-e93a73fb7aa49d04f1109e6c3c69530ea6d81d31.tar.gz bcm5719-llvm-e93a73fb7aa49d04f1109e6c3c69530ea6d81d31.zip | |
[ASTMatchers] Added ignoringParenImpCasts to has matchers
has matcher changed behaviour, and now it matches "as is" and
doesn't skip implicit and paren casts
http://reviews.llvm.org/D20801
llvm-svn: 271289
Diffstat (limited to 'clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp')
| -rw-r--r-- | clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp b/clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp index 0b0be837440..7438332abff 100644 --- a/clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp @@ -26,24 +26,26 @@ void ShrinkToFitCheck::registerMatchers(MatchFinder *Finder) { memberExpr(member(valueDecl().bind("ContainerDecl"))); const auto ShrinkableAsDecl = declRefExpr(hasDeclaration(valueDecl().bind("ContainerDecl"))); - const auto CopyCtorCall = cxxConstructExpr( - hasArgument(0, anyOf(ShrinkableAsMember, ShrinkableAsDecl, - unaryOperator(has(ShrinkableAsMember)), - unaryOperator(has(ShrinkableAsDecl))))); - const auto SwapParam = expr(anyOf( - memberExpr(member(equalsBoundNode("ContainerDecl"))), - declRefExpr(hasDeclaration(equalsBoundNode("ContainerDecl"))), - unaryOperator(has(memberExpr(member(equalsBoundNode("ContainerDecl"))))), - unaryOperator( - has(declRefExpr(hasDeclaration(equalsBoundNode("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")))))))); Finder->addMatcher( - cxxMemberCallExpr(on(hasType(namedDecl( - hasAnyName("std::basic_string", "std::deque", "std::vector")))), - callee(cxxMethodDecl(hasName("swap"))), - has(memberExpr(hasDescendant(CopyCtorCall))), - hasArgument(0, SwapParam.bind("ContainerToShrink")), - unless(isInTemplateInstantiation())) + cxxMemberCallExpr( + on(hasType(namedDecl( + hasAnyName("std::basic_string", "std::deque", "std::vector")))), + callee(cxxMethodDecl(hasName("swap"))), + has(ignoringParenImpCasts(memberExpr(hasDescendant(CopyCtorCall)))), + hasArgument(0, SwapParam.bind("ContainerToShrink")), + unless(isInTemplateInstantiation())) .bind("CopyAndSwapTrick"), this); } |

