llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Baranov Victor (vbvictor)

<details>
<summary>Changes</summary>

With this change, `dump_ast_matchers.py` script no longer need to probe network 
to search for classes.
This allows the script to run offline which is needed for 
https://github.com/llvm/llvm-project/pull/165472.

---

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


2 Files Affected:

- (modified) clang/docs/LibASTMatchersReference.html (+299-124) 
- (modified) clang/docs/tools/dump_ast_matchers.py (+24-27) 


``````````diff
diff --git a/clang/docs/LibASTMatchersReference.html 
b/clang/docs/LibASTMatchersReference.html
index 679463fb4b01a..7e0bbbcb18938 100644
--- a/clang/docs/LibASTMatchersReference.html
+++ b/clang/docs/LibASTMatchersReference.html
@@ -1287,6 +1287,14 @@ <h2 id="decl-matchers">Node Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPClause.html";>OMPClause</a>&gt;</td><td
 class="name" onclick="toggle('ompCountsClause0')"><a 
name="ompCountsClause0Anchor">ompCountsClause</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPCountsClause.html";>OMPCountsClause</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="ompCountsClause0"><pre>Matches OpenMP 
``counts`` clause used by ``#pragma omp split``.
+
+Given ``#pragma omp split counts(1, 2, omp_fill)``, ``ompCountsClause()``
+matches the ``counts`` clause node.
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPClause.html";>OMPClause</a>&gt;</td><td
 class="name" onclick="toggle('ompDefaultClause0')"><a 
name="ompDefaultClause0Anchor">ompDefaultClause</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html";>OMPDefaultClause</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="ompDefaultClause0"><pre>Matches OpenMP 
``default`` clause.
 
@@ -1303,6 +1311,28 @@ <h2 id="decl-matchers">Node Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPClause.html";>OMPClause</a>&gt;</td><td
 class="name" onclick="toggle('ompFromClause0')"><a 
name="ompFromClause0Anchor">ompFromClause</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPFromClause.html";>OMPFromClause</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="ompFromClause0"><pre>Matches OpenMP 
``from`` clause.
+
+Given
+
+  #pragma omp target update from(a)
+
+``ompFromClause()`` matches ``from(a)``.
+</pre></td></tr>
+
+
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPClause.html";>OMPClause</a>&gt;</td><td
 class="name" onclick="toggle('ompToClause0')"><a 
name="ompToClause0Anchor">ompToClause</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPToClause.html";>OMPToClause</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="ompToClause0"><pre>Matches OpenMP ``to`` 
clause.
+
+Given
+
+  #pragma omp target update to(a)
+
+``ompToClause()`` matches ``to(a)``.
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;</td><td
 class="name" onclick="toggle('qualType0')"><a 
name="qualType0Anchor">qualType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="qualType0"><pre>Matches QualTypes in the 
clang AST.
 </pre></td></tr>
@@ -2224,7 +2254,7 @@ <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('ompExecutableDirective0')"><a 
name="ompExecutableDirective0Anchor">ompExecutableDirective</a></td><td>Matcher&lt;OMPExecutableDirective&gt;...</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('ompExecutableDirective0')"><a 
name="ompExecutableDirective0Anchor">ompExecutableDirective</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPExecutableDirective.html";>OMPExecutableDirective</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="ompExecutableDirective0"><pre>Matches any 
``#pragma omp`` executable directive.
 
 Given
@@ -2238,6 +2268,31 @@ <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('ompSplitDirective0')"><a 
name="ompSplitDirective0Anchor">ompSplitDirective</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPSplitDirective.html";>OMPSplitDirective</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="ompSplitDirective0"><pre>Matches any 
``#pragma omp split`` executable directive.
+
+Given
+
+  #pragma omp split counts(2, omp_fill)
+  for (int i = 0; i &lt; n; ++i) {}
+
+``ompSplitDirective()`` matches the split directive.
+</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('ompTargetUpdateDirective0')"><a 
name="ompTargetUpdateDirective0Anchor">ompTargetUpdateDirective</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1OMPTargetUpdateDirective.html";>OMPTargetUpdateDirective</a>&gt;...</td></tr>
+<tr><td colspan="4" class="doc" id="ompTargetUpdateDirective0"><pre>Matches 
any ``#pragma omp target update`` executable directive.
+
+Given
+
+  #pragma omp target update from(a)
+  #pragma omp target update to(b)
+
+``ompTargetUpdateDirective()`` matches both ``omp target update from(a)``
+and ``omp target update to(b)``.
+</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('opaqueValueExpr0')"><a 
name="opaqueValueExpr0Anchor">opaqueValueExpr</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1OpaqueValueExpr.html";>OpaqueValueExpr</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="opaqueValueExpr0"><pre>Matches opaque 
value expressions. They are used as helpers
 to reference another expressions and can be met
@@ -2543,7 +2598,7 @@ <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('autoType0')"><a 
name="autoType0Anchor">autoType</a></td><td>Matcher&lt;AutoType&gt;...</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('autoType0')"><a 
name="autoType0Anchor">autoType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1AutoType.html";>AutoType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="autoType0"><pre>Matches types nodes 
representing C++11 auto types.
 
 Given:
@@ -2613,7 +2668,7 @@ <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('decltypeType0')"><a 
name="decltypeType0Anchor">decltypeType</a></td><td>Matcher&lt;DecltypeType&gt;...</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('decltypeType0')"><a 
name="decltypeType0Anchor">decltypeType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DecltypeType.html";>DecltypeType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="decltypeType0"><pre>Matches types nodes 
representing C++11 decltype(&lt;expr&gt;) types.
 
 Given:
@@ -2625,7 +2680,7 @@ <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('deducedTemplateSpecializationType0')"><a 
name="deducedTemplateSpecializationType0Anchor">deducedTemplateSpecializationType</a></td><td>Matcher&lt;DeducedTemplateSpecializationType&gt;...</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
 template types.
 
@@ -2639,7 +2694,7 @@ <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;DependentNameType&gt;...</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
@@ -2676,7 +2731,7 @@ <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('enumType0')"><a 
name="enumType0Anchor">enumType</a></td><td>Matcher&lt;EnumType&gt;...</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('enumType0')"><a 
name="enumType0Anchor">enumType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="enumType0"><pre>Matches enum types.
 
 Given
@@ -2726,7 +2781,7 @@ <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('injectedClassNameType0')"><a 
name="injectedClassNameType0Anchor">injectedClassNameType</a></td><td>Matcher&lt;InjectedClassNameType&gt;...</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('injectedClassNameType0')"><a 
name="injectedClassNameType0Anchor">injectedClassNameType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="injectedClassNameType0"><pre>Matches 
injected class name types.
 
 Example matches S s, but not S&lt;T&gt; s.
@@ -2838,7 +2893,7 @@ <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('recordType0')"><a 
name="recordType0Anchor">recordType</a></td><td>Matcher&lt;RecordType&gt;...</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('recordType0')"><a 
name="recordType0Anchor">recordType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="recordType0"><pre>Matches record types 
(e.g. structs, classes).
 
 Given
@@ -2869,7 +2924,7 @@ <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('substTemplateTypeParmType0')"><a 
name="substTemplateTypeParmType0Anchor">substTemplateTypeParmType</a></td><td>Matcher&lt;SubstTemplateTypeParmType&gt;...</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('substTemplateTypeParmType0')"><a 
name="substTemplateTypeParmType0Anchor">substTemplateTypeParmType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1SubstTemplateTypeParmType.html";>SubstTemplateTypeParmType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="substTemplateTypeParmType0"><pre>Matches 
types that represent the result of substituting a type for a
 template type parameter.
 
@@ -2883,7 +2938,7 @@ <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('tagType0')"><a 
name="tagType0Anchor">tagType</a></td><td>Matcher&lt;TagType&gt;...</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('tagType0')"><a 
name="tagType0Anchor">tagType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="tagType0"><pre>Matches tag types (record 
and enum types).
 
 Given
@@ -2898,7 +2953,7 @@ <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('templateSpecializationType0')"><a 
name="templateSpecializationType0Anchor">templateSpecializationType</a></td><td>Matcher&lt;TemplateSpecializationType&gt;...</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('templateSpecializationType0')"><a 
name="templateSpecializationType0Anchor">templateSpecializationType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="templateSpecializationType0"><pre>Matches 
template specialization types.
 
 Given
@@ -2913,7 +2968,7 @@ <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('templateTypeParmType0')"><a 
name="templateTypeParmType0Anchor">templateTypeParmType</a></td><td>Matcher&lt;TemplateTypeParmType&gt;...</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('templateTypeParmType0')"><a 
name="templateTypeParmType0Anchor">templateTypeParmType</a></td><td>Matcher&lt;<a
 
href="https://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="templateTypeParmType0"><pre>Matches 
template type parameter types.
 
 Example matches T, but not int.
@@ -2937,7 +2992,7 @@ <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('unaryTransformType0')"><a 
name="unaryTransformType0Anchor">unaryTransformType</a></td><td>Matcher&lt;UnaryTransformType&gt;...</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('unaryTransformType0')"><a 
name="unaryTransformType0Anchor">unaryTransformType</a></td><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1UnaryTransformType.html";>UnaryTransformType</a>&gt;...</td></tr>
 <tr><td colspan="4" class="doc" id="unaryTransformType0"><pre>Matches types 
nodes representing unary type transformations.
 
 Given:
@@ -4170,6 +4225,20 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1ClassTemplateSpecializationDecl.html";>ClassTemplateSpecializationDecl</a>&gt;</td><td
 class="name" onclick="toggle('templateArgumentLocCountIs0')"><a 
name="templateArgumentLocCountIs0Anchor">templateArgumentLocCountIs</a></td><td>unsigned
 MatchCount</td></tr>
+<tr><td colspan="4" class="doc" id="templateArgumentLocCountIs0"><pre>Matches 
template specialization `TypeLoc`s, class template specializations,
+variable template specializations, unresolved overloads, and function
+template specializations that have exactly `MatchCount` number of
+`TemplateArgumentLoc`s.
+
+Given
+  template&lt;typename T&gt; class A {};
+  A&lt;int&gt; a;
+varDecl(hasTypeLoc(templateSpecializationTypeLoc(templateArgumentLocCountIs(1))))
+  matches `A&lt;int&gt; a`.
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html";>CompoundStmt</a>&gt;</td><td
 class="name" onclick="toggle('statementCountIs0')"><a 
name="statementCountIs0Anchor">statementCountIs</a></td><td>unsigned N</td></tr>
 <tr><td colspan="4" class="doc" id="statementCountIs0"><pre>Checks that a 
compound statement contains a specific number of
 child statements.
@@ -4199,6 +4268,20 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;</td><td
 class="name" onclick="toggle('templateArgumentLocCountIs3')"><a 
name="templateArgumentLocCountIs3Anchor">templateArgumentLocCountIs</a></td><td>unsigned
 MatchCount</td></tr>
+<tr><td colspan="4" class="doc" id="templateArgumentLocCountIs3"><pre>Matches 
template specialization `TypeLoc`s, class template specializations,
+variable template specializations, unresolved overloads, and function
+template specializations that have exactly `MatchCount` number of
+`TemplateArgumentLoc`s.
+
+Given
+  template&lt;typename T&gt; class A {};
+  A&lt;int&gt; a;
+varDecl(hasTypeLoc(templateSpecializationTypeLoc(templateArgumentLocCountIs(1))))
+  matches `A&lt;int&gt; a`.
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html";>DeclStmt</a>&gt;</td><td
 class="name" onclick="toggle('declCountIs0')"><a 
name="declCountIs0Anchor">declCountIs</a></td><td>unsigned N</td></tr>
 <tr><td colspan="4" class="doc" id="declCountIs0"><pre>Matches declaration 
statements that contain a specific number of
 declarations.
@@ -4441,7 +4524,7 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;DependentNameType&gt;</td><td class="name" 
onclick="toggle('hasDependentName1')"><a 
name="hasDependentName1Anchor">hasDependentName</a></td><td>std::string 
N</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
 
@@ -4926,6 +5009,20 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html";>FunctionDecl</a>&gt;</td><td
 class="name" onclick="toggle('templateArgumentLocCountIs2')"><a 
name="templateArgumentLocCountIs2Anchor">templateArgumentLocCountIs</a></td><td>unsigned
 MatchCount</td></tr>
+<tr><td colspan="4" class="doc" id="templateArgumentLocCountIs2"><pre>Matches 
template specialization `TypeLoc`s, class template specializations,
+variable template specializations, unresolved overloads, and function
+template specializations that have exactly `MatchCount` number of
+`TemplateArgumentLoc`s.
+
+Given
+  template&lt;typename T&gt; class A {};
+  A&lt;int&gt; a;
+varDecl(hasTypeLoc(templateSpecializationTypeLoc(templateArgumentLocCountIs(1))))
+  matches `A&lt;int&gt; a`.
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="https://clang.llvm.org/doxygen/classclang_1_1FunctionProtoType.html";>FunctionProtoType</a>&gt;</td><td
 class="name" onclick="toggle('hasDynamicExceptionSpec1')"><a 
name="hasDynamicExceptionSpec1Anchor">hasDynamicExceptionSpec</a></td><td></td></tr>
 <tr><td colspan="4" class="doc" id="hasDynamicExceptionSpec1"><pre>Matches 
functions that have a dynamic exception specification.
 
@@ -5284,7 +5381,7 @@...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/203784
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to