]> granicus.if.org Git - clang/commitdiff
[ASTImporter] Add unit tests for UsingDecl and UsingShadowDecl
authorAleksei Sidorin <a.sidorin@samsung.com>
Sun, 3 Dec 2017 16:04:07 +0000 (16:04 +0000)
committerAleksei Sidorin <a.sidorin@samsung.com>
Sun, 3 Dec 2017 16:04:07 +0000 (16:04 +0000)
Patch by Kareem Khazem!

Differential Revision: https://reviews.llvm.org/D27181

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

unittests/AST/ASTImporterTest.cpp

index 86518e132d411dffee1a7209e67156ece42667fb..64dd4fc9536a1a2be9403eb6951e73d6cf916a33 100644 (file)
@@ -583,5 +583,46 @@ TEST(ImportExpr, ImportCXXPseudoDestructorExpr) {
                      callExpr(has(cxxPseudoDestructorExpr()))))))));
 }
 
+TEST(ImportDecl, ImportUsingDecl) {
+  MatchVerifier<Decl> Verifier;
+  EXPECT_TRUE(
+        testImport(
+          "namespace foo { int bar; }"
+          "int declToImport(){ using foo::bar; }",
+          Lang_CXX, "", Lang_CXX, Verifier,
+          functionDecl(
+            has(
+              compoundStmt(
+                has(
+                  declStmt(
+                    has(
+                      usingDecl()))))))));
+}
+
+/// \brief Matches shadow declarations introduced into a scope by a
+///        (resolved) using declaration.
+///
+/// Given
+/// \code
+///   namespace n { int f; }
+///   namespace declToImport { using n::f; }
+/// \endcode
+/// usingShadowDecl()
+///   matches \code f \endcode
+const internal::VariadicDynCastAllOfMatcher<Decl,
+                                            UsingShadowDecl> usingShadowDecl;
+
+TEST(ImportDecl, ImportUsingShadowDecl) {
+  MatchVerifier<Decl> Verifier;
+  EXPECT_TRUE(
+        testImport(
+          "namespace foo { int bar; }"
+          "namespace declToImport { using foo::bar; }",
+          Lang_CXX, "", Lang_CXX, Verifier,
+          namespaceDecl(
+            has(
+              usingShadowDecl()))));
+}
+
 } // end namespace ast_matchers
 } // end namespace clang