[PATCH] D77811: [clangd] Implement semanticTokens modifiers
    Nathan Ridge via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Feb  5 00:58:28 PST 2021
    
    
  
nridge added inline comments.
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:476
+      if (!Kind || (Result && Kind != Result))
+        continue;
+      Result = Kind;
----------------
nridge wrote:
> This is a change of behaviour from before, in the case where the `ReferenceLoc` has multiple targets.
> 
> Before, we would produce at most one highlighting token for the `ReferenceLoc`. In the case where different target decls had different highlighting kinds, we wouldn't produce any.
> 
> Now, it looks like we produce a separate token for every target whose kind matches the kind of the first target (and skip targets with a conflicting kind).
> 
> Is that the intention?
> 
> It seems a bit strange: if we allow multiple tokens, why couldn't they have different kinds?
Thinking more about this, the behaviour may actually be reasonable as written.
  * Tokens with different kinds would get discarded via `resolveConflict()`.
  * Multiple tokens with the same kind are potentially useful because they may have different modifiers, and the modifiers are then merged in `resolveConflict()`.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77811/new/
https://reviews.llvm.org/D77811
    
    
More information about the llvm-commits
mailing list