Skip to content

generics: defer the VMT of a partial specialization (fixes upstream#41788) - #51

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

generics: defer the VMT of a partial specialization (fixes upstream#41788)#51
Moonbot-Tech wants to merge 1 commit into
unleashedpascal:mainfrom
Moonbot-Tech:fix-41788

Conversation

@Moonbot-Tech

Copy link
Copy Markdown

Problem. FPC issue #41788: a specialization whose arguments still contain parameters of the enclosing generic has no generated method bodies. Phase 2 already kept such a def out of the pending specializations, but ncgvmt still emitted a VMT with references to the missing bodies, so linking failed with an undefined symbol.

Fix. Move the unresolved-parameters check from a local helper in pgenutil.pas to tstoreddef.has_generic_paras and use it in ncgvmt.pas as well. The VMT layout is still built to validate overrides in partial descendants; concrete specializations are unchanged.

Test. tests/webtbs/tw41788.pp: link error on current main, runs 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

…1788)

A specialization whose arguments still contain parameters of the
enclosing generic has no generated method bodies. Phase 2 already kept
such a def out of the pending specializations, but ncgvmt still emitted
a VMT with references to the missing bodies, so linking failed with an
undefined symbol.

Move the unresolved-parameters check to tstoreddef.has_generic_paras and
use it in ncgvmt as well. The VMT layout is still built to validate
overrides in partial descendants; concrete specializations are
unchanged.

FPC issue: https://gitlab.com/freepascal.org/fpc/source/-/issues/41788

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