Author: ioeric Date: Mon Dec 5 05:17:04 2016 New Revision: 288662 URL: http://llvm.org/viewvc/llvm-project?rev=288662&view=rev Log: [change-namespace] get changing namespace to global correct.
Modified: clang-tools-extra/trunk/change-namespace/ChangeNamespace.cpp clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp Modified: clang-tools-extra/trunk/change-namespace/ChangeNamespace.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/change-namespace/ChangeNamespace.cpp?rev=288662&r1=288661&r2=288662&view=diff ============================================================================== --- clang-tools-extra/trunk/change-namespace/ChangeNamespace.cpp (original) +++ clang-tools-extra/trunk/change-namespace/ChangeNamespace.cpp Mon Dec 5 05:17:04 2016 @@ -210,7 +210,8 @@ std::string wrapCodeInNamespace(StringRe if (Code.back() != '\n') Code += "\n"; llvm::SmallVector<StringRef, 4> NsSplitted; - NestedNs.split(NsSplitted, "::"); + NestedNs.split(NsSplitted, "::", /*MaxSplit=*/-1, + /*KeepEmpty=*/false); while (!NsSplitted.empty()) { // FIXME: consider code style for comments. Code = ("namespace " + NsSplitted.back() + " {\n" + Code + @@ -272,7 +273,9 @@ void ChangeNamespaceTool::registerMatche // be "a::b". Declarations in this namespace will not be visible in the new // namespace. If DiffOldNamespace is empty, Prefix will be a invalid name "-". llvm::SmallVector<llvm::StringRef, 4> DiffOldNsSplitted; - llvm::StringRef(DiffOldNamespace).split(DiffOldNsSplitted, "::"); + llvm::StringRef(DiffOldNamespace) + .split(DiffOldNsSplitted, "::", /*MaxSplit=*/-1, + /*KeepEmpty=*/false); std::string Prefix = "-"; if (!DiffOldNsSplitted.empty()) Prefix = (StringRef(FullOldNs).drop_back(DiffOldNamespace.size()) + Modified: clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp?rev=288662&r1=288661&r2=288662&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp (original) +++ clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp Mon Dec 5 05:17:04 2016 @@ -1114,6 +1114,42 @@ TEST_F(ChangeNamespaceTest, DerivedClass EXPECT_EQ(format(Expected), runChangeNamespaceOnCode(Code)); } +TEST_F(ChangeNamespaceTest, MoveToGlobalNamespace) { + NewNamespace = ""; + std::string Code = "namespace na {\n" + "class C_A {};\n" + "namespace nc {\n" + "class C_C {};" + "} // namespace nc\n" + "namespace nb {\n" + "class C_X {\n" + "public:\n" + " C_A a;\n" + " nc::C_C c;\n" + "};\n" + "class C_Y {\n" + " C_X x;\n" + "};\n" + "} // namespace nb\n" + "} // namespace na\n"; + std::string Expected = "namespace na {\n" + "class C_A {};\n" + "namespace nc {\n" + "class C_C {};" + "} // namespace nc\n" + "\n" + "} // namespace na\n" + "class C_X {\n" + "public:\n" + " na::C_A a;\n" + " na::nc::C_C c;\n" + "};\n" + "class C_Y {\n" + " C_X x;\n" + "};\n"; + EXPECT_EQ(format(Expected), runChangeNamespaceOnCode(Code)); +} + } // anonymous namespace } // namespace change_namespace } // namespace clang _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits