forked from OSchip/llvm-project
Add isDeleted() matcher for FunctionDecl nodes.
Reviewers: klimek Subscribers: klimek, cfe-commits Differential Revision: http://reviews.llvm.org/D4911 llvm-svn: 215714
This commit is contained in:
parent
adbe02435d
commit
8e7f99647d
|
@ -368,7 +368,7 @@ nestedNameSpecifier()
|
||||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('CUDAKernelCallExpr0')"><a name="CUDAKernelCallExpr0Anchor">CUDAKernelCallExpr</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CUDAKernelCallExpr.html">CUDAKernelCallExpr</a>>...</td></tr>
|
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('CUDAKernelCallExpr0')"><a name="CUDAKernelCallExpr0Anchor">CUDAKernelCallExpr</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CUDAKernelCallExpr.html">CUDAKernelCallExpr</a>>...</td></tr>
|
||||||
<tr><td colspan="4" class="doc" id="CUDAKernelCallExpr0"><pre>Matches CUDA kernel call expression.
|
<tr><td colspan="4" class="doc" id="CUDAKernelCallExpr0"><pre>Matches CUDA kernel call expression.
|
||||||
|
|
||||||
Example matches kernel<<<i,j>>>()
|
Example matches,
|
||||||
kernel<<<i,j>>>();
|
kernel<<<i,j>>>();
|
||||||
</pre></td></tr>
|
</pre></td></tr>
|
||||||
|
|
||||||
|
@ -1733,6 +1733,17 @@ Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagDec
|
||||||
</pre></td></tr>
|
</pre></td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isDeleted0')"><a name="isDeleted0Anchor">isDeleted</a></td><td></td></tr>
|
||||||
|
<tr><td colspan="4" class="doc" id="isDeleted0"><pre>Matches deleted function declarations.
|
||||||
|
|
||||||
|
Given:
|
||||||
|
void Func();
|
||||||
|
void DeletedFunc() = delete;
|
||||||
|
functionDecl(isDeleted())
|
||||||
|
matches the declaration of DeletedFunc, but not Func.
|
||||||
|
</pre></td></tr>
|
||||||
|
|
||||||
|
|
||||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isExplicitTemplateSpecialization0')"><a name="isExplicitTemplateSpecialization0Anchor">isExplicitTemplateSpecialization</a></td><td></td></tr>
|
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isExplicitTemplateSpecialization0')"><a name="isExplicitTemplateSpecialization0Anchor">isExplicitTemplateSpecialization</a></td><td></td></tr>
|
||||||
<tr><td colspan="4" class="doc" id="isExplicitTemplateSpecialization0"><pre>Matches explicit template specializations of function, class, or
|
<tr><td colspan="4" class="doc" id="isExplicitTemplateSpecialization0"><pre>Matches explicit template specializations of function, class, or
|
||||||
static member variable template instantiations.
|
static member variable template instantiations.
|
||||||
|
|
|
@ -2373,6 +2373,19 @@ AST_MATCHER(FunctionDecl, isExternC) {
|
||||||
return Node.isExternC();
|
return Node.isExternC();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// \brief Matches deleted function declarations.
|
||||||
|
///
|
||||||
|
/// Given:
|
||||||
|
/// \code
|
||||||
|
/// void Func();
|
||||||
|
/// void DeletedFunc() = delete;
|
||||||
|
/// \endcode
|
||||||
|
/// functionDecl(isDeleted())
|
||||||
|
/// matches the declaration of DeletedFunc, but not Func.
|
||||||
|
AST_MATCHER(FunctionDecl, isDeleted) {
|
||||||
|
return Node.isDeleted();
|
||||||
|
}
|
||||||
|
|
||||||
/// \brief Matches the condition expression of an if statement, for loop,
|
/// \brief Matches the condition expression of an if statement, for loop,
|
||||||
/// or conditional operator.
|
/// or conditional operator.
|
||||||
///
|
///
|
||||||
|
|
|
@ -230,6 +230,7 @@ RegistryMaps::RegistryMaps() {
|
||||||
REGISTER_MATCHER(isConst);
|
REGISTER_MATCHER(isConst);
|
||||||
REGISTER_MATCHER(isConstQualified);
|
REGISTER_MATCHER(isConstQualified);
|
||||||
REGISTER_MATCHER(isDefinition);
|
REGISTER_MATCHER(isDefinition);
|
||||||
|
REGISTER_MATCHER(isDeleted);
|
||||||
REGISTER_MATCHER(isExplicitTemplateSpecialization);
|
REGISTER_MATCHER(isExplicitTemplateSpecialization);
|
||||||
REGISTER_MATCHER(isExpr);
|
REGISTER_MATCHER(isExpr);
|
||||||
REGISTER_MATCHER(isExternC);
|
REGISTER_MATCHER(isExternC);
|
||||||
|
|
|
@ -1528,6 +1528,13 @@ TEST(IsExternC, MatchesExternCFunctionDeclarations) {
|
||||||
EXPECT_TRUE(notMatches("void f() {}", functionDecl(isExternC())));
|
EXPECT_TRUE(notMatches("void f() {}", functionDecl(isExternC())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(IsDeleted, MatchesDeletedFunctionDeclarations) {
|
||||||
|
EXPECT_TRUE(
|
||||||
|
notMatches("void Func();", functionDecl(hasName("Func"), isDeleted())));
|
||||||
|
EXPECT_TRUE(matches("void Func() = delete;",
|
||||||
|
functionDecl(hasName("Func"), isDeleted())));
|
||||||
|
}
|
||||||
|
|
||||||
TEST(HasAnyParameter, DoesntMatchIfInnerMatcherDoesntMatch) {
|
TEST(HasAnyParameter, DoesntMatchIfInnerMatcherDoesntMatch) {
|
||||||
EXPECT_TRUE(notMatches("class Y {}; class X { void x(int) {} };",
|
EXPECT_TRUE(notMatches("class Y {}; class X { void x(int) {} };",
|
||||||
methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));
|
methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));
|
||||||
|
|
Loading…
Reference in New Issue