xref: /llvm-project/clang-tools-extra/clang-tidy/modernize/MakeSharedCheck.h (revision 4718da506091a37ca4863d979bc541e359b79b10)
1ce18ade4SPiotr Padlewski //===--- MakeSharedCheck.h - clang-tidy--------------------------*- C++ -*-===//
2ce18ade4SPiotr Padlewski //
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
6ce18ade4SPiotr Padlewski //
7ce18ade4SPiotr Padlewski //===----------------------------------------------------------------------===//
8ce18ade4SPiotr Padlewski 
9ce18ade4SPiotr Padlewski #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_MAKE_SHARED_H
10ce18ade4SPiotr Padlewski #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_MAKE_SHARED_H
11ce18ade4SPiotr Padlewski 
12ce18ade4SPiotr Padlewski #include "MakeSmartPtrCheck.h"
13ce18ade4SPiotr Padlewski 
14*4718da50SCarlos Galvez namespace clang::tidy::modernize {
15ce18ade4SPiotr Padlewski 
16ce18ade4SPiotr Padlewski /// Replace the pattern:
17ce18ade4SPiotr Padlewski /// \code
18ce18ade4SPiotr Padlewski ///   std::shared_ptr<type>(new type(args...))
19ce18ade4SPiotr Padlewski /// \endcode
20ce18ade4SPiotr Padlewski ///
21ce18ade4SPiotr Padlewski /// With the safer version:
22ce18ade4SPiotr Padlewski /// \code
23ce18ade4SPiotr Padlewski ///   std::make_shared<type>(args...)
24ce18ade4SPiotr Padlewski /// \endcode
25ce18ade4SPiotr Padlewski ///
26ce18ade4SPiotr Padlewski /// For the user-facing documentation see:
276e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/modernize/make-shared.html
28ce18ade4SPiotr Padlewski class MakeSharedCheck : public MakeSmartPtrCheck {
29ce18ade4SPiotr Padlewski public:
30ce18ade4SPiotr Padlewski   MakeSharedCheck(StringRef Name, ClangTidyContext *Context);
31ce18ade4SPiotr Padlewski 
32ce18ade4SPiotr Padlewski protected:
33ce18ade4SPiotr Padlewski   SmartPtrTypeMatcher getSmartPointerTypeMatcher() const override;
34ce18ade4SPiotr Padlewski };
35ce18ade4SPiotr Padlewski 
36*4718da50SCarlos Galvez } // namespace clang::tidy::modernize
37ce18ade4SPiotr Padlewski 
38ce18ade4SPiotr Padlewski #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_MAKE_SHARED_H
39