Add matcher for linkage specification
Patch by Jacques Pienaar. llvm-svn: 217135
This commit is contained in:
parent
0f54a0b02a
commit
94ad0bf10d
|
@ -246,6 +246,16 @@ Example matches f
|
|||
</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('linkageSpecDecl0')"><a name="linkageSpecDecl0Anchor">linkageSpecDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LinkageSpecDecl.html">LinkageSpecDecl</a>>...</td></tr>
|
||||
<tr><td colspan="4" class="doc" id="linkageSpecDecl0"><pre>Matches a declaration of a linkage specification.
|
||||
|
||||
Given
|
||||
extern "C" {}
|
||||
linkageSpecDecl()
|
||||
matches "extern "C" {}"
|
||||
</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('methodDecl0')"><a name="methodDecl0Anchor">methodDecl</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>>...</td></tr>
|
||||
<tr><td colspan="4" class="doc" id="methodDecl0"><pre>Matches method declarations.
|
||||
|
||||
|
|
|
@ -156,6 +156,17 @@ anything() {
|
|||
/// \endcode
|
||||
const internal::VariadicAllOfMatcher<Decl> decl;
|
||||
|
||||
/// \brief Matches a declaration of a linkage specification.
|
||||
///
|
||||
/// Given
|
||||
/// \code
|
||||
/// extern "C" {}
|
||||
/// \endcode
|
||||
/// linkageSpecDecl()
|
||||
/// matches "extern "C" {}"
|
||||
const internal::VariadicDynCastAllOfMatcher<Decl, LinkageSpecDecl>
|
||||
linkageSpecDecl;
|
||||
|
||||
/// \brief Matches a declaration of anything that could have a name.
|
||||
///
|
||||
/// Example matches \c X, \c S, the anonymous union type, \c i, and \c U;
|
||||
|
|
|
@ -377,6 +377,11 @@ TEST(DeclarationMatcher, hasDeclContext) {
|
|||
hasName("M"), hasDeclContext(namespaceDecl()))))));
|
||||
}
|
||||
|
||||
TEST(DeclarationMatcher, LinkageSpecification) {
|
||||
EXPECT_TRUE(matches("extern \"C\" { void foo() {}; }", linkageSpecDecl()));
|
||||
EXPECT_TRUE(notMatches("void foo() {};", linkageSpecDecl()));
|
||||
}
|
||||
|
||||
TEST(ClassTemplate, DoesNotMatchClass) {
|
||||
DeclarationMatcher ClassX = classTemplateDecl(hasName("X"));
|
||||
EXPECT_TRUE(notMatches("class X;", ClassX));
|
||||
|
|
Loading…
Reference in New Issue