Fix for KT-10715: Verify error on incrementing backing field from accessor
This commit is contained in:
@@ -516,6 +516,9 @@ public abstract class StackValue {
|
||||
dispatchReceiverParameter = extensionReceiverParameter;
|
||||
extensionReceiverParameter = null;
|
||||
}
|
||||
else if (descriptor instanceof SyntheticFieldDescriptor) {
|
||||
dispatchReceiverParameter = ((SyntheticFieldDescriptor) descriptor).getDispatchReceiverParameterForBackend();
|
||||
}
|
||||
|
||||
boolean hasExtensionReceiver = callExtensionReceiver != null;
|
||||
StackValue dispatchReceiver = platformStaticCallIfPresent(
|
||||
|
||||
+3
-1
@@ -36,7 +36,9 @@ class SyntheticFieldDescriptor private constructor(
|
||||
|
||||
override fun getDispatchReceiverParameter() = null
|
||||
|
||||
fun getDispatchReceiverForBackend() = propertyDescriptor.dispatchReceiverParameter?.value
|
||||
fun getDispatchReceiverForBackend() = getDispatchReceiverParameterForBackend()?.value
|
||||
|
||||
fun getDispatchReceiverParameterForBackend() = propertyDescriptor.dispatchReceiverParameter
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
fun box(): String {
|
||||
var a = Base()
|
||||
|
||||
val count = a.count
|
||||
if (count != 0) return "fail 1: $count"
|
||||
|
||||
val count2 = a.count
|
||||
if (count2 != 1) return "fail 2: $count2"
|
||||
|
||||
return "OK"
|
||||
|
||||
}
|
||||
|
||||
class Base {
|
||||
var count: Int = 0
|
||||
get() = field++
|
||||
}
|
||||
+6
@@ -6697,6 +6697,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kt10715.kt")
|
||||
public void testKt10715() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/properties/kt10715.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kt1159.kt")
|
||||
public void testKt1159() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/properties/kt1159.kt");
|
||||
|
||||
Reference in New Issue
Block a user