[PATCH] D110130: [clangd] Ensure lambda init-capture gets semantic token
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 22 05:54:08 PDT 2021
kadircet added a comment.
thanks, LGTM!
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:518
+ SourceLocation StartLoc = D->getTypeSpecStartLoc();
+ // The AutoType may not have a corresponding token, e.g. in the case of
+ // init-captures, so there's nothing to color.
----------------
i think the comment might be more explicit about doing this to ensure we are not attributing the highlighting to some closeby token.
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:515
return true;
if (auto K = kindForType(AT->getDeducedType().getTypePtrOrNull(),
H.getResolver())) {
----------------
kadircet wrote:
> nit: while here do you mind turning this into an early exit as well? the nesting below seems a little distracting.
sorry I was also talking about also turning `if(auto K = ...)` to
```
auto K = ...
if (!K)
return true;
```
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:522
+ // is the same as the location of the declared name itself.
+ if (StartLoc != D->getLocation()) {
+ auto &Tok =
----------------
nridge wrote:
> kadircet wrote:
> > nridge wrote:
> > > Note, I initially tried `D->getTypeSpecStartLoc() != D->getTypeSpecEndLoc()`, but it turns out they are equal both in the init-capture case and in the regular `auto` case, so that check cannot be used to discriminate between the two.
> > why not just check if `D` is implicit?
> If you mean `D->isImplicit()`, that returns false for init-captures.
ah nvm, I was looking at the fielddecl implicitly introduced into the lambda, not the vardecl that was created with the capture (https://github.com/llvm/llvm-project/tree/main/clang/lib/Sema/SemaLambda.cpp#L1739).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110130/new/
https://reviews.llvm.org/D110130
More information about the cfe-commits
mailing list