[PATCH] D24183: A clang tool for changing surrouding namespaces of class/function definitions.

Haojian Wu via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 15 07:12:18 PDT 2016


hokein added inline comments.

================
Comment at: change-namespace/ChangeNamespace.cpp:200
@@ +199,3 @@
+  while (!NsSplitted.empty()) {
+    // FIXME: consider code style for comments.
+    Code = ("namespace " + NsSplitted.back() + " {\n" + Code +
----------------
Doesn't `formatAndApplyAllReplacements` format the comments for us?

================
Comment at: change-namespace/ChangeNamespace.cpp:213
@@ +212,3 @@
+    llvm::StringRef OldNs, llvm::StringRef NewNs,
+    const std::string &FilePattern,
+    std::map<std::string, tooling::Replacements> *FileToReplacements,
----------------
StringRef.

================
Comment at: change-namespace/ChangeNamespace.cpp:242
@@ +241,3 @@
+  // Match old namespace blocks.
+  Finder->addMatcher(namespaceDecl(hasName(OldNamespace),
+                                   isExpansionInFileMatching(FilePattern))
----------------
Actually, `hasName` matches the name which ends with `OldNamespace`, which doesn't align with the your comments in `OldNamespace` member variable.

================
Comment at: change-namespace/ChangeNamespace.cpp:373
@@ +372,3 @@
+  // code from old namespace to new namespace.
+  // Insertion information is stores in `InsertFwdDecls` and actual
+  // insertion will be performed in `onEndOfTranslationUnit`.
----------------
s/stores/stored

================
Comment at: change-namespace/ChangeNamespace.cpp:400
@@ +399,3 @@
+  assert(Consumed && "Expect OldNS to start with OldNamespace.");
+  (void)Consumed;
+  const std::string NewNs = (NewNamespace + Postfix).str();
----------------
how about `assert(Postfix.consume_front(OldNamespace) && "Expect OldNS to start with OldNamespace.");`?

================
Comment at: change-namespace/ChangeNamespace.cpp:421
@@ +420,3 @@
+
+void ChangeNamespaceTool::fixTypeLoc(
+    const ast_matchers::MatchFinder::MatchResult &Result, SourceLocation Start,
----------------
Could you add some comments describe what stuff does this function do? The name `fixTypeLoc` doesn't explain too much. Looks like this function is replacing the qualifiers in TypeLoc.

================
Comment at: change-namespace/ChangeNamespace.h:43
@@ +42,3 @@
+// FIXME: support moving typedef, enums across namespaces.
+class ChangeNamespaceTool : ast_matchers::MatchFinder::MatchCallback {
+public:
----------------
I think you are missing `public` keyword here, otherwise, it will be private inheritance.

================
Comment at: change-namespace/tool/ClangChangeNamespace.cpp:46
@@ +45,3 @@
+
+cl::OptionCategory ChangeNamespaceCategory("Tool options");
+
----------------
change to "Change namespace"?

================
Comment at: change-namespace/tool/ClangChangeNamespace.cpp:106
@@ +105,3 @@
+    outs() << "============== " << File << " ==============\n";
+    Rewrite.getEditBuffer(ID).write(llvm::outs());
+    outs() << "\n============================================\n";
----------------
Might be add a FIXME?


https://reviews.llvm.org/D24183





More information about the cfe-commits mailing list