diff options
author | Piotr Zegar <me@piotrzegar.pl> | 2024-03-31 15:06:49 +0000 |
---|---|---|
committer | Piotr Zegar <me@piotrzegar.pl> | 2024-03-31 15:06:49 +0000 |
commit | 11a411a49b62c129bba551df4587dd446fcdc660 (patch) | |
tree | 73fdddefb9f0b8d044f805cb8fc5b4d2654a7e01 /clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp | |
parent | b6f6be4b500ff64c23a5103ac3311cb74519542f (diff) | |
download | llvm-11a411a49b62c129bba551df4587dd446fcdc660.zip llvm-11a411a49b62c129bba551df4587dd446fcdc660.tar.gz llvm-11a411a49b62c129bba551df4587dd446fcdc660.tar.bz2 |
Revert "[clang-tidy][NFC] Remove duplicated code"
This reverts commit b6f6be4b500ff64c23a5103ac3311cb74519542f.
Diffstat (limited to 'clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp index 5b1bf01..1284df6 100644 --- a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp +++ b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// #include "ConvertMemberFunctionsToStatic.h" -#include "../utils/Matchers.h" #include "clang/AST/ASTContext.h" #include "clang/AST/DeclCXX.h" #include "clang/AST/RecursiveASTVisitor.h" @@ -19,12 +18,40 @@ using namespace clang::ast_matchers; namespace clang::tidy::readability { -namespace { +AST_MATCHER(CXXMethodDecl, isStatic) { return Node.isStatic(); } + +AST_MATCHER(CXXMethodDecl, hasTrivialBody) { return Node.hasTrivialBody(); } AST_MATCHER(CXXMethodDecl, isOverloadedOperator) { return Node.isOverloadedOperator(); } +AST_MATCHER(CXXRecordDecl, hasAnyDependentBases) { + return Node.hasAnyDependentBases(); +} + +AST_MATCHER(CXXMethodDecl, isTemplate) { + return Node.getTemplatedKind() != FunctionDecl::TK_NonTemplate; +} + +AST_MATCHER(CXXMethodDecl, isDependentContext) { + return Node.isDependentContext(); +} + +AST_MATCHER(CXXMethodDecl, isInsideMacroDefinition) { + const ASTContext &Ctxt = Finder->getASTContext(); + return clang::Lexer::makeFileCharRange( + clang::CharSourceRange::getCharRange( + Node.getTypeSourceInfo()->getTypeLoc().getSourceRange()), + Ctxt.getSourceManager(), Ctxt.getLangOpts()) + .isInvalid(); +} + +AST_MATCHER_P(CXXMethodDecl, hasCanonicalDecl, + ast_matchers::internal::Matcher<CXXMethodDecl>, InnerMatcher) { + return InnerMatcher.matches(*Node.getCanonicalDecl(), Finder, Builder); +} + AST_MATCHER(CXXMethodDecl, usesThis) { class FindUsageOfThis : public RecursiveASTVisitor<FindUsageOfThis> { public: @@ -47,27 +74,22 @@ AST_MATCHER(CXXMethodDecl, usesThis) { return UsageOfThis.Used; } -} // namespace - void ConvertMemberFunctionsToStatic::registerMatchers(MatchFinder *Finder) { Finder->addMatcher( cxxMethodDecl( isDefinition(), isUserProvided(), unless(anyOf( - isExpansionInSystemHeader(), isVirtual(), - matchers::isStaticMethod(), matchers::hasTrivialBody(), - isOverloadedOperator(), cxxConstructorDecl(), cxxDestructorDecl(), - cxxConversionDecl(), matchers::isTemplate(), - matchers::isDependentContext(), + isExpansionInSystemHeader(), isVirtual(), isStatic(), + hasTrivialBody(), isOverloadedOperator(), cxxConstructorDecl(), + cxxDestructorDecl(), cxxConversionDecl(), isTemplate(), + isDependentContext(), ofClass(anyOf( isLambda(), - matchers::hasAnyDependentBases()) // Method might become - // virtual depending on - // template base class. + hasAnyDependentBases()) // Method might become virtual + // depending on template base class. ), - matchers::isInsideMacroDefinition(), - matchers::hasCanonicalDecl(matchers::isInsideMacroDefinition()), - usesThis()))) + isInsideMacroDefinition(), + hasCanonicalDecl(isInsideMacroDefinition()), usesThis()))) .bind("x"), this); } |