diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 14ac80efc70..ceb95e2c779 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -425,7 +425,11 @@ public class ExpressionCodegen extends JetVisitor implem StackValue conditionValue = gen(expression.getCondition()); conditionValue.condJump(end, true, v); - gen(expression.getBody(), Type.VOID_TYPE); + JetExpression body = expression.getBody(); + if (body != null) { + gen(body, Type.VOID_TYPE); + } + v.goTo(condition); v.mark(end); diff --git a/compiler/testData/codegen/box/controlStructures/emptyWhile.kt b/compiler/testData/codegen/box/controlStructures/emptyWhile.kt new file mode 100644 index 00000000000..c52c5124f52 --- /dev/null +++ b/compiler/testData/codegen/box/controlStructures/emptyWhile.kt @@ -0,0 +1,9 @@ +fun box(): String { + while (false); + + var x = 0 + while (x++<5); + if (x != 6) return "Fail: $x" + + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index 9f18cc771f8..42f0a99f999 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -1432,6 +1432,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest("compiler/testData/codegen/box/controlStructures/emptyIf.kt"); } + @TestMetadata("emptyWhile.kt") + public void testEmptyWhile() throws Exception { + doTest("compiler/testData/codegen/box/controlStructures/emptyWhile.kt"); + } + @TestMetadata("finallyOnEmptyReturn.kt") public void testFinallyOnEmptyReturn() throws Exception { doTest("compiler/testData/codegen/box/controlStructures/finallyOnEmptyReturn.kt");