nridge added a comment.

In D143260#4267883 <https://reviews.llvm.org/D143260#4267883>, @kadircet wrote:

> I am not sure if access specifiers and label declarations occur in the same 
> context often enough for this mixing to actually cause trouble TBH.

I think the focus on access specifiers is a bit of a distraction, especially 
given the mentioned "labels as values" language extension, which makes possible 
usages of the label of the form `&&labelname` in any expression context 
(producing a pointer value).

In my mind, having a semantic token for labels is a matter of completeness: all 
other identifier tokens get some sort of semantic token depending on what kind 
of `Decl` they resolve to. `LabelDecl` is a kind of `Decl` that can be declared 
as `label:`, and referenced as `goto label` or `&&label` where `label` is 
lexically an identifier token -- so it makes sense for those identifiers to be 
covered by a semantic token as well.

> I believe today we've too low of a bar in clangd's semantic highlighting 
> functionality for introducing "custom" token types, which are probably not 
> used by any people apart from the ones involved in the introduction of the 
> token (we don't have custom themes/scopes even for vscode, we don't even 
> mention them in our user-facing documentation).

In the case of labels (and angle brackets (D139926 
<https://reviews.llvm.org/D139926>) and operators (D136594 
<https://reviews.llvm.org/D136594>)), the set of users benefiting from them is 
presumably "all QtCreator users" (assuming QtCreator assigns a default color to 
these).

You're right that vscode users don't benefit from them unless they configure 
`semanticTokenColorCustomizations`; in my mind, this is a reason for us to 
write some vscode themes, rather than to avoid adding new tokens. (I volunteer 
to write vscode themes if that helps change your mind.)

> we'll slowly get into a state in which we're spending time both calculating 
> and emitting all of those token types that are just dropped on the floor

I agree that the volume of semantic tokens is potentially a concern. I think 
it's more of a concern in the case of tokens that occur fairly frequently, like 
operator tokens. (This is why, in the review of D136594 
<https://reviews.llvm.org/D136594>, I suggested only emitting semantic tokens 
for overloaded operators, since it's distinguishing those from built-in 
operators that's the more interesting use case in highlighting operators.) By 
comparison, label tokens would be relatively rare and thus their overhead would 
be quite small.

> Hence my stance here is still towards "we don't need it", unless we have some 
> big editor(s) that can already recognize "label" as a semantic token type

I'm not sure whether you mean LSP-based editors, but if we're counting editors 
that had "label" as a semantic token type pre-LSP, and are now looking to 
maintain that through their switch to LSP, then both Eclipse CDT and (I assume) 
Qt Creator fall into that category.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D143260

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

Reply via email to