courbet added a comment.

In D128807#3622779 <https://reviews.llvm.org/D128807#3622779>, @ymandel wrote:
> In D128807#3622727 <https://reviews.llvm.org/D128807#3622727>, @li.zhe.hua 
> wrote:
>
>> - A note being a part of an edit seems weird at best. An `ASTEdit` and 
>> `Edit` are fragments of a greater, logical change. That a note should 
>> semantically be associated with the insertion of an open paren "`(`" but not 
>> the close paren "`)`" seems odd to me.
>> - The note takes the location of the edit it is attached to. Perhaps that 
>> could be of some convenience when those coincide, but I don't believe that 
>> should necessarily be the case. I'm imagining notes could be used to point 
>> out //other// parts of the source that are interesting.
>
> Eric, these are great points. Originally, the idea for note (IIRC) came from 
> the observation that sometimes a single match will generate edits in multiple 
> locations, each which deserve a different diagnostic note (perhaps the same 
> text, but appearing at the respective location). The intent was *not* to 
> allow noting the insertion of paren, for example.  So, I think it was a 
> mistake. Yes, sometimes an ASTEdit is a coherent change, but sometimes (as 
> the paren example demonstrates) its just a fragment.
>
> So, from my original intent, I think that we'd just want to support multiple 
> notes per rule, with each keyed on a source range.
>
> Clement -- what was your intended application? That may help clarify.

Thank for the comments.

For my particular case, I just need multiple notes per rule. I don't need them 
to be associated to a particular edit (and in that very particular case, I 
don't even need a source location).
Right now I have a check that is implemented as a transformer check. I want to 
emit an extra note. However, because `transformer` do not support notes I will 
have to rewrite the check to a traditional non-`transformer` one, which is a 
large change and could be a one-liner if `transformer` supported notes.

In terms of the overall design requirements, non-`transformer` checks can have 
multiple notes per rule, associated to a source location (and multiple checks 
are using the note location to point to somewhere else in the code, so that is 
a required feature if we want to be as powerful as the original clang-tidies, 
which I think we do). Notes cannot be associated to a particular `FixitHint`, 
and I'm not sure whether that's useful.

I  went with the design in this patch (notes associated to edits) because:

- it looked like associating a note with an `ASTEdit` was the original intent, 
given that `ASTEdit` already had a `Note` field.
- we can plumb notes inside `Metadata`, but `Metadata` is already used for the 
warning, so that looks a bit more involved.

No strong opinion on that front though :)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D128807

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

Reply via email to