diff --git a/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h b/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h --- a/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h +++ b/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h @@ -34,6 +34,9 @@ void storeOptions(ClangTidyOptions::OptionMap &Opts) override; void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + llvm::Optional getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } private: const unsigned MagnitudeBitsUpperLimit; diff --git a/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp --- a/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp @@ -52,9 +52,7 @@ /// void TooSmallLoopVariableCheck::registerMatchers(MatchFinder *Finder) { StatementMatcher LoopVarMatcher = - expr( - ignoringParenImpCasts(declRefExpr(to(varDecl(hasType(isInteger())))))) - .bind(LoopVarName); + declRefExpr(to(varDecl(hasType(isInteger())))).bind(LoopVarName); // We need to catch only those comparisons which contain any integer cast. StatementMatcher LoopVarConversionMatcher = traverse( @@ -64,17 +62,15 @@ // We are interested in only those cases when the loop bound is a variable // value (not const, enum, etc.). - StatementMatcher LoopBoundMatcher = - expr(ignoringParenImpCasts(allOf(hasType(isInteger()), - unless(integerLiteral()), - unless(hasType(isConstQualified())), - unless(hasType(enumType()))))) + auto LoopBoundMatcher = + expr(allOf(hasType(isInteger()), unless(integerLiteral()), + unless(hasType(isConstQualified())), + unless(hasType(enumType())))) .bind(LoopUpperBoundName); // We use the loop increment expression only to make sure we found the right // loop variable. - StatementMatcher IncrementMatcher = - expr(ignoringParenImpCasts(hasType(isInteger()))).bind(LoopIncrementName); + auto IncrementMatcher = expr(hasType(isInteger())).bind(LoopIncrementName); Finder->addMatcher( forStmt( diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp @@ -65,7 +65,6 @@ template void doSomething() { for (T i = 0; i < size(); ++i) { - // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: loop variable has narrower type 'short' than iteration's upper bound 'long' [bugprone-too-small-loop-variable] } }