Author: aaronballman Date: Tue Mar 21 20:08:54 2017 New Revision: 298470 URL: http://llvm.org/viewvc/llvm-project?rev=298470&view=rev Log: Reverting r298421 due to using a header that's unavailable to all systems and some other post-commit review feedback.
Modified: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.cpp clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-bounds-array-to-pointer-decay.cpp Modified: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.cpp?rev=298470&r1=298469&r2=298470&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.cpp Tue Mar 21 20:08:54 2017 @@ -47,25 +47,6 @@ AST_MATCHER_P(Expr, hasParentIgnoringImp return InnerMatcher.matches(*E, Finder, Builder); } -AST_MATCHER(ImplicitCastExpr, isArrayToPointerDecay) { - return Node.getCastKind() == CK_ArrayToPointerDecay; -} - -AST_MATCHER(ImplicitCastExpr, sysSymbolDecayInSysHeader) { - auto &SM = Finder->getASTContext().getSourceManager(); - if (SM.isInSystemMacro(Node.getLocStart())) { - if (isa<PredefinedExpr>(Node.getSubExpr())) - return true; - - if (const auto *SymbolDeclRef = dyn_cast<DeclRefExpr>(Node.getSubExpr())) { - const ValueDecl *SymbolDecl = SymbolDeclRef->getDecl(); - if (SymbolDecl && SM.isInSystemHeader(SymbolDecl->getLocation())) - return true; - } - } - return false; -} - void ProBoundsArrayToPointerDecayCheck::registerMatchers(MatchFinder *Finder) { if (!getLangOpts().CPlusPlus) return; @@ -75,12 +56,10 @@ void ProBoundsArrayToPointerDecayCheck:: // 2) inside a range-for over an array // 3) if it converts a string literal to a pointer Finder->addMatcher( - implicitCastExpr(isArrayToPointerDecay(), - unless(hasParent(arraySubscriptExpr())), + implicitCastExpr(unless(hasParent(arraySubscriptExpr())), unless(hasParentIgnoringImpCasts(explicitCastExpr())), unless(isInsideOfRangeBeginEndStmt()), - unless(hasSourceExpression(stringLiteral())), - unless(sysSymbolDecayInSysHeader())) + unless(hasSourceExpression(stringLiteral()))) .bind("cast"), this); } @@ -88,6 +67,8 @@ void ProBoundsArrayToPointerDecayCheck:: void ProBoundsArrayToPointerDecayCheck::check( const MatchFinder::MatchResult &Result) { const auto *MatchedCast = Result.Nodes.getNodeAs<ImplicitCastExpr>("cast"); + if (MatchedCast->getCastKind() != CK_ArrayToPointerDecay) + return; diag(MatchedCast->getExprLoc(), "do not implicitly decay an array into a " "pointer; consider using gsl::array_view or " Modified: clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-bounds-array-to-pointer-decay.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-bounds-array-to-pointer-decay.cpp?rev=298470&r1=298469&r2=298470&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-bounds-array-to-pointer-decay.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/cppcoreguidelines-pro-bounds-array-to-pointer-decay.cpp Tue Mar 21 20:08:54 2017 @@ -1,5 +1,4 @@ // RUN: %check_clang_tidy %s cppcoreguidelines-pro-bounds-array-to-pointer-decay %t -#include <assert.h> #include <stddef.h> namespace gsl { @@ -35,11 +34,6 @@ void f() { for (auto &e : a) // OK, iteration internally decays array to pointer e = 1; - - assert(false); // OK, array decay inside system header macro - - assert(a); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not implicitly decay an array into a pointer; consider using gsl::array_view or an explicit cast instead [cppcoreguidelines-pro-bounds-array-to-pointer-decay] } const char *g() { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits