A clang tool for changing surrouding namespaces of class/function definitions.
authorEric Liu <ioeric@google.com>
Mon, 19 Sep 2016 17:40:32 +0000 (17:40 +0000)
committerEric Liu <ioeric@google.com>
Mon, 19 Sep 2016 17:40:32 +0000 (17:40 +0000)
commit495b211a6c775e6fbc00a1e3a91786f6a880b82e
tree3bab5e17837580d699fbf17c0330d84209dc8dd2
parent6f862b1f073cdf13b18eee8d4baf5b319620ddae
A clang tool for changing surrouding namespaces of class/function definitions.

Summary:
A tool for changing surrouding namespaces of class/function definitions while keeping
references to types in the changed namespace correctly qualified by prepending
namespace specifiers before them.

Example: test.cc
   namespace na {
   class X {};
   namespace nb {
   class Y { X x; };
   } // namespace nb
   } // namespace na

To move the definition of class Y from namespace "na::nb" to "x::y", run:
   clang-change-namespace --old_namespace "na::nb" \
     --new_namespace "x::y" --file_pattern "test.cc" test.cc --

Output:
   namespace na {
   class X {};
   } // namespace na
   namespace x {
   namespace y {
   class Y { na::X x; };
   } // namespace y
   } // namespace x

Reviewers: alexfh, omtcyfz, hokein

Subscribers: mgorny, klimek, djasper, beanz, alexshap, Eugene.Zelenko, cfe-commits

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

llvm-svn: 281918
clang-tools-extra/CMakeLists.txt
clang-tools-extra/change-namespace/CMakeLists.txt [new file with mode: 0644]
clang-tools-extra/change-namespace/ChangeNamespace.cpp [new file with mode: 0644]
clang-tools-extra/change-namespace/ChangeNamespace.h [new file with mode: 0644]
clang-tools-extra/change-namespace/tool/CMakeLists.txt [new file with mode: 0644]
clang-tools-extra/change-namespace/tool/ClangChangeNamespace.cpp [new file with mode: 0644]
clang-tools-extra/test/CMakeLists.txt
clang-tools-extra/test/change-namespace/simple-move.cpp [new file with mode: 0644]
clang-tools-extra/unittests/CMakeLists.txt
clang-tools-extra/unittests/change-namespace/CMakeLists.txt [new file with mode: 0644]
clang-tools-extra/unittests/change-namespace/ChangeNamespaceTests.cpp [new file with mode: 0644]