[clang-tools-extra] [clang-tidy] `matchesAnyListedTypeName` support non canonical types (PR #134869)
Congcong Cai via cfe-commits
cfe-commits at lists.llvm.org
Sat Apr 12 21:00:51 PDT 2025
https://github.com/HerrCai0907 updated https://github.com/llvm/llvm-project/pull/134869
>From 833d092fd262c4139488dc6f227f2b78180dd5da Mon Sep 17 00:00:00 2001
From: Congcong Cai <congcongcai0907 at 163.com>
Date: Tue, 8 Apr 2025 15:26:44 +0000
Subject: [PATCH] [clang-tidy] `matchesAnyListedTypeName` support non canonical
types
---
clang-tools-extra/clang-tidy/utils/Matchers.cpp | 7 ++++---
clang-tools-extra/clang-tidy/utils/Matchers.h | 13 ++++++++++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/utils/Matchers.cpp b/clang-tools-extra/clang-tidy/utils/Matchers.cpp
index 7e89cae1c3316..742dc6fda8c92 100644
--- a/clang-tools-extra/clang-tidy/utils/Matchers.cpp
+++ b/clang-tools-extra/clang-tidy/utils/Matchers.cpp
@@ -18,8 +18,9 @@ bool NotIdenticalStatementsPredicate::operator()(
}
MatchesAnyListedTypeNameMatcher::MatchesAnyListedTypeNameMatcher(
- llvm::ArrayRef<StringRef> NameList)
- : NameMatchers(NameList.begin(), NameList.end()) {}
+ llvm::ArrayRef<StringRef> NameList, bool CanonicalTypes)
+ : NameMatchers(NameList.begin(), NameList.end()),
+ CanonicalTypes(CanonicalTypes) {}
MatchesAnyListedTypeNameMatcher::~MatchesAnyListedTypeNameMatcher() = default;
@@ -32,7 +33,7 @@ bool MatchesAnyListedTypeNameMatcher::matches(
PrintingPolicy PrintingPolicyWithSuppressedTag(
Finder->getASTContext().getLangOpts());
- PrintingPolicyWithSuppressedTag.PrintCanonicalTypes = true;
+ PrintingPolicyWithSuppressedTag.PrintCanonicalTypes = CanonicalTypes;
PrintingPolicyWithSuppressedTag.SuppressElaboration = true;
PrintingPolicyWithSuppressedTag.SuppressScope = false;
PrintingPolicyWithSuppressedTag.SuppressTagKeyword = true;
diff --git a/clang-tools-extra/clang-tidy/utils/Matchers.h b/clang-tools-extra/clang-tidy/utils/Matchers.h
index 451c4ce92585b..2b6d377b8fd10 100644
--- a/clang-tools-extra/clang-tidy/utils/Matchers.h
+++ b/clang-tools-extra/clang-tidy/utils/Matchers.h
@@ -172,7 +172,8 @@ AST_MATCHER_P(Stmt, isStatementIdenticalToBoundNode, std::string, ID) {
class MatchesAnyListedTypeNameMatcher
: public ast_matchers::internal::MatcherInterface<QualType> {
public:
- explicit MatchesAnyListedTypeNameMatcher(llvm::ArrayRef<StringRef> NameList);
+ explicit MatchesAnyListedTypeNameMatcher(llvm::ArrayRef<StringRef> NameList,
+ bool CanonicalTypes);
~MatchesAnyListedTypeNameMatcher() override;
bool matches(
const QualType &Node, ast_matchers::internal::ASTMatchFinder *Finder,
@@ -180,13 +181,19 @@ class MatchesAnyListedTypeNameMatcher
private:
std::vector<llvm::Regex> NameMatchers;
+ bool CanonicalTypes;
};
// Returns a matcher that matches QualType against a list of provided regular.
inline ::clang::ast_matchers::internal::Matcher<QualType>
-matchesAnyListedTypeName(llvm::ArrayRef<StringRef> NameList) {
+matchesAnyListedTypeName(llvm::ArrayRef<StringRef> NameList,
+ bool CanonicalTypes) {
return ::clang::ast_matchers::internal::makeMatcher(
- new MatchesAnyListedTypeNameMatcher(NameList));
+ new MatchesAnyListedTypeNameMatcher(NameList, CanonicalTypes));
+}
+inline ::clang::ast_matchers::internal::Matcher<QualType>
+matchesAnyListedTypeName(llvm::ArrayRef<StringRef> NameList) {
+ return matchesAnyListedTypeName(NameList, true);
}
} // namespace clang::tidy::matchers
More information about the cfe-commits
mailing list