This revision was automatically updated to reflect the committed changes. Closed by commit rL328101: [clang-tidy][modernize-make-unique] Checks c++14 flag before using std⦠(authored by alexfh, committed by ). Herald added subscribers: llvm-commits, klimek.
Changed prior to commit: https://reviews.llvm.org/D43766?vs=138398&id=139298#toc Repository: rL LLVM https://reviews.llvm.org/D43766 Files: clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.h clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.h clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx11.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx14.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-macros.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp
Index: clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.h =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.h +++ clang-tools-extra/trunk/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 isLanguageVersionSupported(const LangOptions &LangOpts) const; + static const char PointerType[]; static const char ConstructorCall[]; static const char ResetCall[]; Index: clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.cpp @@ -17,7 +17,8 @@ MakeUniqueCheck::MakeUniqueCheck(StringRef Name, clang::tidy::ClangTidyContext *Context) - : MakeSmartPtrCheck(Name, Context, "std::make_unique") {} + : MakeSmartPtrCheck(Name, Context, "std::make_unique"), + RequireCPlusPlus14(Options.get("MakeSmartPtrFunction", "").empty()) {} MakeUniqueCheck::SmartPtrTypeMatcher MakeUniqueCheck::getSmartPointerTypeMatcher() const { @@ -36,6 +37,11 @@ equalsBoundNode(PointerType)))))))))))))))); } +bool MakeUniqueCheck::isLanguageVersionSupported( + const LangOptions &LangOpts) const { + return RequireCPlusPlus14 ? LangOpts.CPlusPlus14 : LangOpts.CPlusPlus11; +} + } // namespace modernize } // namespace tidy } // namespace clang Index: clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp @@ -61,16 +61,21 @@ Options.store(Opts, "IgnoreMacros", IgnoreMacros); } +bool MakeSmartPtrCheck::isLanguageVersionSupported( + const LangOptions &LangOpts) const { + return LangOpts.CPlusPlus11; +} + void MakeSmartPtrCheck::registerPPCallbacks(CompilerInstance &Compiler) { - if (getLangOpts().CPlusPlus11) { + if (isLanguageVersionSupported(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 (!isLanguageVersionSupported(getLangOpts())) return; // Calling make_smart_ptr from within a member function of a type with a Index: clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.h =================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.h +++ clang-tools-extra/trunk/clang-tidy/modernize/MakeUniqueCheck.h @@ -31,6 +31,11 @@ protected: SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override; + + bool isLanguageVersionSupported(const LangOptions &LangOpts) const override; + +private: + const bool RequireCPlusPlus14; }; } // namespace modernize Index: clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s modernize-make-unique %t -- -- -std=c++11 \ +// RUN: %check_clang_tidy %s modernize-make-unique %t -- -- -std=c++14 \ // RUN: -I%S/Inputs/modernize-smart-ptr #include "unique_ptr.h" Index: clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx11.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx11.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx11.cpp @@ -0,0 +1,10 @@ +// RUN: %check_clang_tidy %s modernize-make-unique %t -- -- -std=c++11 \ +// RUN: -I%S/Inputs/modernize-smart-ptr + +#include "unique_ptr.h" +// CHECK-FIXES: #include "unique_ptr.h" + +void f() { + auto my_ptr = std::unique_ptr<int>(new int(1)); + // CHECK-FIXES: auto my_ptr = std::unique_ptr<int>(new int(1)); +} Index: clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx14.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx14.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-cxx14.cpp @@ -0,0 +1,11 @@ +// RUN: %check_clang_tidy %s modernize-make-unique %t -- -- -std=c++14 \ +// RUN: -I%S/Inputs/modernize-smart-ptr + +#include "unique_ptr.h" +// CHECK-FIXES: #include <memory> + +void f() { + auto my_ptr = std::unique_ptr<int>(new int(1)); + // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: use std::make_unique instead + // CHECK-FIXES: auto my_ptr = std::make_unique<int>(1); +} Index: clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-macros.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-macros.cpp +++ clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique-macros.cpp @@ -1,6 +1,6 @@ // RUN: %check_clang_tidy %s modernize-make-unique %t -- \ // RUN: -config="{CheckOptions: [{key: modernize-make-unique.IgnoreMacros, value: 0}]}" \ -// RUN: -- -std=c++11 -I%S/Inputs/modernize-smart-ptr +// RUN: -- -std=c++14 -I%S/Inputs/modernize-smart-ptr #include "unique_ptr.h"
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits