[clang-tools-extra] [clangd] Retrieve documentation for member function instance from index (PR #153337)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 14 22:00:42 PDT 2025
================
@@ -1887,7 +1887,19 @@ class CodeCompleteFlow {
for (auto &Cand : C.first) {
if (Cand.SemaResult &&
Cand.SemaResult->Kind == CodeCompletionResult::RK_Declaration) {
- auto ID = clangd::getSymbolID(Cand.SemaResult->getDeclaration());
+ const NamedDecl *DeclToLookup = Cand.SemaResult->getDeclaration();
+ // For instantiations of members of class templates, the
+ // documentation will be stored at the member's original
+ // declaration.
+ // FIXME: We'd like to handle fields too but FieldDecl is missing a
+ // method equivalent to getInstantiatedFromMemberFunction().
+ if (const auto *FD = dyn_cast<FunctionDecl>(DeclToLookup)) {
+ if (const auto *InstantiatedFrom =
+ FD->getInstantiatedFromMemberFunction()) {
----------------
zyn0217 wrote:
I think so? getInstantiatedFromMemberFunction gives you the last pattern that this instantiation comes from, and that pattern could be a half-instantiated template declaration.
So if you're looking for the primary template, I think we should turn to getTemplateInstantiationPattern.
Also note that there are some edge cases where we lack a tracking of the pattern, e.g. a templated friend declaration
https://github.com/llvm/llvm-project/pull/153337
More information about the cfe-commits
mailing list