aboutsummaryrefslogtreecommitdiff
path: root/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
diff options
context:
space:
mode:
authorPiotr Zegar <me@piotrzegar.pl>2024-03-31 15:06:49 +0000
committerPiotr Zegar <me@piotrzegar.pl>2024-03-31 15:06:49 +0000
commit11a411a49b62c129bba551df4587dd446fcdc660 (patch)
tree73fdddefb9f0b8d044f805cb8fc5b4d2654a7e01 /clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
parentb6f6be4b500ff64c23a5103ac3311cb74519542f (diff)
downloadllvm-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.cpp52
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);
}