bcraig added a comment.

In https://reviews.llvm.org/D23279#510178, @omtcyfz wrote:

> In https://reviews.llvm.org/D23279#510167, @alexshap wrote:
>
> > my point is the following: this tool helps perform some operation (changing 
> > the order of fields), 
> >  if smb decides to do it manually - the result will have exactly the same 
> > issue.
>
>
> While creating tools for automated refactoring our goal is essentially to 
> perform a refactoring action **without** breaking codebases.


For clang-tidy changes, I think that is reasonable.  For refactoring, I don't 
think it is reasonably to have that same expectation.  Refactoring an 
un-inlined method from a .cpp file to an inlined method in a .h can break code. 
 Changing a method signature can definitely break code.  Even adding a method 
(during an "extract") can break code that uses C++ template SFINAE to detect 
the existence of members.  Those are all useful refactorings though, despite 
the possibility of breakage.

I would like there to be some heuristic for how much breakage is too much 
breakage though.  I don't have a good recommendation for what that heuristic 
should be.  I do think that an automated tool will do a better job of changing 
field orderings in a non-breaking way than most people would, mostly due to 
initializer lists.


Repository:
  rL LLVM

https://reviews.llvm.org/D23279



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

Reply via email to