[PATCH] D157777: [ASTMatcher] Add matcher for 'MacroQualifiedType'
Ding Fei via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 12 06:23:24 PDT 2023
danix800 updated this revision to Diff 549607.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D157777/new/
https://reviews.llvm.org/D157777
Files:
clang/docs/LibASTMatchersReference.html
clang/docs/ReleaseNotes.rst
clang/include/clang/ASTMatchers/ASTMatchers.h
clang/lib/ASTMatchers/ASTMatchersInternal.cpp
clang/lib/ASTMatchers/Dynamic/Registry.cpp
clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
Index: clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
===================================================================
--- clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
+++ clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
@@ -1838,6 +1838,15 @@
namesType(typedefType()))))));
}
+TEST_P(ASTMatchersTest, MacroQualifiedType) {
+ EXPECT_TRUE(matches(R"(
+ #define CDECL __attribute__((cdecl))
+ typedef void (CDECL *X)();
+ )",
+ typedefDecl(hasName("X"), hasType(pointerType(pointee(
+ macroQualifiedType()))))));
+}
+
TEST_P(ASTMatchersTest, TemplateSpecializationType) {
if (!GetParam().isCXX()) {
return;
Index: clang/lib/ASTMatchers/Dynamic/Registry.cpp
===================================================================
--- clang/lib/ASTMatchers/Dynamic/Registry.cpp
+++ clang/lib/ASTMatchers/Dynamic/Registry.cpp
@@ -485,6 +485,7 @@
REGISTER_MATCHER(lambdaCapture);
REGISTER_MATCHER(lambdaExpr);
REGISTER_MATCHER(linkageSpecDecl);
+ REGISTER_MATCHER(macroQualifiedType);
REGISTER_MATCHER(materializeTemporaryExpr);
REGISTER_MATCHER(member);
REGISTER_MATCHER(memberExpr);
Index: clang/lib/ASTMatchers/ASTMatchersInternal.cpp
===================================================================
--- clang/lib/ASTMatchers/ASTMatchersInternal.cpp
+++ clang/lib/ASTMatchers/ASTMatchersInternal.cpp
@@ -1058,6 +1058,7 @@
const AstTypeMatcher<FunctionProtoType> functionProtoType;
const AstTypeMatcher<ParenType> parenType;
const AstTypeMatcher<BlockPointerType> blockPointerType;
+const AstTypeMatcher<MacroQualifiedType> macroQualifiedType;
const AstTypeMatcher<MemberPointerType> memberPointerType;
const AstTypeMatcher<PointerType> pointerType;
const AstTypeMatcher<ObjCObjectPointerType> objcObjectPointerType;
Index: clang/include/clang/ASTMatchers/ASTMatchers.h
===================================================================
--- clang/include/clang/ASTMatchers/ASTMatchers.h
+++ clang/include/clang/ASTMatchers/ASTMatchers.h
@@ -7258,6 +7258,17 @@
/// matches "typedef int X"
extern const AstTypeMatcher<TypedefType> typedefType;
+/// Matches macro qualified types.
+///
+/// Given
+/// \code
+/// #define CDECL __attribute__((cdecl))
+/// typedef void (CDECL *X)();
+/// \endcode
+/// macroQualifiedType()
+/// matches the type of the typedef declaration of \c X.
+extern const AstTypeMatcher<MacroQualifiedType> macroQualifiedType;
+
/// Matches enum types.
///
/// Given
Index: clang/docs/ReleaseNotes.rst
===================================================================
--- clang/docs/ReleaseNotes.rst
+++ clang/docs/ReleaseNotes.rst
@@ -244,6 +244,7 @@
------------
- Add ``convertVectorExpr``.
- Add ``dependentSizedExtVectorType``.
+- Add ``macroQualifiedType``.
clang-format
------------
Index: clang/docs/LibASTMatchersReference.html
===================================================================
--- clang/docs/LibASTMatchersReference.html
+++ clang/docs/LibASTMatchersReference.html
@@ -2648,6 +2648,17 @@
</pre></td></tr>
+<tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('macroQualifiedType0')"><a name="macroQualifiedType0Anchor">macroQualifiedType</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1MacroQualifiedType.html">MacroQualifiedType</a>>...</td></tr>
+<tr><td colspan="4" class="doc" id="macroQualifiedType0"><pre>Matches macro qualified types.
+
+Given
+ #define CDECL __attribute__((cdecl))
+ typedef void (CDECL *X)();
+macroQualifiedType()
+ matches the type of the typedef declaration of X.
+</pre></td></tr>
+
+
<tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('memberPointerType0')"><a name="memberPointerType0Anchor">memberPointerType</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>...</td></tr>
<tr><td colspan="4" class="doc" id="memberPointerType0"><pre>Matches member pointer types.
Given
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D157777.549607.patch
Type: text/x-patch
Size: 4249 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230812/335ad4b0/attachment-0001.bin>
More information about the cfe-commits
mailing list