summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp')
-rw-r--r--clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp76
1 files changed, 70 insertions, 6 deletions
diff --git a/clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp b/clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp
index edd5e1388f6..87698ff7704 100644
--- a/clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp
+++ b/clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp
@@ -822,22 +822,22 @@ TEST_F(ChangeNamespaceTest, UsingShadowDeclInFunction) {
}
TEST_F(ChangeNamespaceTest, UsingShadowDeclInClass) {
- std::string Code = "namespace na { class C_A {};\n }\n"
+ std::string Code = "namespace na { class C_A {}; }\n"
"namespace na {\n"
"namespace nb {\n"
"void f() {\n"
- " using na::CA;\n"
- " CA ca;\n"
+ " using ::na::C_A;\n"
+ " C_A ca;\n"
"}\n"
"} // namespace nb\n"
"} // namespace na\n";
- std::string Expected = "namespace na { class C_A {};\n }\n"
+ std::string Expected = "namespace na { class C_A {}; }\n"
"\n"
"namespace x {\n"
"namespace y {\n"
"void f() {\n"
- " using na::CA;\n"
- " CA ca;\n"
+ " using ::na::C_A;\n"
+ " C_A ca;\n"
"}\n"
"} // namespace y\n"
"} // namespace x\n";
@@ -941,6 +941,70 @@ TEST_F(ChangeNamespaceTest, UsingDeclInTheParentOfOldNamespace) {
EXPECT_EQ(format(Expected), runChangeNamespaceOnCode(Code));
}
+TEST_F(ChangeNamespaceTest, UsingAliasDecl) {
+ std::string Code =
+ "namespace nx { namespace ny { class X {}; } }\n"
+ "namespace na {\n"
+ "namespace nb {\n"
+ "using Y = nx::ny::X;\n"
+ "void f() { Y y; }\n"
+ "} // namespace nb\n"
+ "} // namespace na\n";
+
+ std::string Expected = "namespace nx { namespace ny { class X {}; } }\n"
+ "\n"
+ "namespace x {\n"
+ "namespace y {\n"
+ "using Y = nx::ny::X;\n"
+ "void f() { Y y; }\n"
+ "} // namespace y\n"
+ "} // namespace x\n";
+ EXPECT_EQ(format(Expected), runChangeNamespaceOnCode(Code));
+}
+
+TEST_F(ChangeNamespaceTest, UsingAliasDeclInGlobal) {
+ std::string Code =
+ "namespace nx { namespace ny { class X {}; } }\n"
+ "using Y = nx::ny::X;\n"
+ "namespace na {\n"
+ "namespace nb {\n"
+ "void f() { Y y; }\n"
+ "} // namespace nb\n"
+ "} // namespace na\n";
+
+ std::string Expected = "namespace nx { namespace ny { class X {}; } }\n"
+ "using Y = nx::ny::X;\n"
+ "\n"
+ "namespace x {\n"
+ "namespace y {\n"
+ "void f() { Y y; }\n"
+ "} // namespace y\n"
+ "} // namespace x\n";
+ EXPECT_EQ(format(Expected), runChangeNamespaceOnCode(Code));
+}
+
+
+TEST_F(ChangeNamespaceTest, TypedefAliasDecl) {
+ std::string Code =
+ "namespace nx { namespace ny { class X {}; } }\n"
+ "namespace na {\n"
+ "namespace nb {\n"
+ "typedef nx::ny::X Y;\n"
+ "void f() { Y y; }\n"
+ "} // namespace nb\n"
+ "} // namespace na\n";
+
+ std::string Expected = "namespace nx { namespace ny { class X {}; } }\n"
+ "\n"
+ "namespace x {\n"
+ "namespace y {\n"
+ "typedef nx::ny::X Y;\n"
+ "void f() { Y y; }\n"
+ "} // namespace y\n"
+ "} // namespace x\n";
+ EXPECT_EQ(format(Expected), runChangeNamespaceOnCode(Code));
+}
+
} // anonymous namespace
} // namespace change_namespace
} // namespace clang
OpenPOWER on IntegriCloud