[PATCH] D36156: [rename] Introduce symbol occurrences

Alex Lorenz via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 14 08:08:44 PDT 2017


arphaman marked an inline comment as done.
arphaman added inline comments.


================
Comment at: lib/Tooling/Refactoring/Rename/USRLocFinder.cpp:398
   Visitor.TraverseDecl(Decl);
-  return Visitor.getLocationsFound();
+  return std::move(Visitor.getOccurrences());
 }
----------------
hokein wrote:
> arphaman wrote:
> > hokein wrote:
> > > I think just returning `Visitor.getOccurrences()` is sufficient -- compiler can handle it well, also using std::move would prevent copy elision.
> > I'm returning by non-const reference from `getOccurrences`, so the compiler copies by default. I have to move either here or return by value from `getOccurrences` and move there. We also have warnings for redundant `std::move`, and they don't fire here.
> Ok, didn't notice that `getOccurance()` returns non-const reference.
> 
> I think the method `getOccurances` may have potential effect -- the clients could change the Occurences member variable of USRLocFindingASTVisitor, after getting the non-const reference.
> 
> Another option is to rename `getOccurances` to `takeOccurrences` and return by value:
> 
> ```
> SymbolOccurrences takeOccurrences() { return std::move(Occurrences); }
> ```
> 
> What do you think?
Yeah, `takeOccurrences` would be better I think. I'll update.


Repository:
  rL LLVM

https://reviews.llvm.org/D36156





More information about the cfe-commits mailing list