From 61ff9eb45ba458a6464ffe5dd854998367dbb3ca Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 2 Dec 2013 20:48:15 +0400 Subject: [PATCH] Support codegen of empty do-while-loop #KT-3009 In Progress --- .../src/org/jetbrains/jet/codegen/ExpressionCodegen.java | 7 +++++-- .../codegen/box/controlStructures/emptyDoWhile.kt | 9 +++++++++ .../codegen/generated/BlackBoxCodegenTestGenerated.java | 5 +++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/codegen/box/controlStructures/emptyDoWhile.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index ceb95e2c779..e583c877eb8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -429,7 +429,7 @@ public class ExpressionCodegen extends JetVisitor implem if (body != null) { gen(body, Type.VOID_TYPE); } - + v.goTo(condition); v.mark(end); @@ -465,7 +465,10 @@ public class ExpressionCodegen extends JetVisitor implem conditionValue = generateBlock(statements, true); } else { - gen(body, Type.VOID_TYPE); + if (body != null) { + gen(body, Type.VOID_TYPE); + } + conditionValue = gen(condition); } diff --git a/compiler/testData/codegen/box/controlStructures/emptyDoWhile.kt b/compiler/testData/codegen/box/controlStructures/emptyDoWhile.kt new file mode 100644 index 00000000000..0f52a36e3b6 --- /dev/null +++ b/compiler/testData/codegen/box/controlStructures/emptyDoWhile.kt @@ -0,0 +1,9 @@ +fun box(): String { + do while (false); + + var x = 0 + do 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 42f0a99f999..1dc241a74cd 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -1427,6 +1427,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest("compiler/testData/codegen/box/controlStructures/doWhileFib.kt"); } + @TestMetadata("emptyDoWhile.kt") + public void testEmptyDoWhile() throws Exception { + doTest("compiler/testData/codegen/box/controlStructures/emptyDoWhile.kt"); + } + @TestMetadata("emptyIf.kt") public void testEmptyIf() throws Exception { doTest("compiler/testData/codegen/box/controlStructures/emptyIf.kt");