Author: d0k Date: Wed Jul 16 09:14:51 2014 New Revision: 213152 URL: http://llvm.org/viewvc/llvm-project?rev=213152&view=rev Log: [ASTMatchers] Add a usingDirectiveDecl matcher.
This matches 'using namespace' declarations. Differential Revision: http://reviews.llvm.org/D4517 Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=213152&r1=213151&r2=213152&view=diff ============================================================================== --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Wed Jul 16 09:14:51 2014 @@ -714,6 +714,18 @@ substNonTypeTemplateParmExpr; /// matches \code using X::x \endcode const internal::VariadicDynCastAllOfMatcher<Decl, UsingDecl> usingDecl; +/// \brief Matches using namespace declarations. +/// +/// Given +/// \code +/// namespace X { int x; } +/// using namespace X; +/// \endcode +/// usingDirectiveDecl() +/// matches \code using namespace X \endcode +const internal::VariadicDynCastAllOfMatcher<Decl, UsingDirectiveDecl> + usingDirectiveDecl; + /// \brief Matches unresolved using value declarations. /// /// Given Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp?rev=213152&r1=213151&r2=213152&view=diff ============================================================================== --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp (original) +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Wed Jul 16 09:14:51 2014 @@ -3038,6 +3038,13 @@ TEST(UsingDeclaration, ThroughUsingDecla declRefExpr(throughUsingDecl(anything())))); } +TEST(UsingDirectiveDeclaration, MatchesUsingNamespace) { + EXPECT_TRUE(matches("namespace X { int x; } using namespace X;", + usingDirectiveDecl())); + EXPECT_FALSE( + matches("namespace X { int x; } using X::x;", usingDirectiveDecl())); +} + TEST(SingleDecl, IsSingleDecl) { StatementMatcher SingleDeclStmt = declStmt(hasSingleDecl(varDecl(hasInitializer(anything())))); _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
