Adding an AST node matcher for NonTypeTemplateParmDecl objects.
llvm-svn: 249341
This commit is contained in:
parent
ae24400424
commit
478a8eb2b6
|
@ -316,6 +316,16 @@ namespaceDecl()
|
|||
</pre></td></tr>
|
||||
|
||||
|
||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('nonTypeTemplateParmDecl0')"><a name="nonTypeTemplateParmDecl0Anchor">nonTypeTemplateParmDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1NonTypeTemplateParmDecl.html">NonTypeTemplateParmDecl</a>>...</td></tr>
|
||||
<tr><td colspan="4" class="doc" id="nonTypeTemplateParmDecl0"><pre>Matches non-type template parameter declarations.
|
||||
|
||||
Given
|
||||
template <typename T, int N> struct C {};
|
||||
templateArgument()
|
||||
matches 'N', but not 'T'.
|
||||
</pre></td></tr>
|
||||
|
||||
|
||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('objcInterfaceDecl0')"><a name="objcInterfaceDecl0Anchor">objcInterfaceDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1ObjCInterfaceDecl.html">ObjCInterfaceDecl</a>>...</td></tr>
|
||||
<tr><td colspan="4" class="doc" id="objcInterfaceDecl0"><pre>Matches Objective-C interface declarations.
|
||||
|
||||
|
@ -2213,7 +2223,7 @@ Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Functi
|
|||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isVariadic0')"><a name="isVariadic0Anchor">isVariadic</a></td><td></td></tr>
|
||||
<tr><td colspan="4" class="doc" id="isVariadic0"><pre>Matches if a function declaration is variadic.
|
||||
|
||||
Example matches f, but not g or h. The function i will not match, event when
|
||||
Example matches f, but not g or h. The function i will not match, even when
|
||||
compiled in C mode.
|
||||
void f(...);
|
||||
void g(int);
|
||||
|
|
|
@ -412,6 +412,18 @@ const internal::VariadicAllOfMatcher<CXXCtorInitializer> cxxCtorInitializer;
|
|||
/// matches 'int' in C<int>.
|
||||
const internal::VariadicAllOfMatcher<TemplateArgument> templateArgument;
|
||||
|
||||
/// \brief Matches non-type template parameter declarations.
|
||||
///
|
||||
/// Given
|
||||
/// \code
|
||||
/// template <typename T, int N> struct C {};
|
||||
/// \endcode
|
||||
/// templateArgument()
|
||||
/// matches 'N', but not 'T'.
|
||||
const internal::VariadicDynCastAllOfMatcher<
|
||||
Decl,
|
||||
NonTypeTemplateParmDecl> nonTypeTemplateParmDecl;
|
||||
|
||||
/// \brief Matches public C++ declarations.
|
||||
///
|
||||
/// Given
|
||||
|
|
|
@ -1172,6 +1172,13 @@ TEST(Matcher, SubstNonTypeTemplateParm) {
|
|||
substNonTypeTemplateParmExpr()));
|
||||
}
|
||||
|
||||
TEST(Matcher, NonTypeTemplateParmDecl) {
|
||||
EXPECT_TRUE(matches("template <int N> void f();",
|
||||
nonTypeTemplateParmDecl(hasName("N"))));
|
||||
EXPECT_TRUE(
|
||||
notMatches("template <typename T> void f();", nonTypeTemplateParmDecl()));
|
||||
}
|
||||
|
||||
TEST(Matcher, UserDefinedLiteral) {
|
||||
EXPECT_TRUE(matches("constexpr char operator \"\" _inc (const char i) {"
|
||||
" return i + 1;"
|
||||
|
|
Loading…
Reference in New Issue