nridge marked 3 inline comments as done. nridge added inline comments.
================ Comment at: clang-tools-extra/clangd/XRefs.cpp:1150 + if (llvm::isa<UsingDecl>(D) || llvm::isa<UnresolvedUsingValueDecl>(D)) { + Decls = getDeclAtPosition(AST, *CurLoc, + Relations | DeclRelation::Underlying); ---------------- nridge wrote: > hokein wrote: > > I think it should not happen in practice (Decls just have 1 element in most > > cases), but the code feels hacky, we are throwing other decls if one of the > > `Decls` is a using decl. > > > > I suppose if we're using the same workaround as `locateASTReferent`, then > > we should follow that way by only adjusting the > > UsingDecl/UnresolvedValueDecl results and keeping others. > > > > > > In general, I think we probably need to remove this workaround (see the > > `FIXME` in `locateASTReferent`) by refining TargetDecl API. The current > > `DeclRelation::Underlying` enum is not enough to support our use case where > > we only want underlying decls for *non-renaming* alias. One rough idea to > > fix it is to split the `Underlying` to two `RenameAliasUnderlying` and > > `RemainingUnderlying` -- this would need some API design work, so no need > > to do it in this patch. > > > > > > > I don't think we're actually throwing out the other results: by calling > `getDeclAtPosition()` with `Relations | Underlying`, where `Relations` is the > original flags, the call should find the other results again. If we only > replaced the UsingDecl/UnresolvedValueDecl results, I think the other results > would appear in duplicate. Anyways, I've revised it as you suggested. I don't think it should make a difference in practice. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D87225/new/ https://reviews.llvm.org/D87225 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits