126fd0e8bSAngel Garcia Gomez //===--- MakeUniqueCheck.h - clang-tidy--------------------------*- C++ -*-===// 226fd0e8bSAngel Garcia Gomez // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 626fd0e8bSAngel Garcia Gomez // 726fd0e8bSAngel Garcia Gomez //===----------------------------------------------------------------------===// 826fd0e8bSAngel Garcia Gomez 926fd0e8bSAngel Garcia Gomez #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_MAKE_UNIQUE_H 1026fd0e8bSAngel Garcia Gomez #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_MAKE_UNIQUE_H 1126fd0e8bSAngel Garcia Gomez 12ce18ade4SPiotr Padlewski #include "MakeSmartPtrCheck.h" 1326fd0e8bSAngel Garcia Gomez 14*4718da50SCarlos Galvez namespace clang::tidy::modernize { 1526fd0e8bSAngel Garcia Gomez 1626fd0e8bSAngel Garcia Gomez /// Replace the pattern: 1726fd0e8bSAngel Garcia Gomez /// \code 1826fd0e8bSAngel Garcia Gomez /// std::unique_ptr<type>(new type(args...)) 1926fd0e8bSAngel Garcia Gomez /// \endcode 2026fd0e8bSAngel Garcia Gomez /// 2126fd0e8bSAngel Garcia Gomez /// With the C++14 version: 2226fd0e8bSAngel Garcia Gomez /// \code 2326fd0e8bSAngel Garcia Gomez /// std::make_unique<type>(args...) 2426fd0e8bSAngel Garcia Gomez /// \endcode 25ce18ade4SPiotr Padlewski class MakeUniqueCheck : public MakeSmartPtrCheck { 2626fd0e8bSAngel Garcia Gomez public: 27ce18ade4SPiotr Padlewski MakeUniqueCheck(StringRef Name, ClangTidyContext *Context); 28ce18ade4SPiotr Padlewski 29ce18ade4SPiotr Padlewski protected: 30ce18ade4SPiotr Padlewski SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override; 31670c6315SAlexander Kornienko 32670c6315SAlexander Kornienko bool isLanguageVersionSupported(const LangOptions &LangOpts) const override; 33670c6315SAlexander Kornienko 34670c6315SAlexander Kornienko private: 35670c6315SAlexander Kornienko const bool RequireCPlusPlus14; 3626fd0e8bSAngel Garcia Gomez }; 3726fd0e8bSAngel Garcia Gomez 38*4718da50SCarlos Galvez } // namespace clang::tidy::modernize 3926fd0e8bSAngel Garcia Gomez 4026fd0e8bSAngel Garcia Gomez #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_MAKE_UNIQUE_H 41