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

Reply via email to