[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