brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · b1591fb Raw
49 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 "Matchers.h"10#include "ASTUtils.h"11 12namespace clang::tidy::matchers {13 14bool NotIdenticalStatementsPredicate::operator()(15    const clang::ast_matchers::internal::BoundNodesMap &Nodes) const {16  return !utils::areStatementsIdentical(Node.get<Stmt>(),17                                        Nodes.getNodeAs<Stmt>(ID), *Context);18}19 20MatchesAnyListedTypeNameMatcher::MatchesAnyListedTypeNameMatcher(21    llvm::ArrayRef<StringRef> NameList, bool CanonicalTypes)22    : NameMatchers(NameList.begin(), NameList.end()),23      CanonicalTypes(CanonicalTypes) {}24 25MatchesAnyListedTypeNameMatcher::~MatchesAnyListedTypeNameMatcher() = default;26 27bool MatchesAnyListedTypeNameMatcher::matches(28    const QualType &Node, ast_matchers::internal::ASTMatchFinder *Finder,29    ast_matchers::internal::BoundNodesTreeBuilder *Builder) const {30  if (NameMatchers.empty())31    return false;32 33  PrintingPolicy PrintingPolicyWithSuppressedTag(34      Finder->getASTContext().getLangOpts());35  PrintingPolicyWithSuppressedTag.PrintAsCanonical = CanonicalTypes;36  PrintingPolicyWithSuppressedTag.FullyQualifiedName = 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::matchers49