nridge added a comment.

In D136594#3940482 <https://reviews.llvm.org/D136594#3940482>, @sammccall wrote:

> An (IMO) useful distinction that can't be found by the lexer is the use of 
> `*` as a declarator (`int *x`) vs an operator (`return *x`).

I failed to appreciate the implication of this the first time I read it: this 
is in fact a **semantic** distinction. Given `A * B`, the `*` could be a 
declarator or an operator depending on whether `A` resolves to a type name or a 
variable name; at the lexer level, it's just `tok::star` in both cases.

The current patch will produce an operator token in the operator case but not 
the declarator case, thereby achieving an effect that client-side highlighting 
couldn't. As such, I guess it **does** make sense for this to be a semantic 
token (i.e. produced even with with `augmentsSyntaxTokens=true`) even in the 
built-in case?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D136594

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

Reply via email to