Skip to content

fix(resolver): preserve qualified call resolution - #56

Draft
JohnXu22786 wants to merge 4 commits into
mainfrom
bug/preserve-qualified-call-resolution
Draft

JohnXu22786 wants to merge 4 commits into
mainfrom
bug/preserve-qualified-call-resolution

Conversation

@JohnXu22786

@JohnXu22786 JohnXu22786 commented Sep 13, 2026 •

Copy link
Copy Markdown
Owner

What this PR does

Before this PR:

Qualified calls could resolve to same-file symbols by final name before checking the imported qualifier. Local receiver/class calls could bind to imported same-name methods, nested local symbols could shadow imported owners outside their lexical scope, unchanged indexes could skip re-resolution after resolver changes, and qualified overloads could bind arbitrarily to the first declaration.

After this PR:

Qualified module calls resolve imported symbols correctly, while local receiver and class-qualified calls resolve within the caller's lexical scopes. Ambiguous qualified local names remain unresolved instead of selecting an arbitrary overload or duplicate declaration. Resolver-version changes force unchanged existing indexes through a full resolution pass. Regression tests cover fresh resolution, lexical scope, overload ambiguity, and stale incremental edges.

Type of change

fix

Resolve qualified calls against imported candidates before applying the same-file bare-name fallback.
Re-resolve existing indexes after changing qualified-call precedence and keep local receiver methods ahead of imported name fallbacks.
Resolve local qualified owners relative to the call site so nested symbols do not shadow imported targets outside their scope, and invalidate prior resolver results.
@JohnXu22786 JohnXu22786 reopened this Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant