Repository navigation
fix(codegen): call final-class methods directly - #2065
Merged
Merged
Conversation
Contributor
[Medium impact] The PR appears safe to merge; no new blocking issues were found. SummaryCalls to methods on non-generic final classes now go directly to the emitted implementation, including inherited methods.
|
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.
Calls through a non-generic final class now target the emitted implementation directly, including inherited methods. Generic variance keeps runtime body selection and literal-argument checks select the actual declaring instantiation, preserving its static storage and TypeError diagnostic name.
Tracks Code Journal task
a9b89d6e.Added assembly assertions for every supported target with IR optimization disabled, plus runtime regressions for inherited and nullable calls, references/default arguments, covariance/contravariance, full false-literal argument messages, and closure rebinding. Null-only parameter guards use typed EIR emitter inputs on all five targets, isolating the existing standalone-null parser gap. Includes an example and updated internals/PHP documentation.
The OPcache timezone fixture also compares each complete
last_usedstring against the host date utility at the exactlast_used_timestampfrom the same status output. UTC, America/New_York, Europe/Paris and restoration of the PHP default to UTC remain asserted. This replaces the July-only offsets that failed after the seasonal clock change, without accepting alternative offsets, changing production behavior, adding dependencies or racing timestamps between child processes. Child-localTZandLC_ALL=Cisolate the reference; BSD/macOS and GNU/Linux argument forms are selected for their hosts. Theci:macostier is enabled to validate the originally failing macOS CLI fixture before returning to the merge queue.Validation:
git diff --checkpassed and the full combined Claude static review is clean on3b67786f329a7d9f65fba2ca5852acb8e6e5e193(delegation9b7ae669-b74a-4afc-a916-829c6306e1f8). No builds, tests, PHP, compilers or date oracle commands were executed locally. New CI and Greptile results must match this exact head; previous results for source39cee8fcor merge-groupd199123fdo not validate this update.