Author: aaronballman Date: Mon Aug 31 10:28:57 2015 New Revision: 246447 URL: http://llvm.org/viewvc/llvm-project?rev=246447&view=rev Log: Using an early return as it is more clear; NFC.
Modified: clang-tools-extra/trunk/clang-tidy/misc/InaccurateEraseCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/InefficientAlgorithmCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/MoveConstructorInitCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/NoexceptMoveConstructorCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/StaticAssertCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/UndelegatedConstructor.cpp clang-tools-extra/trunk/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/UnusedAliasDeclsCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/UnusedRAIICheck.cpp Modified: clang-tools-extra/trunk/clang-tidy/misc/InaccurateEraseCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/InaccurateEraseCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/InaccurateEraseCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/InaccurateEraseCheck.cpp Mon Aug 31 10:28:57 2015 @@ -21,25 +21,26 @@ namespace misc { void InaccurateEraseCheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus) { - const auto CheckForEndCall = hasArgument( - 1, anyOf(constructExpr( - has(memberCallExpr(callee(methodDecl(hasName("end")))) - .bind("InaccEndCall"))), - anything())); + if (!getLangOpts().CPlusPlus) + return; - Finder->addMatcher( - memberCallExpr( - on(hasType(namedDecl(matchesName("^::std::")))), - callee(methodDecl(hasName("erase"))), argumentCountIs(1), - hasArgument(0, has(callExpr(callee(functionDecl(matchesName( - "^::std::(remove(_if)?|unique)$"))), - CheckForEndCall) - .bind("InaccAlgCall"))), - unless(isInTemplateInstantiation())) - .bind("InaccErase"), - this); - } + const auto CheckForEndCall = hasArgument( + 1, + anyOf(constructExpr(has(memberCallExpr(callee(methodDecl(hasName("end")))) + .bind("InaccEndCall"))), + anything())); + + Finder->addMatcher( + memberCallExpr( + on(hasType(namedDecl(matchesName("^::std::")))), + callee(methodDecl(hasName("erase"))), argumentCountIs(1), + hasArgument(0, has(callExpr(callee(functionDecl(matchesName( + "^::std::(remove(_if)?|unique)$"))), + CheckForEndCall) + .bind("InaccAlgCall"))), + unless(isInTemplateInstantiation())) + .bind("InaccErase"), + this); } void InaccurateEraseCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/clang-tidy/misc/InefficientAlgorithmCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/InefficientAlgorithmCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/InefficientAlgorithmCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/InefficientAlgorithmCheck.cpp Mon Aug 31 10:28:57 2015 @@ -30,33 +30,34 @@ static bool areTypesCompatible(QualType void InefficientAlgorithmCheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus) { - const std::string Algorithms = - "^::std::(find|count|equal_range|lower_bound|upper_bound)$"; - const auto ContainerMatcher = classTemplateSpecializationDecl( - matchesName("^::std::(unordered_)?(multi)?(set|map)$")); - const auto Matcher = - callExpr( - callee(functionDecl(matchesName(Algorithms))), - hasArgument( - 0, constructExpr(has(memberCallExpr( - callee(methodDecl(hasName("begin"))), - on(declRefExpr( - hasDeclaration(decl().bind("IneffContObj")), - anyOf(hasType(ContainerMatcher.bind("IneffCont")), - hasType(pointsTo(ContainerMatcher.bind( - "IneffContPtr"))))) - .bind("IneffContExpr")))))), - hasArgument(1, constructExpr(has(memberCallExpr( - callee(methodDecl(hasName("end"))), - on(declRefExpr(hasDeclaration( - equalsBoundNode("IneffContObj")))))))), - hasArgument(2, expr().bind("AlgParam")), - unless(isInTemplateInstantiation())) - .bind("IneffAlg"); + if (!getLangOpts().CPlusPlus) + return; - Finder->addMatcher(Matcher, this); - } + const std::string Algorithms = + "^::std::(find|count|equal_range|lower_bound|upper_bound)$"; + const auto ContainerMatcher = classTemplateSpecializationDecl( + matchesName("^::std::(unordered_)?(multi)?(set|map)$")); + const auto Matcher = + callExpr( + callee(functionDecl(matchesName(Algorithms))), + hasArgument( + 0, constructExpr(has(memberCallExpr( + callee(methodDecl(hasName("begin"))), + on(declRefExpr( + hasDeclaration(decl().bind("IneffContObj")), + anyOf(hasType(ContainerMatcher.bind("IneffCont")), + hasType(pointsTo( + ContainerMatcher.bind("IneffContPtr"))))) + .bind("IneffContExpr")))))), + hasArgument(1, constructExpr(has(memberCallExpr( + callee(methodDecl(hasName("end"))), + on(declRefExpr(hasDeclaration( + equalsBoundNode("IneffContObj")))))))), + hasArgument(2, expr().bind("AlgParam")), + unless(isInTemplateInstantiation())) + .bind("IneffAlg"); + + Finder->addMatcher(Matcher, this); } void InefficientAlgorithmCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/clang-tidy/misc/MoveConstructorInitCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MoveConstructorInitCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/MoveConstructorInitCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/MoveConstructorInitCheck.cpp Mon Aug 31 10:28:57 2015 @@ -19,17 +19,18 @@ namespace tidy { void MoveConstructorInitCheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++11; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus11) { - Finder->addMatcher( - constructorDecl(unless(isImplicit()), allOf( - isMoveConstructor(), - hasAnyConstructorInitializer( - ctorInitializer(withInitializer(constructExpr(hasDeclaration( - constructorDecl(isCopyConstructor()).bind("ctor") - )))).bind("init") - ) - )), this); - } + if (!getLangOpts().CPlusPlus11) + return; + + Finder->addMatcher( + constructorDecl(unless(isImplicit()), allOf( + isMoveConstructor(), + hasAnyConstructorInitializer( + ctorInitializer(withInitializer(constructExpr(hasDeclaration( + constructorDecl(isCopyConstructor()).bind("ctor") + )))).bind("init") + ) + )), this); } void MoveConstructorInitCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/clang-tidy/misc/NoexceptMoveConstructorCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/NoexceptMoveConstructorCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/NoexceptMoveConstructorCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/NoexceptMoveConstructorCheck.cpp Mon Aug 31 10:28:57 2015 @@ -19,13 +19,14 @@ namespace tidy { void NoexceptMoveConstructorCheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++11; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus11) { - Finder->addMatcher( - methodDecl(anyOf(constructorDecl(), hasOverloadedOperatorName("=")), - unless(isImplicit()), unless(isDeleted())) - .bind("decl"), - this); - } + if (!getLangOpts().CPlusPlus11) + return; + + Finder->addMatcher( + methodDecl(anyOf(constructorDecl(), hasOverloadedOperatorName("=")), + unless(isImplicit()), unless(isDeleted())) + .bind("decl"), + this); } void NoexceptMoveConstructorCheck::check( Modified: clang-tools-extra/trunk/clang-tidy/misc/StaticAssertCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/StaticAssertCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/StaticAssertCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/StaticAssertCheck.cpp Mon Aug 31 10:28:57 2015 @@ -30,44 +30,44 @@ void StaticAssertCheck::registerMatchers // FIXME: I don't see why this checker couldn't also be interesting for // _Static_assert in C11, or static_assert if <assert.h> has been included, // but it is currently only enabled for C++11. Investigate. - if (getLangOpts().CPlusPlus11) { - auto IsAlwaysFalse = expr(ignoringParenImpCasts( - expr(anyOf(boolLiteral(equals(false)), integerLiteral(equals(0)), - nullPtrLiteralExpr(), gnuNullExpr())) - .bind("isAlwaysFalse"))); - auto IsAlwaysFalseWithCast = ignoringParenImpCasts(anyOf( - IsAlwaysFalse, cStyleCastExpr(has(IsAlwaysFalse)).bind("castExpr"))); - auto AssertExprRoot = - anyOf(binaryOperator( - anyOf(hasOperatorName("&&"), hasOperatorName("==")), - hasEitherOperand( - ignoringImpCasts(stringLiteral().bind("assertMSG"))), - anyOf(binaryOperator(hasEitherOperand(IsAlwaysFalseWithCast)), - anything())) - .bind("assertExprRoot"), - IsAlwaysFalse); - auto NonConstexprFunctionCall = - callExpr(hasDeclaration(functionDecl(unless(isConstexpr())))); - auto AssertCondition = - expr(anyOf(expr(ignoringParenCasts( - anyOf(AssertExprRoot, - unaryOperator(hasUnaryOperand( - ignoringParenCasts(AssertExprRoot)))))), - anything()), - unless(findAll(NonConstexprFunctionCall))) - .bind("condition"); - auto Condition = - anyOf(ignoringParenImpCasts(callExpr( - hasDeclaration(functionDecl(hasName("__builtin_expect"))), - hasArgument(0, AssertCondition))), - AssertCondition); + if (!getLangOpts().CPlusPlus11) + return; - Finder->addMatcher(stmt(anyOf(conditionalOperator(hasCondition(Condition)), - ifStmt(hasCondition(Condition))), - unless(isInTemplateInstantiation())) - .bind("condStmt"), - this); - } + auto IsAlwaysFalse = expr(ignoringParenImpCasts( + expr(anyOf(boolLiteral(equals(false)), integerLiteral(equals(0)), + nullPtrLiteralExpr(), gnuNullExpr())) + .bind("isAlwaysFalse"))); + auto IsAlwaysFalseWithCast = ignoringParenImpCasts(anyOf( + IsAlwaysFalse, cStyleCastExpr(has(IsAlwaysFalse)).bind("castExpr"))); + auto AssertExprRoot = anyOf( + binaryOperator( + anyOf(hasOperatorName("&&"), hasOperatorName("==")), + hasEitherOperand(ignoringImpCasts(stringLiteral().bind("assertMSG"))), + anyOf(binaryOperator(hasEitherOperand(IsAlwaysFalseWithCast)), + anything())) + .bind("assertExprRoot"), + IsAlwaysFalse); + auto NonConstexprFunctionCall = + callExpr(hasDeclaration(functionDecl(unless(isConstexpr())))); + auto AssertCondition = + expr( + anyOf(expr(ignoringParenCasts(anyOf( + AssertExprRoot, unaryOperator(hasUnaryOperand( + ignoringParenCasts(AssertExprRoot)))))), + anything()), + unless(findAll(NonConstexprFunctionCall))) + .bind("condition"); + auto Condition = + anyOf(ignoringParenImpCasts(callExpr( + hasDeclaration(functionDecl(hasName("__builtin_expect"))), + hasArgument(0, AssertCondition))), + AssertCondition); + + Finder->addMatcher(stmt(anyOf(conditionalOperator(hasCondition(Condition)), + ifStmt(hasCondition(Condition))), + unless(isInTemplateInstantiation())) + .bind("condStmt"), + this); } void StaticAssertCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/clang-tidy/misc/UndelegatedConstructor.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UndelegatedConstructor.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UndelegatedConstructor.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UndelegatedConstructor.cpp Mon Aug 31 10:28:57 2015 @@ -58,17 +58,18 @@ void UndelegatedConstructorCheck::regist // // Only register the matchers for C++11; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus11) { - Finder->addMatcher( - compoundStmt( - hasParent(constructorDecl(ofClass(recordDecl().bind("parent")))), - forEach(ignoringTemporaryExpr( - constructExpr(hasDeclaration(constructorDecl(ofClass( - recordDecl(baseOfBoundNode("parent")))))) - .bind("construct"))), - unless(isInTemplateInstantiation())), - this); - } + if (!getLangOpts().CPlusPlus11) + return; + + Finder->addMatcher( + compoundStmt( + hasParent(constructorDecl(ofClass(recordDecl().bind("parent")))), + forEach(ignoringTemporaryExpr( + constructExpr(hasDeclaration(constructorDecl(ofClass( + recordDecl(baseOfBoundNode("parent")))))) + .bind("construct"))), + unless(isInTemplateInstantiation())), + this); } void UndelegatedConstructorCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp Mon Aug 31 10:28:57 2015 @@ -20,23 +20,24 @@ namespace misc { void UniqueptrResetReleaseCheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++11; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus11) { - Finder->addMatcher( - memberCallExpr( - on(expr().bind("left")), callee(memberExpr().bind("reset_member")), - callee(methodDecl(hasName("reset"), - ofClass(recordDecl(hasName("::std::unique_ptr"), - decl().bind("left_class"))))), - has(memberCallExpr( - on(expr().bind("right")), - callee(memberExpr().bind("release_member")), - callee(methodDecl( - hasName("release"), - ofClass(recordDecl(hasName("::std::unique_ptr"), - decl().bind("right_class")))))))) - .bind("reset_call"), - this); - } + if (!getLangOpts().CPlusPlus11) + return; + + Finder->addMatcher( + memberCallExpr( + on(expr().bind("left")), callee(memberExpr().bind("reset_member")), + callee(methodDecl(hasName("reset"), + ofClass(recordDecl(hasName("::std::unique_ptr"), + decl().bind("left_class"))))), + has(memberCallExpr( + on(expr().bind("right")), + callee(memberExpr().bind("release_member")), + callee(methodDecl( + hasName("release"), + ofClass(recordDecl(hasName("::std::unique_ptr"), + decl().bind("right_class")))))))) + .bind("reset_call"), + this); } namespace { Modified: clang-tools-extra/trunk/clang-tidy/misc/UnusedAliasDeclsCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UnusedAliasDeclsCheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UnusedAliasDeclsCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UnusedAliasDeclsCheck.cpp Mon Aug 31 10:28:57 2015 @@ -20,13 +20,14 @@ namespace tidy { void UnusedAliasDeclsCheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++11; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus11) { - // We cannot do anything about headers (yet), as the alias declarations - // used in one header could be used by some other translation unit. - Finder->addMatcher( - namespaceAliasDecl(isExpansionInMainFile()).bind("alias"), this); - Finder->addMatcher(nestedNameSpecifier().bind("nns"), this); - } + if (!getLangOpts().CPlusPlus11) + return; + + // We cannot do anything about headers (yet), as the alias declarations + // used in one header could be used by some other translation unit. + Finder->addMatcher(namespaceAliasDecl(isExpansionInMainFile()).bind("alias"), + this); + Finder->addMatcher(nestedNameSpecifier().bind("nns"), this); } void UnusedAliasDeclsCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/clang-tidy/misc/UnusedRAIICheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UnusedRAIICheck.cpp?rev=246447&r1=246446&r2=246447&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UnusedRAIICheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UnusedRAIICheck.cpp Mon Aug 31 10:28:57 2015 @@ -27,20 +27,21 @@ namespace misc { void UnusedRAIICheck::registerMatchers(MatchFinder *Finder) { // Only register the matchers for C++; the functionality currently does not // provide any benefit to other languages, despite being benign. - if (getLangOpts().CPlusPlus) { - // Look for temporaries that are constructed in-place and immediately - // destroyed. Look for temporaries created by a functional cast but not for - // those returned from a call. - auto BindTemp = bindTemporaryExpr(unless(has(callExpr()))).bind("temp"); - Finder->addMatcher( - exprWithCleanups( - unless(isInTemplateInstantiation()), - hasParent(compoundStmt().bind("compound")), - hasType(recordDecl(hasNonTrivialDestructor())), - anyOf(has(BindTemp), has(functionalCastExpr(has(BindTemp))))) - .bind("expr"), - this); - } + if (!getLangOpts().CPlusPlus) + return; + + // Look for temporaries that are constructed in-place and immediately + // destroyed. Look for temporaries created by a functional cast but not for + // those returned from a call. + auto BindTemp = bindTemporaryExpr(unless(has(callExpr()))).bind("temp"); + Finder->addMatcher( + exprWithCleanups( + unless(isInTemplateInstantiation()), + hasParent(compoundStmt().bind("compound")), + hasType(recordDecl(hasNonTrivialDestructor())), + anyOf(has(BindTemp), has(functionalCastExpr(has(BindTemp))))) + .bind("expr"), + this); } void UnusedRAIICheck::check(const MatchFinder::MatchResult &Result) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits