Author: ericwf Date: Fri Oct 16 21:34:44 2015 New Revision: 250602 URL: http://llvm.org/viewvc/llvm-project?rev=250602&view=rev Log: Add an AST node matcher for TemplateTypeParmDecl objects.
Modified: cfe/trunk/docs/LibASTMatchersReference.html cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Modified: cfe/trunk/docs/LibASTMatchersReference.html URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LibASTMatchersReference.html?rev=250602&r1=250601&r2=250602&view=diff ============================================================================== --- cfe/trunk/docs/LibASTMatchersReference.html (original) +++ cfe/trunk/docs/LibASTMatchersReference.html Fri Oct 16 21:34:44 2015 @@ -321,7 +321,7 @@ namespaceDecl() Given template <typename T, int N> struct C {}; -templateArgument() +nonTypeTemplateParmDecl() matches 'N', but not 'T'. </pre></td></tr> @@ -371,6 +371,16 @@ in </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('templateTypeParmDecl0')"><a name="templateTypeParmDecl0Anchor">templateTypeParmDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmDecl.html">TemplateTypeParmDecl</a>>...</td></tr> +<tr><td colspan="4" class="doc" id="templateTypeParmDecl0"><pre>Matches template type parameter declarations. + +Given + template <typename T, int N> struct C {}; +templateTypeParmDecl() + matches 'T', but not 'N'. +</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('translationUnitDecl0')"><a name="translationUnitDecl0Anchor">translationUnitDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TranslationUnitDecl.html">TranslationUnitDecl</a>>...</td></tr> <tr><td colspan="4" class="doc" id="translationUnitDecl0"><pre>Matches the top declaration context. Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=250602&r1=250601&r2=250602&view=diff ============================================================================== --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Fri Oct 16 21:34:44 2015 @@ -418,12 +418,24 @@ const internal::VariadicAllOfMatcher<Tem /// \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 Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp?rev=250602&r1=250601&r2=250602&view=diff ============================================================================== --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp (original) +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Fri Oct 16 21:34:44 2015 @@ -1179,6 +1179,13 @@ TEST(Matcher, NonTypeTemplateParmDecl) { 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;" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits