summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp
diff options
context:
space:
mode:
authorPiotr Padlewski <piotr.padlewski@gmail.com>2016-05-31 15:26:56 +0000
committerPiotr Padlewski <piotr.padlewski@gmail.com>2016-05-31 15:26:56 +0000
commite93a73fb7aa49d04f1109e6c3c69530ea6d81d31 (patch)
tree11aca431300988da1967aee59494d6e2b06d4eb1 /clang-tools-extra/clang-tidy/modernize/ShrinkToFitCheck.cpp
parentcfed2bf5881597a05a1abab446b96bb8d3adb33a (diff)
downloadbcm5719-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.cpp34
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);
}
OpenPOWER on IntegriCloud