Author: aaronballman Date: Tue Oct 13 10:24:33 2015 New Revision: 250165 URL: http://llvm.org/viewvc/llvm-project?rev=250165&view=rev Log: Expose the clang-tidy misc-assign-operator-signature checker as cppcoreguidelines-c-copy-assignment-signature.
Modified: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp clang-tools-extra/trunk/clang-tidy/misc/AssignOperatorSignatureCheck.cpp clang-tools-extra/trunk/test/clang-tidy/misc-assign-operator-signature.cpp Modified: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp?rev=250165&r1=250164&r2=250165&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp Tue Oct 13 10:24:33 2015 @@ -10,6 +10,7 @@ #include "../ClangTidy.h" #include "../ClangTidyModule.h" #include "../ClangTidyModuleRegistry.h" +#include "../misc/AssignOperatorSignatureCheck.h" #include "ProBoundsPointerArithmeticCheck.h" #include "ProTypeConstCastCheck.h" #include "ProTypeReinterpretCastCheck.h" @@ -31,6 +32,8 @@ public: "cppcoreguidelines-pro-type-reinterpret-cast"); CheckFactories.registerCheck<ProTypeStaticCastDowncastCheck>( "cppcoreguidelines-pro-type-static-cast-downcast"); + CheckFactories.registerCheck<misc::AssignOperatorSignatureCheck>( + "cppcoreguidelines-c-copy-assignment-signature"); } }; Modified: clang-tools-extra/trunk/clang-tidy/misc/AssignOperatorSignatureCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/AssignOperatorSignatureCheck.cpp?rev=250165&r1=250164&r2=250165&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/AssignOperatorSignatureCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/AssignOperatorSignatureCheck.cpp Tue Oct 13 10:24:33 2015 @@ -51,11 +51,11 @@ void AssignOperatorSignatureCheck::regis .bind("ArgumentType"), this); - Finder->addMatcher(cxxMethodDecl(IsSelfAssign, isConst()).bind("Const"), - this); + Finder->addMatcher( + cxxMethodDecl(IsSelfAssign, anyOf(isConst(), isVirtual())).bind("cv"), + this); } - void AssignOperatorSignatureCheck::check( const MatchFinder::MatchResult &Result) { const auto* Method = Result.Nodes.getNodeAs<CXXMethodDecl>("method"); @@ -64,12 +64,13 @@ void AssignOperatorSignatureCheck::check static const char *Messages[][2] = { {"ReturnType", "operator=() should return '%0&'"}, {"ArgumentType", "operator=() should take '%0 const&', '%0&&' or '%0'"}, - {"Const", "operator=() should not be marked 'const'"}, + {"cv", "operator=() should not be marked '%1'"} }; - for (const auto& Message : Messages) { + for (const auto &Message : Messages) { if (Result.Nodes.getNodeAs<Decl>(Message[0])) - diag(Method->getLocStart(), Message[1]) << Name; + diag(Method->getLocStart(), Message[1]) + << Name << (Method->isConst() ? "const" : "virtual"); } } Modified: clang-tools-extra/trunk/test/clang-tidy/misc-assign-operator-signature.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-assign-operator-signature.cpp?rev=250165&r1=250164&r2=250165&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-assign-operator-signature.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/misc-assign-operator-signature.cpp Tue Oct 13 10:24:33 2015 @@ -49,3 +49,8 @@ class Private { // Pre-C++11 way of disabling assignment. void operator=(const Private &); }; + +struct Virtual { + virtual Virtual& operator=(const Virtual &); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: operator=() should not be marked 'virtual' +}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits