[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang-tools-extra / clang-tidy / utils / Matchers.cpp
blob7e89cae1c3316e4ab084ce29793a213cf958c867
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 //===----------------------------------------------------------------------===//
9 #include "Matchers.h"
10 #include "ASTUtils.h"
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())
31 return false;
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);
45 });
48 } // namespace clang::tidy::matchers