llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Congcong Cai (HerrCai0907)

<details>
<summary>Changes</summary>

1. dump-ast-matchers.py does not depend on pwd
2. fix some warning in python3


---

Patch is 21.54 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/130726.diff


3 Files Affected:

- (modified) clang/docs/LibASTMatchersReference.html (+134-59) 
- (modified) clang/docs/tools/dump_ast_matchers.py (+3-3) 
- (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (+2-1) 


``````````diff
diff --git a/clang/docs/LibASTMatchersReference.html 
b/clang/docs/LibASTMatchersReference.html
index 48dfd9cac0033..2a01d6cda6bed 100644
--- a/clang/docs/LibASTMatchersReference.html
+++ b/clang/docs/LibASTMatchersReference.html
@@ -1842,12 +1842,6 @@ <h2 id="decl-matchers">Node Matchers</h2>
   if (x) {}
 </pre></td></tr>
 
-<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td
 class="name" onclick="toggle('dependentScopeDeclRefExpr0')"><a 
name="dependentScopeDeclRefExpr0Anchor">dependentScopeDeclRefExpr</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentScopeDeclRefExpr.html";>DependentScopeDeclRefExpr</a>&gt;...</td></tr>
-<tr><td colspan="4" class="doc" id="dependentScopeDeclRefExpr0"><pre>Matches 
expressions that refer to dependent scope declarations.
-
-Example matches T::v
-   template <class T> class X : T { void f() { T::v; } };
-</pre></td></tr>
 
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td
 class="name" onclick="toggle('declStmt0')"><a 
name="declStmt0Anchor">declStmt</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html";>DeclStmt</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="declStmt0"><pre>Matches declaration 
statements.
@@ -1874,6 +1868,14 @@ <h2 id="decl-matchers">Node Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td
 class="name" onclick="toggle('dependentScopeDeclRefExpr0')"><a 
name="dependentScopeDeclRefExpr0Anchor">dependentScopeDeclRefExpr</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentScopeDeclRefExpr.html";>DependentScopeDeclRefExpr</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="dependentScopeDeclRefExpr0"><pre>Matches 
expressions that refer to dependent scope declarations.
+
+example matches T::v;
+ template &lt;class T&gt; class X : T { void f() { T::v; } };
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td
 class="name" onclick="toggle('designatedInitExpr0')"><a 
name="designatedInitExpr0Anchor">designatedInitExpr</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DesignatedInitExpr.html";>DesignatedInitExpr</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="designatedInitExpr0"><pre>Matches C99 
designated initializer expressions [C99 6.7.8].
 
@@ -1931,7 +1933,24 @@ <h2 id="decl-matchers">Node Matchers</h2>
 
 
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td
 class="name" onclick="toggle('fixedPointLiteral0')"><a 
name="fixedPointLiteral0Anchor">fixedPointLiteral</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1FixedPointLiteral.html";>FixedPointLiteral</a>&gt;...</td></tr>
-<tr><td colspan="4" class="doc" id="fixedPointLiteral0"><pre>Matches fixed 
point literals
+<tr><td colspan="4" class="doc" id="fixedPointLiteral0"><pre>Matches 
fixed-point literals eg.
+0.5r, 0.5hr, 0.5lr, 0.5uhr, 0.5ur, 0.5ulr
+1.0k, 1.0hk, 1.0lk, 1.0uhk, 1.0uk, 1.0ulk
+Exponents 1.0e10k
+Hexadecimal numbers 0x0.2p2r
+
+Does not match implicit conversions such as first two lines:
+   short _Accum sa = 2;
+   _Accum a = 12.5;
+   _Accum b = 1.25hk;
+   _Fract c = 0.25hr;
+   _Fract v = 0.35uhr;
+   _Accum g = 1.45uhk;
+   _Accum decexp1 = 1.575e1k;
+
+The matcher matches
+but does not
+match and from the code block.
 </pre></td></tr>
 
 
@@ -2536,26 +2555,6 @@ <h2 id="decl-matchers">Node Matchers</h2>
   matches "decltype(i + j)"
 </pre></td></tr>
 
-<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('dependentNameType0')"><a 
name="dependentNameType0Anchor">dependentNameType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentNameType.html";>DependentNameType</a>&gt;...</td></tr>
-<tr><td colspan="4" class="doc" id="dependentNameType0"><pre>Matches a 
dependent name type.
-
-Example matches T::type
-
-  template <typename T> struct declToImport {
-    typedef typename T::type dependent_name;
-  };
-</pre></td></tr>
-
-<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('dependentTemplateSpecializationType0')"><a 
name="dependentTemplateSpecializationType0Anchor">dependentTemplateSpecializationType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentTemplateSpecializationType.html";>DependentTemplateSpecializationType</a>&gt;...</td></tr>
-<tr><td colspan="4" class="doc" 
id="dependentTemplateSpecializationType0"><pre>Matches a dependent template 
specialization type.
-
-Example matches A<T>::template B<T>
-
-  template<typename T> struct A;
-  template<typename T> struct declToImport {
-    typename A<T>::template B<T> a;
-  };
-</pre></td></tr>
 
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('deducedTemplateSpecializationType0')"><a 
name="deducedTemplateSpecializationType0Anchor">deducedTemplateSpecializationType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1DeducedTemplateSpecializationType.html";>DeducedTemplateSpecializationType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" 
id="deducedTemplateSpecializationType0"><pre>Matches C++17 deduced template 
specialization types, e.g. deduced class
@@ -2571,6 +2570,16 @@ <h2 id="decl-matchers">Node Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('dependentNameType0')"><a 
name="dependentNameType0Anchor">dependentNameType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentNameType.html";>DependentNameType</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="dependentNameType0"><pre>Matches a 
dependent name type
+
+Example matches T::type
+ template &lt;typename T&gt; struct declToImport {
+   typedef typename T::type dependent_name;
+ };
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('dependentSizedArrayType0')"><a 
name="dependentSizedArrayType0Anchor">dependentSizedArrayType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentSizedArrayType.html";>DependentSizedArrayType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="dependentSizedArrayType0"><pre>Matches C++ 
arrays whose size is a value-dependent expression.
 
@@ -2598,6 +2607,17 @@ <h2 id="decl-matchers">Node Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('dependentTemplateSpecializationType0')"><a 
name="dependentTemplateSpecializationType0Anchor">dependentTemplateSpecializationType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentTemplateSpecializationType.html";>DependentTemplateSpecializationType</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" 
id="dependentTemplateSpecializationType0"><pre>Matches a dependent template 
specialization type
+
+Example matches A&lt;T&gt;::template B&lt;T&gt;
+  template&lt;typename T&gt; struct A;
+  template&lt;typename T&gt; struct declToImport {
+    typename A&lt;T&gt;::template B&lt;T&gt; a;
+  };
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('elaboratedType0')"><a 
name="elaboratedType0Anchor">elaboratedType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ElaboratedType.html";>ElaboratedType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="elaboratedType0"><pre>Matches types 
specified with an elaborated type keyword or with a
 qualified name.
@@ -3449,34 +3469,6 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentScopeDeclRefExpr.html";>DependentScopeDeclRefExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDependentName0')"><a 
name="hasDependentName0Anchor">hasDependentName</a></td><td>std::string 
N</td></tr>
-<tr><td colspan="4" class="doc" id="hasDependentName0"><pre>Matches the 
dependent name of a DependentScopeDeclRefExpr.
-
-Matches the dependent name of a DependentScopeDeclRefExpr
-
-Given:
-
-  template &lt;class T&lt; class X : T { void f() { T::v; } };
-
-dependentScopeDeclRefExpr(hasDependentName("v")) matches `T::v`
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentNameType.html";>DependentNameType</a>&gt;</td><td
 class="name" onclick="toggle('hasDependentName1')"><a 
name="hasDependentName1Anchor">hasDependentName</a></td><td>std::string 
N</td></tr>
-<tr><td colspan="4" class="doc" id="hasDependentName1"><pre>Matches the 
dependent name of a DependentNameType.
-
-Matches the dependent name of a DependentNameType
-
-Given:
-
-  template &lt;typename T&lt; struct declToImport {
-    typedef typename T::type dependent_name;
-  };
-
-dependentNameType(hasDependentName("type")) matches `T::type`
-</pre></td></tr>
-
-
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1CXXDependentScopeMemberExpr.html";>CXXDependentScopeMemberExpr</a>&gt;</td><td
 class="name" onclick="toggle('memberHasSameNameAsBoundNode0')"><a 
name="memberHasSameNameAsBoundNode0Anchor">memberHasSameNameAsBoundNode</a></td><td>std::string
 BindingID</td></tr>
 <tr><td colspan="4" class="doc" 
id="memberHasSameNameAsBoundNode0"><pre>Matches template-dependent, but known, 
member names against an already-bound
 node
@@ -4373,6 +4365,38 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentNameType.html";>DependentNameType</a>&gt;</td><td
 class="name" onclick="toggle('hasDependentName1')"><a 
name="hasDependentName1Anchor">hasDependentName</a></td><td>std::string 
N</td></tr>
+<tr><td colspan="4" class="doc" id="hasDependentName1"><pre>Matches the 
dependent name of a DependentScopeDeclRefExpr or
+DependentNameType
+
+Given:
+ template &lt;class T&gt; class X : T { void f() { T::v; } };
+dependentScopeDeclRefExpr(hasDependentName("v")) matches `T::v`
+
+Given:
+ template &lt;typename T&gt; struct declToImport {
+   typedef typename T::type dependent_name;
+ };
+dependentNameType(hasDependentName("type")) matches `T::type`
+</pre></td></tr>
+
+
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DependentScopeDeclRefExpr.html";>DependentScopeDeclRefExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDependentName0')"><a 
name="hasDependentName0Anchor">hasDependentName</a></td><td>std::string 
N</td></tr>
+<tr><td colspan="4" class="doc" id="hasDependentName0"><pre>Matches the 
dependent name of a DependentScopeDeclRefExpr or
+DependentNameType
+
+Given:
+ template &lt;class T&gt; class X : T { void f() { T::v; } };
+dependentScopeDeclRefExpr(hasDependentName("v")) matches `T::v`
+
+Given:
+ template &lt;typename T&gt; struct declToImport {
+   typedef typename T::type dependent_name;
+ };
+dependentNameType(hasDependentName("type")) matches `T::type`
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DesignatedInitExpr.html";>DesignatedInitExpr</a>&gt;</td><td
 class="name" onclick="toggle('designatorCountIs0')"><a 
name="designatorCountIs0Anchor">designatorCountIs</a></td><td>unsigned 
N</td></tr>
 <tr><td colspan="4" class="doc" id="designatorCountIs0"><pre>Matches 
designated initializer expressions that contain
 a specific number of designators.
@@ -6799,7 +6823,8 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
   matches "int const *b"
 
 Usable as: Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html";>BlockPointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html";>MemberPointerType</a>&gt;,
-  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;,
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCObjectPointerType.html";>ObjCObjectPointerType</a>&gt;
 </pre></td></tr>
 
 
@@ -9300,7 +9325,8 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
   matches "int const *b"
 
 Usable as: Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html";>BlockPointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html";>MemberPointerType</a>&gt;,
-  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;,
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCObjectPointerType.html";>ObjCObjectPointerType</a>&gt;
 </pre></td></tr>
 
 
@@ -9414,6 +9440,36 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCInterfaceDecl.html";>ObjCInterfaceDecl</a>&gt;</td><td
 class="name" onclick="toggle('hasType9')"><a 
name="hasType9Anchor">hasType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt; 
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasType9"><pre>Overloaded to match the 
declaration of the expression's or value
+declaration's type.
+
+In case of a value declaration (for example a variable declaration),
+this resolves one layer of indirection. For example, in the value
+declaration "X x;", cxxRecordDecl(hasName("X")) matches the declaration of
+X, while varDecl(hasType(cxxRecordDecl(hasName("X")))) matches the
+declaration of x.
+
+Example matches x (matcher = expr(hasType(cxxRecordDecl(hasName("X")))))
+            and z (matcher = varDecl(hasType(cxxRecordDecl(hasName("X")))))
+            and friend class X (matcher = friendDecl(hasType("X"))
+            and public virtual X (matcher = cxxBaseSpecifier(hasType(
+                                              cxxRecordDecl(hasName("X"))))
+ class X {};
+ void y(X &amp;x) { x; X z; }
+ class Y { friend class X; };
+ class Z : public virtual X {};
+
+Example matches class Derived
+(matcher = cxxRecordDecl(hasAnyBase(hasType(cxxRecordDecl(hasName("Base"))))))
+class Base {};
+class Derived : Base {};
+
+Usable as: Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Expr.html";>Expr</a>&gt;, 
Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1FriendDecl.html";>FriendDecl</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html";>ValueDecl</a>&gt;,
+Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1CXXBaseSpecifier.html";>CXXBaseSpecifier</a>&gt;
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCInterfaceDecl.html";>ObjCInterfaceDecl</a>&gt;</td><td
 class="name" onclick="toggle('isDerivedFrom1')"><a 
name="isDerivedFrom1Anchor">isDerivedFrom</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html";>NamedDecl</a>&gt;
 Base</td></tr>
 <tr><td colspan="4" class="doc" id="isDerivedFrom1"><pre>Matches C++ classes 
that are directly or indirectly derived from a class
 matching Base, or Objective-C classes that directly or indirectly
@@ -9592,6 +9648,23 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCObjectPointerType.html";>ObjCObjectPointerType</a>&gt;</td><td
 class="name" onclick="toggle('pointee4')"><a 
name="pointee4Anchor">pointee</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td></tr>
+<tr><td colspan="4" class="doc" id="pointee4"><pre>Narrows PointerType (and 
similar) matchers to those where the
+pointee matches a given matcher.
+
+Given
+  int *a;
+  int const *b;
+  float const *f;
+pointerType(pointee(isConstQualified(), isInteger()))
+  matches "int const *b"
+
+Usable as: Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html";>BlockPointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html";>MemberPointerType</a>&gt;,
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;,
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCObjectPointerType.html";>ObjCObjectPointerType</a>&gt;
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCPropertyDecl.html";>ObjCPropertyDecl</a>&gt;</td><td
 class="name" onclick="toggle('hasTypeLoc10')"><a 
name="hasTypeLoc10Anchor">hasTypeLoc</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html";>TypeLoc</a>&gt;
 Inner</td></tr>
 <tr><td colspan="4" class="doc" id="hasTypeLoc10"><pre>Matches if the type 
location of a node matches the inner matcher.
 
@@ -9689,7 +9762,8 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
   matches "int const *b"
 
 Usable as: Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html";>BlockPointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html";>MemberPointerType</a>&gt;,
-  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;,
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCObjectPointerType.html";>ObjCObjectPointerType</a>&gt;
 </pre></td></tr>
 
 
@@ -9858,7 +9932,8 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
   matches "int const *b"
 
 Usable as: Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html";>BlockPointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html";>MemberPointerType</a>&gt;,
-  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1PointerType.html";>PointerType</a>&gt;,
 Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html";>ReferenceType</a>&gt;,
+  Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ObjCObjectPointerType.html";>ObjCObjectPointerType</a>&gt;
 </pre></td></tr>
 
 
diff --git a/clang/docs/tools/dump_ast_matchers.py 
b/clang/docs/tools/dump_ast_matchers.py
index b6f00657ec914..46b7bb718ba08 100755
--- a/clang/docs/tools/dump_ast_matchers.py
+++ b/clang/docs/tools/dump_ast_matchers.py
@@ -106,7 +106,7 @@ def extract_result_types(comment):
 
 
 def strip_doxygen(comment):
-    """Returns the given comment without \-escaped words."""
+    """Returns the given comment w...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/130726
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to