diff --git a/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.h b/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.h --- a/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.h +++ b/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.h @@ -24,19 +24,14 @@ /// http://clang.llvm.org/extra/clang-tidy/checks/readability-use-anyofallof.html class UseAnyOfAllOfCheck : public ClangTidyCheck { public: - UseAnyOfAllOfCheck(StringRef Name, ClangTidyContext *Context) - : ClangTidyCheck(Name, Context), - IncludeStyle(utils::IncludeSorter::parseIncludeStyle( - Options.getLocalOrGlobal("IncludeStyle", "llvm"))) {} + using ClangTidyCheck::ClangTidyCheck; + + bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { + return LangOpts.CPlusPlus; + } - void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP, - Preprocessor *ModuleExpanderPP) override; void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; - -private: - std::unique_ptr IncludeInserter; - const utils::IncludeSorter::IncludeStyle IncludeStyle; }; } // namespace readability diff --git a/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.cpp b/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.cpp --- a/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/UseAnyOfAllOfCheck.cpp @@ -18,12 +18,13 @@ using namespace clang::ast_matchers; namespace clang { -namespace ast_matchers { +namespace { /// Matches a Stmt whose parent is a CompoundStmt, /// and which is directly followed by /// a Stmt matching the inner matcher. -AST_MATCHER_P(Stmt, nextStmt, internal::Matcher, InnerMatcher) { - const auto &Parents = Finder->getASTContext().getParents(Node); +AST_MATCHER_P(Stmt, nextStmt, ast_matchers::internal::Matcher, + InnerMatcher) { + DynTypedNodeList Parents = Finder->getASTContext().getParents(Node); if (Parents.size() != 1) return false; @@ -31,30 +32,19 @@ if (!C) return false; - const auto *I = std::find(C->body_begin(), C->body_end(), &Node); + const auto *I = llvm::find(C->body(), &Node); assert(I != C->body_end()); // C is parent of Node. if (++I == C->body_end()) return false; // Node is last statement. return InnerMatcher.matches(**I, Finder, Builder); } -} // namespace ast_matchers +} // namespace namespace tidy { namespace readability { -void UseAnyOfAllOfCheck::registerPPCallbacks(const SourceManager &SM, - Preprocessor *PP, - Preprocessor *ModuleExpanderPP) { - IncludeInserter = - std::make_unique(SM, getLangOpts(), IncludeStyle); - PP->addPPCallbacks(IncludeInserter->CreatePPCallbacks()); -} - void UseAnyOfAllOfCheck::registerMatchers(MatchFinder *Finder) { - if (!getLangOpts().CPlusPlus) - return; - auto returns = [](bool V) { return returnStmt(hasReturnValue(cxxBoolLiteral(equals(V)))); }; @@ -107,7 +97,6 @@ diag(S->getForLoc(), "Replace loop by std%0::any_of() from ") << Ranges; - } else if (const auto *S = Result.Nodes.getNodeAs("all_of_loop")) { if (!isViableLoop(*S, *Result.Context)) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -132,8 +132,8 @@ - New :doc:`readability-use-anyofallof ` check. - Finds range-based for loops that can be replaced by a call to std::any_of or - std::all_of. + Finds range-based for loops that can be replaced by a call to ``std::any_of`` + or ``std::all_of``. New check aliases ^^^^^^^^^^^^^^^^^