diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index e583c877eb8..ab342a4278e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -652,7 +652,10 @@ public class ExpressionCodegen extends JetVisitor implem protected abstract void increment(@NotNull Label loopExit); public void body() { - gen(forExpression.getBody(), Type.VOID_TYPE); + JetExpression body = forExpression.getBody(); + if (body != null) { + gen(body, Type.VOID_TYPE); + } } private void scheduleLeaveVariable(Runnable runnable) { diff --git a/compiler/testData/codegen/box/controlStructures/emptyFor.kt b/compiler/testData/codegen/box/controlStructures/emptyFor.kt new file mode 100644 index 00000000000..834d5d83c2a --- /dev/null +++ b/compiler/testData/codegen/box/controlStructures/emptyFor.kt @@ -0,0 +1,15 @@ +var index = 0 + +val iterator = object : Iterator { + override fun hasNext() = index < 5 + override fun next() = index++ +} + +fun box(): String { + for (x in 1..5); + + for (x in iterator); + if (index != 5) return "Fail: $index" + + 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 1dc241a74cd..5f811edcbc7 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/emptyDoWhile.kt"); } + @TestMetadata("emptyFor.kt") + public void testEmptyFor() throws Exception { + doTest("compiler/testData/codegen/box/controlStructures/emptyFor.kt"); + } + @TestMetadata("emptyIf.kt") public void testEmptyIf() throws Exception { doTest("compiler/testData/codegen/box/controlStructures/emptyIf.kt");