xref: /llvm-project/clang-tools-extra/clang-tidy/modernize/MakeUniqueCheck.h (revision 4718da506091a37ca4863d979bc541e359b79b10)
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