erichkeane added a comment.

In D139705#4215653 <https://reviews.llvm.org/D139705#4215653>, 
@tomasz-kaminski-sonarsource wrote:

> As a downstream, we have concerns with this change. From what I saw it breaks 
> the behavior of the fix-it that wants to remove the whole variable definition 
> (including the initializer). For example, I have unused, that I want to 
> remove variable `x` and unnecessary explicit specialization `temp<double>`:
>
>   template<typename T>
>   T temp = 1;
>   
>   int x  = 10;
>   template<> double temp<double> = 1;
>
> Previously, this could be handled (in case of single variable declaration) by 
> simply removing up the `var->getSourceRange()` with succeeding coma. However, 
> after the change, such code does not work, and in general if 
> `getSourceRange()` is used on `VarDecl` (or even `Decl`), special 
> consideration needs to be taken for the situation when `VarDecl` refers to 
> variable template specialization.
>
> As an alternative, I would suggest introducing an additional function to 
> `VarDecl` (which could be moved up in the hierarchy), that would report a 
> source range that corresponds to //declarator-id//, i.e. for template 
> variable it would include template arguments.

Hmm... I'm being a little dense here I guess, I don't understand what you mean? 
 Does this result in one of our fixits being wrong here?  With the old range, 
wouldn't it have left the `<double>` in that case, and now is removing it?  Or 
what am I missing?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D139705/new/

https://reviews.llvm.org/D139705

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

Reply via email to