nridge marked 2 inline comments as done.
nridge added inline comments.

================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:219
+  bool VisitDependentNameTypeLoc(DependentNameTypeLoc L) {
+    addToken(L.getNameLoc(), HighlightingKind::DependentType);
+    return true;
----------------
ilya-biryukov wrote:
> nridge wrote:
> > hokein wrote:
> > > nit: we have `kindForType` for hanlding all types, so I'd move the logic 
> > > of detecting the dependent type there.
> > I did try this, but it doesn't quite work, because `VisitTypeLoc` adds the 
> > highlighting to the `TypeLoc`'s `getBeginLoc()`. For something like 
> > `typename T::type`, that highlights the `typename` token rather than the 
> > `type` token. By contrast, here I add the highlighting to the 
> > `DependentNameTypeLoc`'s `getNameLoc()` which will correctly highlight the 
> > `type` token.
> You'd want to implement `WalkUpFromDependentNameTypeLoc` instead of `Visit*` 
> to avoid adding extra highlightings in `VisitTypeLoc`.
> 
> In fact, I'm surprised we're not seeing them now.
We're not seeing extra highlightings with the current patch, because 
`VisitTypeLoc` does not add any highlightings for dependent types 
(`kindForType()` returns `None` for them). 

So, I don't think there's a problem with using `VisitDependentNameTypeLoc`?


================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:505
+  case HighlightingKind::DependentType:
+    return "entity.name.type.dependent.cpp";
+  case HighlightingKind::DependentName:
----------------
hokein wrote:
> ilya-biryukov wrote:
> > Maybe have a separate category for all dependent entities instead, i.e. use
> > `entity.name.dependent.type.cpp` and `entity.name.dependent.other.cpp`?
> > 
> > This would allow to specify a single highlighting for both names by 
> > stopping at `dependent` subcategory.
> > I'm not sure how this plays into the default colors provided in the editors 
> > that support semantic highlighting...
> Having a dedicate dependent entity doesn't align with the existing textmate 
> patterns (the `dependent` type should be under the `entity.name.type` 
> umbrella) --  most highlighters don't have a specific pattern for 
> `dependent`, so we'll fallback to the `entity.name.type` color. If we use 
> `entity.name.dependent.type.cpp`, we'll fall back to `entity.name` color.
+1, I think it's more important that dependent types are highlighted as types 
out-of-the-box in cases where the theme contains a highlighting for types but 
not one specifically for dependent types.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D67901



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

Reply via email to