diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java index 4f8e0e4deff..189ee230b7f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/StackValue.java @@ -706,6 +706,7 @@ public abstract class StackValue { @Override public void put(Type type, InstructionAdapter v) { v.visitFieldInsn(isStatic ? Opcodes.GETSTATIC : Opcodes.GETFIELD, owner, name, this.type.getDescriptor()); + coerce(type, v); } @Override @@ -735,6 +736,7 @@ public abstract class StackValue { public void put(Type type, InstructionAdapter v) { v.load(0, JetTypeMapper.TYPE_OBJECT); v.getfield(owner, name, this.type.getDescriptor()); + coerce(type, v); } @Override diff --git a/compiler/testData/codegen/regressions/kt560.jet b/compiler/testData/codegen/regressions/kt560.jet new file mode 100644 index 00000000000..630cf37d654 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt560.jet @@ -0,0 +1,28 @@ +namespace while_bug_1 + +import java.io.* + +open class AllEvenNum() { + + class object { + open public fun main(args : Array?) : Unit { + var i : Int = 1 + while ((i <= 100)) { + { + if (((i % 2) == 0)) + { + System.out?.print((i.toString() + ",")) + } + + } + (i++) + } + } + + } +} + +fun box() : String { + AllEvenNum.main(Array(0)) + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java index d545b6422e6..53b76ccf788 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ObjectGenTest.java @@ -21,4 +21,8 @@ public class ObjectGenTest extends CodegenTestCase { public void testKt535() throws Exception { blackBoxFile("regressions/kt535.jet"); } + + public void testKt560() throws Exception { + blackBoxFile("regressions/kt560.jet"); + } }