diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h @@ -32,7 +32,9 @@ void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; void onEndOfTranslationUnit() override; - + llvm::Optional getCheckTraversalKind() const override { + return TK_IgnoreUnlessSpelledInSource; + } enum class SpecialMemberFunctionKind : uint8_t { Destructor, DefaultDestructor, diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp @@ -40,18 +40,13 @@ void SpecialMemberFunctionsCheck::registerMatchers(MatchFinder *Finder) { Finder->addMatcher( cxxRecordDecl( - eachOf( - has(cxxDestructorDecl(unless(isImplicit())).bind("dtor")), - has(cxxConstructorDecl(isCopyConstructor(), unless(isImplicit())) - .bind("copy-ctor")), - has(cxxMethodDecl(isCopyAssignmentOperator(), - unless(isImplicit())) - .bind("copy-assign")), - has(cxxConstructorDecl(isMoveConstructor(), unless(isImplicit())) - .bind("move-ctor")), - has(cxxMethodDecl(isMoveAssignmentOperator(), - unless(isImplicit())) - .bind("move-assign")))) + eachOf(has(cxxDestructorDecl().bind("dtor")), + has(cxxConstructorDecl(isCopyConstructor()).bind("copy-ctor")), + has(cxxMethodDecl(isCopyAssignmentOperator()) + .bind("copy-assign")), + has(cxxConstructorDecl(isMoveConstructor()).bind("move-ctor")), + has(cxxMethodDecl(isMoveAssignmentOperator()) + .bind("move-assign")))) .bind("class-def"), this); }