brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 34c2c6d Raw
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