1 //===---------- Matchers.cpp - clang-tidy ---------------------------------===//
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
7 //===----------------------------------------------------------------------===//
12 namespace clang::tidy::matchers
{
14 bool NotIdenticalStatementsPredicate::operator()(
15 const clang::ast_matchers::internal::BoundNodesMap
&Nodes
) const {
16 return !utils::areStatementsIdentical(Node
.get
<Stmt
>(),
17 Nodes
.getNodeAs
<Stmt
>(ID
), *Context
);
20 MatchesAnyListedTypeNameMatcher::MatchesAnyListedTypeNameMatcher(
21 llvm::ArrayRef
<StringRef
> NameList
)
22 : NameMatchers(NameList
.begin(), NameList
.end()) {}
24 MatchesAnyListedTypeNameMatcher::~MatchesAnyListedTypeNameMatcher() = default;
26 bool MatchesAnyListedTypeNameMatcher::matches(
27 const QualType
&Node
, ast_matchers::internal::ASTMatchFinder
*Finder
,
28 ast_matchers::internal::BoundNodesTreeBuilder
*Builder
) const {
30 if (NameMatchers
.empty())
33 PrintingPolicy
PrintingPolicyWithSuppressedTag(
34 Finder
->getASTContext().getLangOpts());
35 PrintingPolicyWithSuppressedTag
.PrintCanonicalTypes
= true;
36 PrintingPolicyWithSuppressedTag
.SuppressElaboration
= true;
37 PrintingPolicyWithSuppressedTag
.SuppressScope
= false;
38 PrintingPolicyWithSuppressedTag
.SuppressTagKeyword
= true;
39 PrintingPolicyWithSuppressedTag
.SuppressUnwrittenScope
= true;
40 std::string TypeName
=
41 Node
.getUnqualifiedType().getAsString(PrintingPolicyWithSuppressedTag
);
43 return llvm::any_of(NameMatchers
, [&TypeName
](const llvm::Regex
&NM
) {
44 return NM
.isValid() && NM
.match(TypeName
);
48 } // namespace clang::tidy::matchers