34 lines · cpp
1//===----------------------------------------------------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#include "UniquePtrArrayMismatchCheck.h"10 11using namespace clang::ast_matchers;12 13namespace clang::tidy::bugprone {14 15UniquePtrArrayMismatchCheck::UniquePtrArrayMismatchCheck(16 StringRef Name, ClangTidyContext *Context)17 : SmartPtrArrayMismatchCheck(Name, Context, "unique") {}18 19UniquePtrArrayMismatchCheck::SmartPtrClassMatcher20UniquePtrArrayMismatchCheck::getSmartPointerClassMatcher() const {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::bugprone34