[clang-tools-extra] [clangd] Update XRefs to support overriden ObjC methods (PR #127109)
kadir çetinkaya via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 17 01:27:02 PST 2025
================
@@ -1438,6 +1461,15 @@ ReferencesResult findReferences(ParsedAST &AST, Position Pos, uint32_t Limit,
getOverriddenMethods(CMD, OverriddenMethods);
}
}
+ // Special case: Objective-C methods can override a parent class or
+ // protocol, we should be sure to report references to those.
+ if (const auto *OMD = llvm::dyn_cast<ObjCMethodDecl>(ND)) {
+ OverriddenBy.Subjects.insert(getSymbolID(OMD));
+ llvm::SmallVector<const ObjCMethodDecl *, 4> Overrides;
+ OMD->getOverriddenMethods(Overrides);
+ for (const auto *Override : Overrides)
+ OverriddenMethods.insert(getSymbolID(Override));
----------------
kadircet wrote:
i am not sure if it does, e.g. https://github.com/llvm/llvm-project/blob/main/clang/lib/AST/DeclObjC.cpp#L1268-L1273 stops at the first overridden method.
maybe you can add some unittests for this as well ?
https://github.com/llvm/llvm-project/pull/127109
More information about the cfe-commits
mailing list