1*c63522e6SBalázs Kéri //===--- SharedPtrArrayMismatchCheck.cpp - clang-tidy ---------------------===//
2*c63522e6SBalázs Kéri //
3*c63522e6SBalázs Kéri // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*c63522e6SBalázs Kéri // See https://llvm.org/LICENSE.txt for license information.
5*c63522e6SBalázs Kéri // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*c63522e6SBalázs Kéri //
7*c63522e6SBalázs Kéri //===----------------------------------------------------------------------===//
8*c63522e6SBalázs Kéri 
9*c63522e6SBalázs Kéri #include "SharedPtrArrayMismatchCheck.h"
10*c63522e6SBalázs Kéri 
11*c63522e6SBalázs Kéri using namespace clang::ast_matchers;
12*c63522e6SBalázs Kéri 
13*c63522e6SBalázs Kéri namespace clang {
14*c63522e6SBalázs Kéri namespace tidy {
15*c63522e6SBalázs Kéri namespace bugprone {
16*c63522e6SBalázs Kéri 
SharedPtrArrayMismatchCheck(StringRef Name,ClangTidyContext * Context)17*c63522e6SBalázs Kéri SharedPtrArrayMismatchCheck::SharedPtrArrayMismatchCheck(
18*c63522e6SBalázs Kéri     StringRef Name, ClangTidyContext *Context)
19*c63522e6SBalázs Kéri     : SmartPtrArrayMismatchCheck(Name, Context, "shared") {}
20*c63522e6SBalázs Kéri 
21*c63522e6SBalázs Kéri SharedPtrArrayMismatchCheck::SmartPtrClassMatcher
getSmartPointerClassMatcher() const22*c63522e6SBalázs Kéri SharedPtrArrayMismatchCheck::getSmartPointerClassMatcher() const {
23*c63522e6SBalázs Kéri   return classTemplateSpecializationDecl(
24*c63522e6SBalázs Kéri       hasName("::std::shared_ptr"), templateArgumentCountIs(1),
25*c63522e6SBalázs Kéri       hasTemplateArgument(
26*c63522e6SBalázs Kéri           0, templateArgument(refersToType(qualType().bind(PointerTypeN)))));
27*c63522e6SBalázs Kéri }
28*c63522e6SBalázs Kéri 
29*c63522e6SBalázs Kéri } // namespace bugprone
30*c63522e6SBalázs Kéri } // namespace tidy
31*c63522e6SBalázs Kéri } // namespace clang
32