clang-tools 20.0.0git
Matchers.cpp
Go to the documentation of this file.
1//===---------- Matchers.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
9#include "Matchers.h"
10#include "ASTUtils.h"
11
13
15 const clang::ast_matchers::internal::BoundNodesMap &Nodes) const {
16 return !utils::areStatementsIdentical(Node.get<Stmt>(),
17 Nodes.getNodeAs<Stmt>(ID), *Context);
18}
19
21 llvm::ArrayRef<StringRef> NameList)
22 : NameMatchers(NameList.begin(), NameList.end()) {}
23
25
27 const QualType &Node, ast_matchers::internal::ASTMatchFinder *Finder,
28 ast_matchers::internal::BoundNodesTreeBuilder *Builder) const {
29
30 if (NameMatchers.empty())
31 return false;
32
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);
42
43 return llvm::any_of(NameMatchers, [&TypeName](const llvm::Regex &NM) {
44 return NM.isValid() && NM.match(TypeName);
45 });
46}
47
48} // namespace clang::tidy::matchers
CodeCompletionBuilder Builder
::clang::DynTypedNode Node
MatchesAnyListedTypeNameMatcher(llvm::ArrayRef< StringRef > NameList)
Definition: Matchers.cpp:20
bool matches(const QualType &Node, ast_matchers::internal::ASTMatchFinder *Finder, ast_matchers::internal::BoundNodesTreeBuilder *Builder) const override
Definition: Matchers.cpp:26
bool areStatementsIdentical(const Stmt *FirstStmt, const Stmt *SecondStmt, const ASTContext &Context, bool Canonical)
Definition: ASTUtils.cpp:91
bool operator()(const clang::ast_matchers::internal::BoundNodesMap &Nodes) const
Definition: Matchers.cpp:14