jvikstrom added inline comments.

================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:231
+          if (TP->isFunctionPointerType()) {
+            addToken(Loc, HighlightingKind::Function);
+            return;
----------------
ilya-biryukov wrote:
> jvikstrom wrote:
> > ilya-biryukov wrote:
> > > Why do we special-case template parameters, but not other kinds of 
> > > variables?
> > > We definitely need a comment explaining why template parameters are 
> > > handled in a special way, but variables, parameters, fields are not.
> > Not quite sure what you mean about variables/parameters/fields not being 
> > handled in a special way.
> > 
> > The reason for special casing non type templates is because it probably 
> > gives more information/is more valuable to highlight a reference/pointer as 
> > a variable rather than a normal template parameter (same for 
> > methods/functions).
> > 
> > But maybe they all should just be highlighted as with the TemplateParameter 
> > kind instead?
> > Not quite sure what you mean about variables/parameters/fields not being 
> > handled in a special way.
> Non-type template parameters are very similar to global and local variables, 
> function parameters, class fields, etc.
> We could also match those on type and highlight differently based on the type.
> 
> > The reason for special casing non type templates is because it probably 
> > gives more information/is more valuable to highlight a reference/pointer as 
> > a variable rather than a normal template parameter (same for 
> > methods/functions).
> However, if a global variable has a function pointer type we do not highlight 
> it as a function. Why would this be different?
> 
> > But maybe they all should just be highlighted as with the TemplateParameter 
> > kind instead?
> I would personally vouch for this option. The highlighting functionality lets 
> me understand what the name resolves to; if it's a template parameter and it 
> would be highlighted as a variable instead, this would create confusion on my 
> end. If I need to know the type I'll look at completion results or hover.
> 
> It is my personal preference and I'm ok with this going in a different 
> direction if you feel the opposite is better. Just asking to put the 
> rationale of this decision (why do this only for template parameters and not 
> other things) in a comment somewhere in the source code.
> I would personally vouch for this option. The highlighting functionality lets 
> me understand what the name resolves to;

Very true actually, was a bit unsure what was the correct way to go but this is 
very true actually.

Changing to just highlight as TemplateParameter. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D66221



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

Reply via email to