]> granicus.if.org Git - clang/commitdiff
Add voidType() matcher.
authorSamuel Benzaquen <sbenza@google.com>
Mon, 15 Dec 2014 15:09:22 +0000 (15:09 +0000)
committerSamuel Benzaquen <sbenza@google.com>
Mon, 15 Dec 2014 15:09:22 +0000 (15:09 +0000)
Summary: Add voidType() matcher.

Reviewers: klimek

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D6656

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224250 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/ASTMatchers/ASTMatchers.h
lib/ASTMatchers/Dynamic/Registry.cpp
unittests/ASTMatchers/ASTMatchersTest.cpp

index 9d20c9e0f5e2778296f26b1a583aebdbab8fa55d..b6cddfa6d9f7876041c40afbe3b8859ca7b25bd6 100644 (file)
@@ -3211,6 +3211,18 @@ AST_MATCHER_FUNCTION_P_OVERLOAD(internal::BindableMatcher<TypeLoc>, loc,
       new internal::TypeLocTypeMatcher(InnerMatcher));
 }
 
+/// \brief Matches type \c void.
+///
+/// Given
+/// \code
+///  struct S { void func(); };
+/// \endcode
+/// functionDecl(returns(voidType()))
+///   matches "void func();"
+AST_MATCHER(Type, voidType) {
+  return Node.isVoidType();
+}
+
 /// \brief Matches builtin Types.
 ///
 /// Given
index c0816ace44eba8a3bf96c8b8c6e7f88be87de385..d550a89cad4965ee58f5b0c17246837422b0e924 100644 (file)
@@ -332,6 +332,7 @@ RegistryMaps::RegistryMaps() {
   REGISTER_MATCHER(valueDecl);
   REGISTER_MATCHER(varDecl);
   REGISTER_MATCHER(variableArrayType);
+  REGISTER_MATCHER(voidType);
   REGISTER_MATCHER(whileStmt);
   REGISTER_MATCHER(withInitializer);
 }
index 1304d64a1873b0e28102269ba68dc48f1a03e169..d2e9ee19b2cf1803aeef30043b30c41872ee7036 100644 (file)
@@ -3857,6 +3857,11 @@ TEST(TypeMatching, MatchesTypes) {
   EXPECT_TRUE(matches("struct S {};", qualType().bind("loc")));
 }
 
+TEST(TypeMatching, MatchesVoid) {
+  EXPECT_TRUE(
+      matches("struct S { void func(); };", methodDecl(returns(voidType()))));
+}
+
 TEST(TypeMatching, MatchesArrayTypes) {
   EXPECT_TRUE(matches("int a[] = {2,3};", arrayType()));
   EXPECT_TRUE(matches("int a[42];", arrayType()));