[PATCH] D43823: [clangd] Prefer the definition of a TagDecl (e.g. class) as CanonicalDeclaration.
Eric Liu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 28 01:35:39 PST 2018
ioeric added inline comments.
================
Comment at: clangd/index/SymbolCollector.cpp:260
BasicSymbol = addDeclaration(*ND, std::move(ID));
+ else if (isPreferredDeclaration(OriginalDecl, Roles))
+ BasicSymbol = addDeclaration(OriginalDecl, std::move(ID));
----------------
sammccall wrote:
> This is a bit subtle and I think comment-worthy.
> We're doing a bunch of duplicated work, but at most once because we expect to see only one preferred declaration per TU, because in practice they're definitions?
>
> An alternative would be to have addDeclaration loop through the redecls to try to find a preferred one (and use the passed in one if none is found). This would avoid any duplicated work. Up to you.
The reason why I am a bit hesitant to use `redecls` is that we wouldn't know whether all re-declarations would have been indexed (e.g. there might be implicit decls that were dropped by the index library) and passed the filters we had (e.g. `shouldFilterDecl`). And you are right, the duplicated work should usually be little. I added a comment to clarify the duplicated work.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D43823
More information about the cfe-commits
mailing list