\r
Given\r
template <typename T, int N> struct C {};\r
-templateArgument()\r
+nonTypeTemplateParmDecl()\r
matches 'N', but not 'T'.\r
</pre></td></tr>\r
\r
</pre></td></tr>\r
\r
\r
+<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('templateTypeParmDecl0')"><a name="templateTypeParmDecl0Anchor">templateTypeParmDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmDecl.html">TemplateTypeParmDecl</a>>...</td></tr>\r
+<tr><td colspan="4" class="doc" id="templateTypeParmDecl0"><pre>Matches template type parameter declarations.\r
+\r
+Given\r
+ template <typename T, int N> struct C {};\r
+templateTypeParmDecl()\r
+ matches 'T', but not 'N'.\r
+</pre></td></tr>\r
+\r
+\r
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('translationUnitDecl0')"><a name="translationUnitDecl0Anchor">translationUnitDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TranslationUnitDecl.html">TranslationUnitDecl</a>>...</td></tr>\r
<tr><td colspan="4" class="doc" id="translationUnitDecl0"><pre>Matches the top declaration context.\r
\r
/// \code
/// template <typename T, int N> struct C {};
/// \endcode
-/// templateArgument()
+/// nonTypeTemplateParmDecl()
/// matches 'N', but not 'T'.
const internal::VariadicDynCastAllOfMatcher<
Decl,
NonTypeTemplateParmDecl> nonTypeTemplateParmDecl;
+/// \brief Matches template type parameter declarations.
+///
+/// Given
+/// \code
+/// template <typename T, int N> struct C {};
+/// \endcode
+/// templateTypeParmDecl()
+/// matches 'T', but not 'N'.
+const internal::VariadicDynCastAllOfMatcher<
+ Decl,
+ TemplateTypeParmDecl> templateTypeParmDecl;
+
/// \brief Matches public C++ declarations.
///
/// Given
notMatches("template <typename T> void f();", nonTypeTemplateParmDecl()));
}
+TEST(Matcher, templateTypeParmDecl) {
+ EXPECT_TRUE(matches("template <typename T> void f();",
+ templateTypeParmDecl(hasName("T"))));
+ EXPECT_TRUE(
+ notMatches("template <int N> void f();", templateTypeParmDecl()));
+}
+
TEST(Matcher, UserDefinedLiteral) {
EXPECT_TRUE(matches("constexpr char operator \"\" _inc (const char i) {"
" return i + 1;"