@@ -1236,7 +1236,7 @@ <h2 id="decl-matchers">Node Matchers</h2>
1236
1236
#pragma omp parallel
1237
1237
1238
1238
``ompDefaultClause()`` matches ``default(none)``, ``default(shared)``,
1239
- ``default(private)`` and ``default(firstprivate)``
1239
+ `` default(private)`` and ``default(firstprivate)``
1240
1240
</pre></td></tr>
1241
1241
1242
1242
@@ -2036,6 +2036,14 @@ <h2 id="decl-matchers">Node Matchers</h2>
2036
2036
</pre></td></tr>
2037
2037
2038
2038
2039
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('objcStringLiteral0')"><a name="objcStringLiteral0Anchor">objcStringLiteral</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1ObjCStringLiteral.html">ObjCStringLiteral</a>>...</td></tr>
2040
+ <tr><td colspan="4" class="doc" id="objcStringLiteral0"><pre>Matches ObjectiveC String literal expressions.
2041
+
2042
+ Example matches @"abcd"
2043
+ NSString *s = @"abcd";
2044
+ </pre></td></tr>
2045
+
2046
+
2039
2047
<tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('objcThrowStmt0')"><a name="objcThrowStmt0Anchor">objcThrowStmt</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1ObjCAtThrowStmt.html">ObjCAtThrowStmt</a>>...</td></tr>
2040
2048
<tr><td colspan="4" class="doc" id="objcThrowStmt0"><pre>Matches Objective-C statements.
2041
2049
@@ -4716,8 +4724,8 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
4716
4724
</pre></td></tr>
4717
4725
4718
4726
4719
- <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html">OMPDefaultClause</a>></td><td class="name" onclick="toggle('isPrivateKind0 ')"><a name="isPrivateKind0Anchor ">isFirstPrivateKind</a></td><td></td></tr>
4720
- <tr><td colspan="4" class="doc" id="isPrivateKind0 "><pre>Matches if the OpenMP ``default`` clause has ``private `` kind
4727
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html">OMPDefaultClause</a>></td><td class="name" onclick="toggle('isFirstPrivateKind0 ')"><a name="isFirstPrivateKind0Anchor ">isFirstPrivateKind</a></td><td></td></tr>
4728
+ <tr><td colspan="4" class="doc" id="isFirstPrivateKind0 "><pre>Matches if the OpenMP ``default`` clause has ``firstprivate `` kind
4721
4729
specified.
4722
4730
4723
4731
Given
@@ -4729,12 +4737,12 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
4729
4737
#pragma omp parallel default(firstprivate)
4730
4738
4731
4739
``ompDefaultClause(isFirstPrivateKind())`` matches only
4732
- ``default(private )``.
4740
+ ``default(firstprivate )``.
4733
4741
</pre></td></tr>
4734
4742
4735
- <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html">OMPDefaultClause</a>></td><td class="name" onclick="toggle('isFirstPrivateKind0')"><a name="isFirstPrivateKind0Anchor">isFirstPrivateKind</a></td><td></td></tr>
4736
- <tr><td colspan="4" class="doc" id="isFirstPrivateKind0 "><pre>Matches if the OpenMP ``default`` clause has ``firstprivate`` kind
4737
- specified.
4743
+
4744
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html">OMPDefaultClause</a>></td><td class="name" onclick="toggle('isNoneKind0') "><a name="isNoneKind0Anchor">isNoneKind</a></td><td></td></tr>
4745
+ <tr><td colspan="4" class="doc" id="isNoneKind0"><pre>Matches if the OpenMP ``default`` clause has ``none`` kind specified.
4738
4746
4739
4747
Given
4740
4748
@@ -4744,13 +4752,13 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
4744
4752
#pragma omp parallel default(private)
4745
4753
#pragma omp parallel default(firstprivate)
4746
4754
4747
- ``ompDefaultClause(isFirstPrivateKind())`` matches only
4748
- ``default(firstprivate)``.
4755
+ ``ompDefaultClause(isNoneKind())`` matches only ``default(none)``.
4749
4756
</pre></td></tr>
4750
4757
4751
4758
4752
- <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html">OMPDefaultClause</a>></td><td class="name" onclick="toggle('isNoneKind0')"><a name="isNoneKind0Anchor">isNoneKind</a></td><td></td></tr>
4753
- <tr><td colspan="4" class="doc" id="isNoneKind0"><pre>Matches if the OpenMP ``default`` clause has ``none`` kind specified.
4759
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1OMPDefaultClause.html">OMPDefaultClause</a>></td><td class="name" onclick="toggle('isPrivateKind0')"><a name="isPrivateKind0Anchor">isPrivateKind</a></td><td></td></tr>
4760
+ <tr><td colspan="4" class="doc" id="isPrivateKind0"><pre>Matches if the OpenMP ``default`` clause has ``private`` kind
4761
+ specified.
4754
4762
4755
4763
Given
4756
4764
@@ -4760,7 +4768,8 @@ <h2 id="narrowing-matchers">Narrowing Matchers</h2>
4760
4768
#pragma omp parallel default(private)
4761
4769
#pragma omp parallel default(firstprivate)
4762
4770
4763
- ``ompDefaultClause(isNoneKind())`` matches only ``default(none)``.
4771
+ ``ompDefaultClause(isPrivateKind())`` matches only
4772
+ ``default(private)``.
4764
4773
</pre></td></tr>
4765
4774
4766
4775
@@ -7411,8 +7420,9 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
7411
7420
</pre></td></tr>
7412
7421
7413
7422
7414
- <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1ClassTemplateSpecializationDecl.html">ClassTemplateSpecializationDecl</a>></td><td class="name" onclick="toggle('forEachTemplateArgument0')"><a name="forEachTemplateArgument0Anchor">forEachTemplateArgument</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
7415
- <tr><td colspan="4" class="doc" id="forEachTemplateArgument0"><pre>Matches classTemplateSpecialization, templateSpecializationType and functionDecl nodes where the template argument matches the inner matcher.
7423
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1ClassTemplateSpecializationDecl.html">ClassTemplateSpecializationDecl</a>></td><td class="name" onclick="toggle('forEachTemplateArgument0')"><a name="forEachTemplateArgument0Anchor">forEachTemplateArgument</a></td><td>clang::ast_matchers::Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
7424
+ <tr><td colspan="4" class="doc" id="forEachTemplateArgument0"><pre>Matches classTemplateSpecialization, templateSpecializationType and
7425
+ functionDecl nodes where the template argument matches the inner matcher.
7416
7426
This matcher may produce multiple matches.
7417
7427
7418
7428
Given
@@ -7427,10 +7437,8 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
7427
7437
7428
7438
bool B = false;
7429
7439
f(R, B);
7430
-
7431
7440
templateSpecializationType(forEachTemplateArgument(isExpr(expr())))
7432
7441
matches twice, with expr() matching 'R * 2' and 'R * 4'
7433
-
7434
7442
functionDecl(forEachTemplateArgument(refersToType(builtinType())))
7435
7443
matches the specialization f<unsigned, bool> twice, for 'unsigned'
7436
7444
and 'bool'
@@ -8180,6 +8188,31 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
8180
8188
</pre></td></tr>
8181
8189
8182
8190
8191
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('forEachTemplateArgument2')"><a name="forEachTemplateArgument2Anchor">forEachTemplateArgument</a></td><td>clang::ast_matchers::Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
8192
+ <tr><td colspan="4" class="doc" id="forEachTemplateArgument2"><pre>Matches classTemplateSpecialization, templateSpecializationType and
8193
+ functionDecl nodes where the template argument matches the inner matcher.
8194
+ This matcher may produce multiple matches.
8195
+
8196
+ Given
8197
+ template <typename T, unsigned N, unsigned M>
8198
+ struct Matrix {};
8199
+
8200
+ constexpr unsigned R = 2;
8201
+ Matrix<int, R * 2, R * 4> M;
8202
+
8203
+ template <typename T, typename U>
8204
+ void f(T&& t, U&& u) {}
8205
+
8206
+ bool B = false;
8207
+ f(R, B);
8208
+ templateSpecializationType(forEachTemplateArgument(isExpr(expr())))
8209
+ matches twice, with expr() matching 'R * 2' and 'R * 4'
8210
+ functionDecl(forEachTemplateArgument(refersToType(builtinType())))
8211
+ matches the specialization f<unsigned, bool> twice, for 'unsigned'
8212
+ and 'bool'
8213
+ </pre></td></tr>
8214
+
8215
+
8183
8216
<tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('hasAnyBody0')"><a name="hasAnyBody0Anchor">hasAnyBody</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
8184
8217
<tr><td colspan="4" class="doc" id="hasAnyBody0"><pre>Matches a function declaration that has a given body present in the AST.
8185
8218
Note that this matcher matches all the declarations of a function whose
@@ -8227,32 +8260,6 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
8227
8260
</pre></td></tr>
8228
8261
8229
8262
8230
- <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('forEachTemplateArgument1')"><a name="forEachTemplateArgument1Anchor">forEachTemplateArgument</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
8231
- <tr><td colspan="4" class="doc" id="forEachTemplateArgument1"><pre>Matches classTemplateSpecialization, templateSpecializationType and functionDecl nodes where the template argument matches the inner matcher.
8232
- This matcher may produce multiple matches.
8233
-
8234
- Given
8235
- template <typename T, unsigned N, unsigned M>
8236
- struct Matrix {};
8237
-
8238
- constexpr unsigned R = 2;
8239
- Matrix<int, R * 2, R * 4> M;
8240
-
8241
- template <typename T, typename U>
8242
- void f(T&& t, U&& u) {}
8243
-
8244
- bool B = false;
8245
- f(R, B);
8246
-
8247
- templateSpecializationType(forEachTemplateArgument(isExpr(expr())))
8248
- matches twice, with expr() matching 'R * 2' and 'R * 4'
8249
-
8250
- functionDecl(forEachTemplateArgument(refersToType(builtinType())))
8251
- matches the specialization f<unsigned, bool> twice, for 'unsigned'
8252
- and 'bool'
8253
- </pre></td></tr>
8254
-
8255
-
8256
8263
<tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('hasAnyTemplateArgument2')"><a name="hasAnyTemplateArgument2Anchor">hasAnyTemplateArgument</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
8257
8264
<tr><td colspan="4" class="doc" id="hasAnyTemplateArgument2"><pre>Matches classTemplateSpecializations, templateSpecializationType and
8258
8265
functionDecl that have at least one TemplateArgument matching the given
@@ -9477,11 +9484,11 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
9477
9484
</pre></td></tr>
9478
9485
9479
9486
9480
- <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>></td><td class="name" onclick="toggle('forEachTemplateArgument2')"><a name="forEachTemplateArgument2Anchor">forEachTemplateArgument</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
9481
- <tr><td colspan="4" class="doc" id="forEachTemplateArgument2"><pre>Matches classTemplateSpecialization, templateSpecializationType and functionDecl nodes where the template argument matches the inner matcher.
9487
+ <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>></td><td class="name" onclick="toggle('forEachTemplateArgument1')"><a name="forEachTemplateArgument1Anchor">forEachTemplateArgument</a></td><td>clang::ast_matchers::Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
9488
+ <tr><td colspan="4" class="doc" id="forEachTemplateArgument1"><pre>Matches classTemplateSpecialization, templateSpecializationType and
9489
+ functionDecl nodes where the template argument matches the inner matcher.
9482
9490
This matcher may produce multiple matches.
9483
9491
9484
-
9485
9492
Given
9486
9493
template <typename T, unsigned N, unsigned M>
9487
9494
struct Matrix {};
@@ -9494,10 +9501,8 @@ <h2 id="traversal-matchers">AST Traversal Matchers</h2>
9494
9501
9495
9502
bool B = false;
9496
9503
f(R, B);
9497
-
9498
9504
templateSpecializationType(forEachTemplateArgument(isExpr(expr())))
9499
9505
matches twice, with expr() matching 'R * 2' and 'R * 4'
9500
-
9501
9506
functionDecl(forEachTemplateArgument(refersToType(builtinType())))
9502
9507
matches the specialization f<unsigned, bool> twice, for 'unsigned'
9503
9508
and 'bool'
0 commit comments