diff options
6 files changed, 12 insertions, 43 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/BoolPointerImplicitConversionCheck.cpp b/clang-tools-extra/clang-tidy/misc/BoolPointerImplicitConversionCheck.cpp index da295be1a16..cd86fea3dff 100644 --- a/clang-tools-extra/clang-tidy/misc/BoolPointerImplicitConversionCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/BoolPointerImplicitConversionCheck.cpp @@ -15,14 +15,6 @@ namespace clang { namespace tidy { namespace misc { -namespace { - -AST_MATCHER(CastExpr, isPointerToBoolean) { - return Node.getCastKind() == CK_PointerToBoolean; -} - -} // namespace - void BoolPointerImplicitConversionCheck::registerMatchers(MatchFinder *Finder) { // Look for ifs that have an implicit bool* to bool conversion in the // condition. Filter negations. @@ -32,7 +24,7 @@ void BoolPointerImplicitConversionCheck::registerMatchers(MatchFinder *Finder) { hasSourceExpression(expr( hasType(pointerType(pointee(booleanType()))), ignoringParenImpCasts(declRefExpr().bind("expr")))), - isPointerToBoolean())))), + hasCastKind(CK_PointerToBoolean))))), unless(isInTemplateInstantiation())).bind("if"), this); } diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp index 03fb4a8bd3e..059c0c5073f 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp @@ -24,20 +24,6 @@ namespace { const char CastSequence[] = "sequence"; -/// \brief Matches cast expressions that have a cast kind of CK_NullToPointer -/// or CK_NullToMemberPointer. -/// -/// Given -/// \code -/// int *p = 0; -/// \endcode -/// implicitCastExpr(isNullToPointer()) matches the implicit cast clang adds -/// around \c 0. -AST_MATCHER(CastExpr, isNullToPointer) { - return Node.getCastKind() == CK_NullToPointer || - Node.getCastKind() == CK_NullToMemberPointer; -} - AST_MATCHER(Type, sugaredNullptrType) { const Type *DesugaredType = Node.getUnqualifiedDesugaredType(); if (const BuiltinType *BT = dyn_cast<BuiltinType>(DesugaredType)) @@ -52,7 +38,8 @@ AST_MATCHER(Type, sugaredNullptrType) { /// can be replaced instead of just the inner-most implicit cast. StatementMatcher makeCastSequenceMatcher() { StatementMatcher ImplicitCastToNull = implicitCastExpr( - isNullToPointer(), + anyOf(hasCastKind(CK_NullToPointer), + hasCastKind(CK_NullToMemberPointer)), unless(hasSourceExpression(hasType(sugaredNullptrType())))); return castExpr(anyOf(ImplicitCastToNull, diff --git a/clang-tools-extra/clang-tidy/performance/FasterStringFindCheck.cpp b/clang-tools-extra/clang-tidy/performance/FasterStringFindCheck.cpp index 893458f49cd..ab2dff48a9f 100644 --- a/clang-tools-extra/clang-tidy/performance/FasterStringFindCheck.cpp +++ b/clang-tools-extra/clang-tidy/performance/FasterStringFindCheck.cpp @@ -38,8 +38,6 @@ llvm::Optional<std::string> MakeCharacterLiteral(const StringLiteral *Literal) { return Result; } -AST_MATCHER(StringLiteral, lengthIsOne) { return Node.getLength() == 1; } - AST_MATCHER_FUNCTION(ast_matchers::internal::Matcher<Expr>, hasSubstitutedType) { return hasType(qualType(anyOf(substTemplateTypeParmType(), @@ -65,7 +63,7 @@ void FasterStringFindCheck::registerMatchers(MatchFinder *Finder) { return; const auto SingleChar = - expr(ignoringParenCasts(stringLiteral(lengthIsOne()).bind("literal"))); + expr(ignoringParenCasts(stringLiteral(hasSize(1)).bind("literal"))); const auto StringFindFunctions = anyOf(hasName("find"), hasName("rfind"), hasName("find_first_of"), diff --git a/clang-tools-extra/clang-tidy/readability/ImplicitBoolCastCheck.cpp b/clang-tools-extra/clang-tidy/readability/ImplicitBoolCastCheck.cpp index f9c7b01d857..6f80ccfaf03 100644 --- a/clang-tools-extra/clang-tidy/readability/ImplicitBoolCastCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/ImplicitBoolCastCheck.cpp @@ -20,10 +20,6 @@ namespace readability { namespace { -AST_MATCHER_P(CastExpr, hasCastKind, CastKind, Kind) { - return Node.getCastKind() == Kind; -} - AST_MATCHER(Stmt, isMacroExpansion) { SourceManager &SM = Finder->getASTContext().getSourceManager(); SourceLocation Loc = Node.getLocStart(); diff --git a/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp index 2997e5d2555..17ae4ef3d3a 100644 --- a/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp @@ -8,25 +8,16 @@ //===----------------------------------------------------------------------===// #include "RedundantStringInitCheck.h" +#include "../utils/Matchers.h" #include "clang/ASTMatchers/ASTMatchers.h" using namespace clang::ast_matchers; +using namespace clang::tidy::matchers; namespace clang { namespace tidy { namespace readability { -namespace { - -AST_MATCHER(StringLiteral, lengthIsZero) { return Node.getLength() == 0; } - -AST_MATCHER_P(Expr, ignoringImplicit, - ast_matchers::internal::Matcher<Expr>, InnerMatcher) { - return InnerMatcher.matches(*Node.IgnoreImplicit(), Finder, Builder); -} - -} // namespace - void RedundantStringInitCheck::registerMatchers(MatchFinder *Finder) { if (!getLangOpts().CPlusPlus) return; @@ -45,7 +36,7 @@ void RedundantStringInitCheck::registerMatchers(MatchFinder *Finder) { const auto EmptyStringCtorExpr = cxxConstructExpr(StringConstructorExpr, hasArgument(0, ignoringParenImpCasts( - stringLiteral(lengthIsZero())))); + stringLiteral(hasSize(0))))); const auto EmptyStringCtorExprWithTemporaries = expr(ignoringImplicit( diff --git a/clang-tools-extra/clang-tidy/utils/Matchers.h b/clang-tools-extra/clang-tidy/utils/Matchers.h index 70a68d7fa98..1f3f6dfd57f 100644 --- a/clang-tools-extra/clang-tidy/utils/Matchers.h +++ b/clang-tools-extra/clang-tidy/utils/Matchers.h @@ -17,6 +17,11 @@ namespace clang { namespace tidy { namespace matchers { +AST_MATCHER_P(Expr, ignoringImplicit, + ast_matchers::internal::Matcher<Expr>, InnerMatcher) { + return InnerMatcher.matches(*Node.IgnoreImplicit(), Finder, Builder); +} + AST_MATCHER(BinaryOperator, isRelationalOperator) { return Node.isRelationalOp(); } |

