ioeric added inline comments.

================
Comment at: lib/Tooling/Refactoring/Rename/RenamingAction.cpp:101
+                              std::string NewQualifiedName) {
+  return QualifiedRenameRule(std::move(OldQualifiedName),
+                             std::move(NewQualifiedName));
----------------
hokein wrote:
> arphaman wrote:
> > It might be better to find the declaration (and report error if needed) 
> > during in initiation, and then pass the `ND` to the class. Maybe then both 
> > `RenameOccurrences` and `QualifiedRenameRule` could subclass from one base 
> > class that actually does just this:
> > 
> > ``` 
> > auto USRs = getUSRsForDeclaration(ND, Context.getASTContext());
> >   assert(!USRs.empty());
> >   return tooling::createRenameAtomicChanges(
> >       USRs, NewQualifiedName, 
> > Context.getASTContext().getTranslationUnitDecl());
> > ```
> Done. Introduced a common interface `USRRenameRule`.
`USRRenameRule` doesn't seem to be a very useful abstraction. I think what Alex 
proposed is a base class that implements `createSourceReplacements` which could 
be shared by both `RenameOccurrences` and `QualifiedRenameRule`. Intuitively, 
un-qualified rename is a special case of qualified rename (maybe?), where 
namespace is not changed.


================
Comment at: lib/Tooling/Refactoring/Rename/RenamingAction.cpp:115
+      /*Description=*/
+      "Finds and renames qualified symbols in code with no indexer support",
+  };
----------------
We should also document the behavior when namespace is changed. What would 
happen to symbol definitions and symbol references?


https://reviews.llvm.org/D39332



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to