JVM IR: keep property for $receiver field of optimized delegated properties
For properties which delegate to other property via the getValue operator from stdlib (see KT-39054), we generate `$receiver` field which stores the receiver of the property reference used in the delegate. The problem was that this backing field was missing `correspondingProperty`. It's needed because it is used as a map key to store static fields in `JvmCachedDeclarations.getStaticBackingField`. If it's null, accesses to the static $receiver fields are not remapped correctly in `RemapObjectFieldAccesses` and `MoveOrCopyCompanionObjectFieldsLowering`, which led to ICCE or NSFE. #KT-49793 Fixed
This commit is contained in:
+18
@@ -14148,6 +14148,24 @@ public class NativeExtBlackBoxTestGenerated extends AbstractNativeBlackBoxTest {
|
||||
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/genericJavaProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49793_companionObject.kt")
|
||||
public void testKt49793_companionObject() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_companionObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49793_interfaceCompanionObject.kt")
|
||||
public void testKt49793_interfaceCompanionObject() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_interfaceCompanionObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt49793_object.kt")
|
||||
public void testKt49793_object() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnother/kt49793_object.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("mutable.kt")
|
||||
public void testMutable() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user