Repository navigation
Fix: A value class whose underlying property is not public crosses as a boxed object - #169
Merged
Merged
Conversation
… a boxed object (#168) TextUnitType has a public constructor but an internal property, so Kotlin can only hand it to Python boxed; the walker read its parameter as the raw Long. The raw-primitive rule for a parameter now also needs a public underlying property, so such a parameter takes the object-handle path and kotlinc unboxes. Red before: WalkedArtifactValueClassBoxTest.aBoxedValueClassFillsItsOwnParameter (expected a number for TextUnitType).
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.
Closes #168
Defect fixed: TextUnit(30, TextUnitType.Sp) failed with 'expected a number for TextUnitType'. TextUnitType has a public constructor but an internal underlying property, so Kotlin can only hand it to Python boxed, while the walker marshalled its parameter as the raw Long. The walker's raw-primitive rule for a parameter now also needs a public underlying property; otherwise the parameter takes the object-handle path and kotlinc unboxes (no JVM name lookup). Dp and Meters stay raw.
Test added: ksp-fixtures/artifact WalkedArtifactValueClassBoxTest (aBoxedValueClassFillsItsOwnParameter red before the fix; aRawNumberStillDoesNotFillAValueClassOffTheAllowlist as control). The refusal of a raw number in such a slot now surfaces as a stale-handle error rather than the allowlist TypeError, as for every object slot.
Spec: SPEC B-4.
Verified locally, each module separately: plugin test 274/0, desktopTest 608/0, artifact 37/0, app 79/0, compose 120/0, androidNative compile OK.