Skip to content

generics: keep the with instance for inline specializations (fixes upstream#41711, upstream#41712) - #43

Open
Moonbot-Tech wants to merge 1 commit into
unleashedpascal:mainfrom
Moonbot-Tech:fix-41711-41712
Open

generics: keep the with instance for inline specializations (fixes upstream#41711, upstream#41712)#43
Moonbot-Tech wants to merge 1 commit into
unleashedpascal:mainfrom
Moonbot-Tech:fix-41711-41712

Conversation

@Moonbot-Tech

Copy link
Copy Markdown

Problem. FPC issues #41711 and #41712: an inline specialization of a generic method reached through a with statement was created without its instance. The call was then rebuilt from the enclosing method's Self and dispatched to the wrong object (#41711), or rejected as an illegal expression (#41712).

Fix. In pexpr.pas resolve the member read first and attach the resulting instance node to the specialize node; a non-member specialization keeps passing nil. This overlaps with your FPC merge request !1435, which attaches the with-ref only; resolving the member read also covers the member-scope case of #41711.

Tests. tests/webtbs/tw41711.pp (member and global with, checks which object is called) and tests/webtbs/tw41712.pp: illegal expression on current main, both run after the fix.

Validation. Win64 build of main (a359fc1) with the patch; 405 neighbouring tests from tests/test (inline, rtti, helpers, generics, opt) give identical results before and after.

🤖 Generated with Claude Code

…stream#41711, upstream#41712)

An inline specialization of a generic method reached through a with
statement was created without its instance, so the call was rebuilt
from the enclosing method's Self and dispatched to the wrong object
(#41711), or rejected as an illegal expression (#41712).

Resolve the member read first and attach the resulting instance node to
the specialize node; a non-member specialization keeps passing nil.

FPC issues: https://gitlab.com/freepascal.org/fpc/source/-/issues/41711
            https://gitlab.com/freepascal.org/fpc/source/-/issues/41712

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@fibodevy fibodevy added the waiting-upstream Stock FPC fix, waits for the upstream MR to be merged or rejected label Sep 6, 2026
@Moonbot-Tech

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-upstream Stock FPC fix, waits for the upstream MR to be merged or rejected

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants