steveire created this revision. steveire added reviewers: aaron.ballman, njames93. Herald added subscribers: nullptr.cpp, xazax.hun. steveire requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Don't issue a warning from within a template declaration which is most likely not actionable. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D96142 Files: clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp +++ clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp @@ -65,7 +65,6 @@ template <class T> 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] } } Index: clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h =================================================================== --- clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h +++ 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<TraversalKind> getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } private: const unsigned MagnitudeBitsUpperLimit; Index: clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp +++ 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(
Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp +++ clang-tools-extra/test/clang-tidy/checkers/bugprone-too-small-loop-variable.cpp @@ -65,7 +65,6 @@ template <class T> 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] } } Index: clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h =================================================================== --- clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.h +++ 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<TraversalKind> getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } private: const unsigned MagnitudeBitsUpperLimit; Index: clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp +++ 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(
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits