r250602 - Add an AST node matcher for TemplateTypeParmDecl objects.
Eric Fiselier via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 16 19:34:44 PDT 2015
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;"
More information about the cfe-commits
mailing list