Author: sbenza Date: Wed Jul 17 09:28:00 2013 New Revision: 186508 URL: http://llvm.org/viewvc/llvm-project?rev=186508&view=rev Log: Add CXXCtorInitializer related matchers to the dynamic matcher registry.
Summary: Now that CXXCtorInitializer is already supported in ASTNodeKind, add CXXCtorInitializer matchers to the dynamic matcher registry. Reviewers: klimek CC: cfe-commits, revane Differential Revision: http://llvm-reviews.chandlerc.com/D1158 Modified: cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp cfe/trunk/unittests/ASTMatchers/Dynamic/RegistryTest.cpp Modified: cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp?rev=186508&r1=186507&r2=186508&view=diff ============================================================================== --- cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp (original) +++ cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp Wed Jul 17 09:28:00 2013 @@ -63,12 +63,6 @@ RegistryMaps::RegistryMaps() { // Need Variant/Parser fixes: // ofKind // - // CXXCtorInitializer support: - // hasAnyConstructorInitializer - // forField - // withInitializer - // isWritten - // // Function overloaded by args: // hasType // callee @@ -149,6 +143,7 @@ RegistryMaps::RegistryMaps() { REGISTER_MATCHER(explicitCastExpr); REGISTER_MATCHER(expr); REGISTER_MATCHER(fieldDecl); + REGISTER_MATCHER(forField); REGISTER_MATCHER(forRangeStmt); REGISTER_MATCHER(forStmt); REGISTER_MATCHER(functionDecl); @@ -157,6 +152,7 @@ RegistryMaps::RegistryMaps() { REGISTER_MATCHER(functionalCastExpr); REGISTER_MATCHER(gotoStmt); REGISTER_MATCHER(hasAnyArgument); + REGISTER_MATCHER(hasAnyConstructorInitializer); REGISTER_MATCHER(hasAnyParameter); REGISTER_MATCHER(hasAnySubstatement); REGISTER_MATCHER(hasAnyUsingShadowDecl); @@ -218,6 +214,7 @@ RegistryMaps::RegistryMaps() { REGISTER_MATCHER(isPublic); REGISTER_MATCHER(isTemplateInstantiation); REGISTER_MATCHER(isVirtual); + REGISTER_MATCHER(isWritten); REGISTER_MATCHER(lValueReferenceType); REGISTER_MATCHER(labelStmt); REGISTER_MATCHER(lambdaExpr); @@ -280,6 +277,7 @@ RegistryMaps::RegistryMaps() { REGISTER_MATCHER(varDecl); REGISTER_MATCHER(variableArrayType); REGISTER_MATCHER(whileStmt); + REGISTER_MATCHER(withInitializer); } RegistryMaps::~RegistryMaps() { Modified: cfe/trunk/unittests/ASTMatchers/Dynamic/RegistryTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/Dynamic/RegistryTest.cpp?rev=186508&r1=186507&r2=186508&view=diff ============================================================================== --- cfe/trunk/unittests/ASTMatchers/Dynamic/RegistryTest.cpp (original) +++ cfe/trunk/unittests/ASTMatchers/Dynamic/RegistryTest.cpp Wed Jul 17 09:28:00 2013 @@ -173,6 +173,17 @@ TEST_F(RegistryTest, TypeTraversal) { EXPECT_TRUE(matches("int b[7];", M)); } +TEST_F(RegistryTest, CXXCtorInitializer) { + Matcher<Decl> CtorDecl = constructMatcher( + "constructorDecl", + constructMatcher("hasAnyConstructorInitializer", + constructMatcher("forField", hasName("foo")))) + .getTypedMatcher<Decl>(); + EXPECT_TRUE(matches("struct Foo { Foo() : foo(1) {} int foo; };", CtorDecl)); + EXPECT_FALSE(matches("struct Foo { Foo() {} int foo; };", CtorDecl)); + EXPECT_FALSE(matches("struct Foo { Foo() : bar(1) {} int bar; };", CtorDecl)); +} + TEST_F(RegistryTest, Errors) { // Incorrect argument count. OwningPtr<Diagnostics> Error(new Diagnostics()); _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
