Fix for KT-10715: Verify error on incrementing backing field from accessor

This commit is contained in:
Michael Bogdanov
2016-01-25 13:26:00 +03:00
parent cf09949354
commit 874560df9d
4 changed files with 29 additions and 1 deletions
@@ -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(
@@ -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
+17
View File
@@ -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++
}
@@ -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");