[ASTMatchers] Add booleanType() matcher.

llvm-svn: 256278
This commit is contained in:
Samuel Benzaquen 2015-12-22 20:06:40 +00:00
parent a61deb249b
commit bd3232af03
3 changed files with 20 additions and 0 deletions

View File

@ -3762,6 +3762,18 @@ AST_MATCHER_FUNCTION_P_OVERLOAD(internal::BindableMatcher<TypeLoc>, loc,
new internal::TypeLocTypeMatcher(InnerMatcher));
}
/// \brief Matches type \c bool.
///
/// Given
/// \code
/// struct S { bool func(); };
/// \endcode
/// functionDecl(returns(boolType()))
/// matches "bool func();"
AST_MATCHER(Type, booleanType) {
return Node.isBooleanType();
}
/// \brief Matches type \c void.
///
/// Given

View File

@ -108,6 +108,7 @@ RegistryMaps::RegistryMaps() {
REGISTER_MATCHER(autoType);
REGISTER_MATCHER(binaryOperator);
REGISTER_MATCHER(blockPointerType);
REGISTER_MATCHER(booleanType);
REGISTER_MATCHER(breakStmt);
REGISTER_MATCHER(builtinType);
REGISTER_MATCHER(callExpr);

View File

@ -4146,6 +4146,13 @@ TEST(TypeMatching, MatchesTypes) {
EXPECT_TRUE(matches("struct S {};", qualType().bind("loc")));
}
TEST(TypeMatching, MatchesBool) {
EXPECT_TRUE(matches("struct S { bool func(); };",
cxxMethodDecl(returns(booleanType()))));
EXPECT_TRUE(notMatches("struct S { void func(); };",
cxxMethodDecl(returns(booleanType()))));
}
TEST(TypeMatching, MatchesVoid) {
EXPECT_TRUE(matches("struct S { void func(); };",
cxxMethodDecl(returns(voidType()))));