Fix backend issue related to JvmStatic val with accessor
Do not treat accessors to JvmStatic properties as having dispatch receiver #KT-11585 Fixed
This commit is contained in:
+4
-2
@@ -46,7 +46,9 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl implem
|
||||
boolean setterAccessorRequired
|
||||
) {
|
||||
this(property, property.getType(), DescriptorUtils.getReceiverParameterType(property.getExtensionReceiverParameter()),
|
||||
property.getDispatchReceiverParameter(), containingDeclaration, superCallTarget, nameSuffix,
|
||||
/* dispatchReceiverParameter = */
|
||||
CodegenUtilKt.isJvmStaticInObjectOrClass(property) ? null : property.getDispatchReceiverParameter(),
|
||||
containingDeclaration, superCallTarget, nameSuffix,
|
||||
getterAccessorRequired, setterAccessorRequired);
|
||||
}
|
||||
|
||||
@@ -62,7 +64,7 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl implem
|
||||
this(original, propertyType, receiverType, dispatchReceiverParameter, containingDeclaration, superCallTarget, nameSuffix, true, true);
|
||||
}
|
||||
|
||||
protected AccessorForPropertyDescriptor(
|
||||
private AccessorForPropertyDescriptor(
|
||||
@NotNull PropertyDescriptor original,
|
||||
@NotNull KotlinType propertyType,
|
||||
@Nullable KotlinType receiverType,
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// WITH_RUNTIME
|
||||
|
||||
var result = "fail 1"
|
||||
object Foo {
|
||||
@JvmStatic
|
||||
private val a = "OK"
|
||||
|
||||
fun foo() = run { result = a }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
Foo.foo()
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// WITH_RUNTIME
|
||||
|
||||
var result = "fail 2"
|
||||
class Foo {
|
||||
val b = { a }
|
||||
val c = Runnable { result = a }
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
private val a = "OK"
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (Foo().b() != "OK") return "fail 1"
|
||||
|
||||
Foo().c.run()
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// WITH_RUNTIME
|
||||
|
||||
var result = "fail 2"
|
||||
object Foo {
|
||||
@JvmStatic
|
||||
private val a = "OK"
|
||||
|
||||
val b = { a }
|
||||
val c = Runnable { result = a }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (Foo.b() != "OK") return "fail 1"
|
||||
|
||||
Foo.c.run()
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -8485,6 +8485,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("inlinePropertyAccessors.kt")
|
||||
public void testInlinePropertyAccessors() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/jvmStatic/inlinePropertyAccessors.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kt9897_static.kt")
|
||||
public void testKt9897_static() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/jvmStatic/kt9897_static.kt");
|
||||
@@ -8527,6 +8533,18 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("propertyAccessorsCompanion.kt")
|
||||
public void testPropertyAccessorsCompanion() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/jvmStatic/propertyAccessorsCompanion.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("propertyAccessorsObject.kt")
|
||||
public void testPropertyAccessorsObject() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/jvmStatic/propertyAccessorsObject.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("propertyAsDefault.kt")
|
||||
public void testPropertyAsDefault() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/jvmStatic/propertyAsDefault.kt");
|
||||
|
||||
Reference in New Issue
Block a user