diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 6adc551bc30..3ba2190f79b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -2239,7 +2239,14 @@ public class ExpressionCodegen extends JetVisitor implem fieldName = ((FieldOwnerContext) backingFieldContext).getFieldName(propertyDescriptor, isDelegatedProperty); } else { - fieldName = JvmAbi.getDefaultFieldNameForProperty(propertyDescriptor.getName(), isDelegatedProperty); + Name name; + if (propertyDescriptor instanceof AccessorForPropertyDescriptor) { + name = ((AccessorForPropertyDescriptor) propertyDescriptor).getCalleeDescriptor().getName(); + } + else { + name = propertyDescriptor.getName(); + } + fieldName = JvmAbi.getDefaultFieldNameForProperty(name, isDelegatedProperty); } return StackValue.property(propertyDescriptor, backingFieldOwner, diff --git a/compiler/testData/codegen/box/staticFields/kt8089.kt b/compiler/testData/codegen/box/staticFields/kt8089.kt new file mode 100644 index 00000000000..2fee361d80d --- /dev/null +++ b/compiler/testData/codegen/box/staticFields/kt8089.kt @@ -0,0 +1,21 @@ +class C { + companion object { + private val s: String + private var s2: String + + init { + s = "O" + s2 = "O" + } + + fun foo() = s + + fun foo2() = s2 + + fun bar2() { s2 = "K" } + } +} + +fun box(): String { + return C.foo() + {C.bar2(); C.foo2()}() +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java index 93b32c493ae..4ae05fd5130 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -7057,6 +7057,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("kt8089.kt") + public void testKt8089() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/staticFields/kt8089.kt"); + doTest(fileName); + } + @TestMetadata("syntheticAccessor.kt") public void testSyntheticAccessor() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/staticFields/syntheticAccessor.kt");