ftingaud created this revision. ftingaud added reviewers: hokein, Prazek. ftingaud added a project: clang-tools-extra. Herald added subscribers: cfe-commits, xazax.hun.
For a c++11 code, the clang-tidy rule "modernize-make-unique" should return immediately, as std::make_unique is not supported. Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D43766 Files: clang-tidy/modernize/MakeSharedCheck.cpp clang-tidy/modernize/MakeSharedCheck.h clang-tidy/modernize/MakeSmartPtrCheck.cpp clang-tidy/modernize/MakeSmartPtrCheck.h clang-tidy/modernize/MakeUniqueCheck.cpp clang-tidy/modernize/MakeUniqueCheck.h Index: clang-tidy/modernize/MakeUniqueCheck.h =================================================================== --- clang-tidy/modernize/MakeUniqueCheck.h +++ clang-tidy/modernize/MakeUniqueCheck.h @@ -31,6 +31,8 @@ protected: SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override; + + bool isVersionSupported(const clang::LangOptions &LangOpts) const override; }; } // namespace modernize Index: clang-tidy/modernize/MakeUniqueCheck.cpp =================================================================== --- clang-tidy/modernize/MakeUniqueCheck.cpp +++ clang-tidy/modernize/MakeUniqueCheck.cpp @@ -36,6 +36,10 @@ equalsBoundNode(PointerType)))))))))))))))); } +bool MakeUniqueCheck::isVersionSupported(const clang::LangOptions &LangOpts) const { + return LangOpts.CPlusPlus14; +} + } // namespace modernize } // namespace tidy } // namespace clang Index: clang-tidy/modernize/MakeSmartPtrCheck.h =================================================================== --- clang-tidy/modernize/MakeSmartPtrCheck.h +++ clang-tidy/modernize/MakeSmartPtrCheck.h @@ -40,6 +40,9 @@ /// in this class. virtual SmartPtrTypeMatcher getSmartPointerTypeMatcher() const = 0; + /// Returns whether the C++ version is compatible with current check. + virtual bool isVersionSupported(const clang::LangOptions &LangOpts) const = 0; + static const char PointerType[]; static const char ConstructorCall[]; static const char ResetCall[]; Index: clang-tidy/modernize/MakeSmartPtrCheck.cpp =================================================================== --- clang-tidy/modernize/MakeSmartPtrCheck.cpp +++ clang-tidy/modernize/MakeSmartPtrCheck.cpp @@ -62,15 +62,15 @@ } void MakeSmartPtrCheck::registerPPCallbacks(CompilerInstance &Compiler) { - if (getLangOpts().CPlusPlus11) { + if (isVersionSupported(getLangOpts())) { Inserter.reset(new utils::IncludeInserter( Compiler.getSourceManager(), Compiler.getLangOpts(), IncludeStyle)); Compiler.getPreprocessor().addPPCallbacks(Inserter->CreatePPCallbacks()); } } void MakeSmartPtrCheck::registerMatchers(ast_matchers::MatchFinder *Finder) { - if (!getLangOpts().CPlusPlus11) + if (!isVersionSupported(getLangOpts())) return; // Calling make_smart_ptr from within a member function of a type with a Index: clang-tidy/modernize/MakeSharedCheck.h =================================================================== --- clang-tidy/modernize/MakeSharedCheck.h +++ clang-tidy/modernize/MakeSharedCheck.h @@ -34,6 +34,8 @@ protected: SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override; + + bool isVersionSupported(const clang::LangOptions &LangOpts) const override; }; } // namespace modernize Index: clang-tidy/modernize/MakeSharedCheck.cpp =================================================================== --- clang-tidy/modernize/MakeSharedCheck.cpp +++ clang-tidy/modernize/MakeSharedCheck.cpp @@ -27,6 +27,10 @@ qualType().bind(PointerType))))))))); } +bool MakeSharedCheck::isVersionSupported(const clang::LangOptions &LangOpts) const { + return LangOpts.CPlusPlus11; +} + } // namespace modernize } // namespace tidy } // namespace clang
Index: clang-tidy/modernize/MakeUniqueCheck.h =================================================================== --- clang-tidy/modernize/MakeUniqueCheck.h +++ clang-tidy/modernize/MakeUniqueCheck.h @@ -31,6 +31,8 @@ protected: SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override; + + bool isVersionSupported(const clang::LangOptions &LangOpts) const override; }; } // namespace modernize Index: clang-tidy/modernize/MakeUniqueCheck.cpp =================================================================== --- clang-tidy/modernize/MakeUniqueCheck.cpp +++ clang-tidy/modernize/MakeUniqueCheck.cpp @@ -36,6 +36,10 @@ equalsBoundNode(PointerType)))))))))))))))); } +bool MakeUniqueCheck::isVersionSupported(const clang::LangOptions &LangOpts) const { + return LangOpts.CPlusPlus14; +} + } // namespace modernize } // namespace tidy } // namespace clang Index: clang-tidy/modernize/MakeSmartPtrCheck.h =================================================================== --- clang-tidy/modernize/MakeSmartPtrCheck.h +++ clang-tidy/modernize/MakeSmartPtrCheck.h @@ -40,6 +40,9 @@ /// in this class. virtual SmartPtrTypeMatcher getSmartPointerTypeMatcher() const = 0; + /// Returns whether the C++ version is compatible with current check. + virtual bool isVersionSupported(const clang::LangOptions &LangOpts) const = 0; + static const char PointerType[]; static const char ConstructorCall[]; static const char ResetCall[]; Index: clang-tidy/modernize/MakeSmartPtrCheck.cpp =================================================================== --- clang-tidy/modernize/MakeSmartPtrCheck.cpp +++ clang-tidy/modernize/MakeSmartPtrCheck.cpp @@ -62,15 +62,15 @@ } void MakeSmartPtrCheck::registerPPCallbacks(CompilerInstance &Compiler) { - if (getLangOpts().CPlusPlus11) { + if (isVersionSupported(getLangOpts())) { Inserter.reset(new utils::IncludeInserter( Compiler.getSourceManager(), Compiler.getLangOpts(), IncludeStyle)); Compiler.getPreprocessor().addPPCallbacks(Inserter->CreatePPCallbacks()); } } void MakeSmartPtrCheck::registerMatchers(ast_matchers::MatchFinder *Finder) { - if (!getLangOpts().CPlusPlus11) + if (!isVersionSupported(getLangOpts())) return; // Calling make_smart_ptr from within a member function of a type with a Index: clang-tidy/modernize/MakeSharedCheck.h =================================================================== --- clang-tidy/modernize/MakeSharedCheck.h +++ clang-tidy/modernize/MakeSharedCheck.h @@ -34,6 +34,8 @@ protected: SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override; + + bool isVersionSupported(const clang::LangOptions &LangOpts) const override; }; } // namespace modernize Index: clang-tidy/modernize/MakeSharedCheck.cpp =================================================================== --- clang-tidy/modernize/MakeSharedCheck.cpp +++ clang-tidy/modernize/MakeSharedCheck.cpp @@ -27,6 +27,10 @@ qualType().bind(PointerType))))))))); } +bool MakeSharedCheck::isVersionSupported(const clang::LangOptions &LangOpts) const { + return LangOpts.CPlusPlus11; +} + } // namespace modernize } // namespace tidy } // namespace clang
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits