diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java index bdfc892065b..7deeef9a3a0 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PropertyCodegen.java @@ -122,9 +122,9 @@ public class PropertyCodegen extends GenerationStateAware { private FieldVisitor generateBackingFieldAccess(PsiElement p, PropertyDescriptor propertyDescriptor) { Object value = null; - JetExpression initializer = p instanceof JetProperty ? ((JetProperty) p).getInitializer() : null; - if (initializer != null) { - if (initializer instanceof JetConstantExpression && !propertyDescriptor.getType().isNullable()) { + if (p instanceof JetProperty && !ImplementationBodyCodegen.shouldInitializeProperty((JetProperty) p, typeMapper)) { + JetExpression initializer = ((JetProperty) p).getInitializer(); + if (initializer != null) { CompileTimeConstant compileTimeValue = bindingContext.get(BindingContext.COMPILE_TIME_VALUE, initializer); value = compileTimeValue != null ? compileTimeValue.getValue() : null; } diff --git a/compiler/testData/codegen/box/properties/kt3524.kt b/compiler/testData/codegen/box/properties/kt3524.kt new file mode 100644 index 00000000000..3fcdaaebcf1 --- /dev/null +++ b/compiler/testData/codegen/box/properties/kt3524.kt @@ -0,0 +1,5 @@ +val i: Any = 12 + +fun box(): String { + return if (i == 12) "OK" else "fail" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index d2ddcaef902..2d7d964b432 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -3534,6 +3534,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest("compiler/testData/codegen/box/properties/kt3118.kt"); } + @TestMetadata("kt3524.kt") + public void testKt3524() throws Exception { + doTest("compiler/testData/codegen/box/properties/kt3524.kt"); + } + @TestMetadata("kt3551.kt") public void testKt3551() throws Exception { doTest("compiler/testData/codegen/box/properties/kt3551.kt");