fix(apex): emit extends edges for interface multiple inheritance#1645
Closed
Synvoya wants to merge 1 commit into
Closed
fix(apex): emit extends edges for interface multiple inheritance#1645Synvoya wants to merge 1 commit into
extends edges for interface multiple inheritance#1645Synvoya wants to merge 1 commit into
Conversation
interface X extends A, B captured the parent list in iface_re group 2 but the handler only read group 1, so no inheritance edge was emitted. Split the parent list and emit one extends edge per parent (mirroring the class branch).
safishamsi
added a commit
that referenced
this pull request
Jul 4, 2026
…delegation) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
|
Merged into v8 as Clean fix — the interface handler was reading only group 1 while group 2 already captured the parent list, and your addition mirrors the class branch's parent resolution exactly (same stem/bare |
safishamsi
added a commit
that referenced
this pull request
Jul 4, 2026
19 fixes/features since 0.9.5. Highlights: - Ruby: module/Struct.new/Class.new/Data.define container nodes (#1640) and constant-receiver singleton-call resolution (#1634) — Rails/Zeitwerk graphs now get real cross-file edges. - Kill cross-language phantom imports_from edges from unresolved bare npm imports (#1638); harden semantic extraction against malformed LLM chunks (#1631); deterministic graph.json node/edge ordering for parallel semantic backends (#1632). - Contributor extractor fixes: Apex interface multiple inheritance (#1645), Kotlin `by` delegation (#1644). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What it fixes
An Apex
interface X extends A, Bemitted only acontainsedge — the parent interface list was dropped from the graph.iface_recaptures theextendsparent list in group 2, but the interface handler read only group 1 (the interface name); group 2 was never used. (The class branch already splits its parent list and emits an edge per parent.)Fix
After the interface node /
containsedge, iterate the captured parent list and emit oneextendsedge per parent, mirroring the class branch's node resolution (extendsmatches the keyword Apex interfaces use for inheritance; the class branch already emitsextends). Apex interfaces support multiple inheritance.now emits:
Test
tests/test_languages.py:test_apex_interface_extendsasserts both parents appear as inheritance edges.pytest tests/test_languages.py -k apex→ 13 passed (negative control without the fix fails with an empty inheritance set).