clang-tools 20.0.0git
UniquePtrArrayMismatchCheck.cpp
Go to the documentation of this file.
1//===--- UniquePtrArrayMismatchCheck.cpp - clang-tidy ---------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
10
11using namespace clang::ast_matchers;
12
13namespace clang::tidy::bugprone {
14
16 StringRef Name, ClangTidyContext *Context)
17 : SmartPtrArrayMismatchCheck(Name, Context, "unique") {}
18
21 auto DeleterDecl = classTemplateSpecializationDecl(
22 hasName("::std::default_delete"), templateArgumentCountIs(1),
23 hasTemplateArgument(0, templateArgument(refersToType(
24 qualType(equalsBoundNode(PointerTypeN))))));
25 return classTemplateSpecializationDecl(
26 hasName("::std::unique_ptr"), templateArgumentCountIs(2),
27 hasTemplateArgument(
28 0, templateArgument(refersToType(qualType().bind(PointerTypeN)))),
29 hasTemplateArgument(1, templateArgument(refersToType(
30 qualType(hasDeclaration(DeleterDecl))))));
31}
32
33} // namespace clang::tidy::bugprone
llvm::SmallString< 256U > Name
Every ClangTidyCheck reports errors through a DiagnosticsEngine provided by this context.
Find constructions of smart (unique or shared) pointers where the pointer is declared with non-array ...
ast_matchers::internal::BindableMatcher< Decl > SmartPtrClassMatcher
UniquePtrArrayMismatchCheck(StringRef Name, ClangTidyContext *Context)
SmartPtrClassMatcher getSmartPointerClassMatcher() const override
Returns matcher that match with different smart pointer classes.