forked from OSchip/llvm-project
Adding new AST matcher: isConstexpr
It matches constexpr variable and function declarations. llvm-svn: 238016
This commit is contained in:
parent
575f7d4f1c
commit
b37b0ed239
|
@ -2709,6 +2709,23 @@ AST_MATCHER(FunctionDecl, isDeleted) {
|
|||
return Node.isDeleted();
|
||||
}
|
||||
|
||||
/// \brief Matches constexpr variable and function declarations.
|
||||
///
|
||||
/// Given:
|
||||
/// \code
|
||||
/// constexpr int foo = 42;
|
||||
/// constexpr int bar();
|
||||
/// \endcode
|
||||
/// varDecl(isConstexpr())
|
||||
/// matches the declaration of foo.
|
||||
/// functionDecl(isConstexpr())
|
||||
/// matches the declaration of bar.
|
||||
AST_POLYMORPHIC_MATCHER(isConstexpr,
|
||||
AST_POLYMORPHIC_SUPPORTED_TYPES(VarDecl,
|
||||
FunctionDecl)) {
|
||||
return Node.isConstexpr();
|
||||
}
|
||||
|
||||
/// \brief Matches the condition expression of an if statement, for loop,
|
||||
/// or conditional operator.
|
||||
///
|
||||
|
|
|
@ -1595,6 +1595,13 @@ TEST(IsDeleted, MatchesDeletedFunctionDeclarations) {
|
|||
functionDecl(hasName("Func"), isDeleted())));
|
||||
}
|
||||
|
||||
TEST(isConstexpr, MatchesConstexprDeclarations) {
|
||||
EXPECT_TRUE(matches("constexpr int foo = 42;",
|
||||
varDecl(hasName("foo"), isConstexpr())));
|
||||
EXPECT_TRUE(matches("constexpr int bar();",
|
||||
functionDecl(hasName("bar"), isConstexpr())));
|
||||
}
|
||||
|
||||
TEST(HasAnyParameter, DoesntMatchIfInnerMatcherDoesntMatch) {
|
||||
EXPECT_TRUE(notMatches("class Y {}; class X { void x(int) {} };",
|
||||
methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));
|
||||
|
|
Loading…
Reference in New Issue