diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 257e4364953..715b9e2462e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -833,9 +833,9 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { Type componentType = signature.getReturnType(); InstructionAdapter iv = new InstructionAdapter(mv); if (!componentType.equals(Type.VOID_TYPE)) { - iv.load(0, classAsmType); - String desc = "()" + componentType.getDescriptor(); - iv.invokevirtual(classAsmType.getInternalName(), PropertyCodegen.getterName(parameter.getName()), desc, false); + PropertyDescriptor property = + bindingContext.get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, descriptorToDeclaration(parameter)); + genPropertyOnStack(iv, context, property, 0); } iv.areturn(componentType); } diff --git a/compiler/testData/codegen/boxWithStdlib/dataClasses/privateValParams.kt b/compiler/testData/codegen/boxWithStdlib/dataClasses/privateValParams.kt index 2996bb8839d..d667588ab98 100644 --- a/compiler/testData/codegen/boxWithStdlib/dataClasses/privateValParams.kt +++ b/compiler/testData/codegen/boxWithStdlib/dataClasses/privateValParams.kt @@ -1,4 +1,6 @@ -data class D(private val x: Long, private val y: Char) +data class D(private val x: Long, private val y: Char) { + fun foo() = "${component1()}${component2()}" +} fun box(): String { val d1 = D(42L, 'a') @@ -6,5 +8,6 @@ fun box(): String { if (d1 != d2) return "Fail equals" if (d1.hashCode() != d2.hashCode()) return "Fail hashCode" if (d1.toString() != d2.toString()) return "Fail toString" + if (d1.foo() != d2.foo()) return "Fail foo" return "OK" }