From 5abc2dac4e1300bb3d69e1b011fb952b12bcb16e Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Mon, 13 Oct 2014 11:09:46 +0400 Subject: [PATCH] Generate labeled statements as statements --- .../org/jetbrains/jet/codegen/CodegenStatementVisitor.java | 7 +++++++ .../testData/codegen/bytecodeText/statements/labeled.kt | 6 ++++++ .../jetbrains/jet/codegen/BytecodeTextTestGenerated.java | 6 ++++++ 3 files changed, 19 insertions(+) create mode 100644 compiler/testData/codegen/bytecodeText/statements/labeled.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenStatementVisitor.java b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenStatementVisitor.java index 7f402caa317..5e40d432ae7 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenStatementVisitor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenStatementVisitor.java @@ -50,4 +50,11 @@ public class CodegenStatementVisitor extends JetVisitor public StackValue visitBlockExpression(@NotNull JetBlockExpression expression, StackValue data) { return codegen.generateBlock(expression, true); } + + @Override + public StackValue visitLabeledExpression(@NotNull JetLabeledExpression expression, StackValue receiver) { + JetExpression baseExpression = expression.getBaseExpression(); + assert baseExpression != null : "Label expression should have base one: " + expression.getText(); + return baseExpression.accept(this, receiver); + } } diff --git a/compiler/testData/codegen/bytecodeText/statements/labeled.kt b/compiler/testData/codegen/bytecodeText/statements/labeled.kt new file mode 100644 index 00000000000..995d5a8b8e9 --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/statements/labeled.kt @@ -0,0 +1,6 @@ +fun main() +{ + @l if (2 != 1) "fail 3" +} + +// 0 GETSTATIC \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/BytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/BytecodeTextTestGenerated.java index 3084484a0b9..2fbda9a32ba 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/BytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/BytecodeTextTestGenerated.java @@ -353,6 +353,12 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { doTest(fileName); } + @TestMetadata("labeled.kt") + public void testLabeled() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/statements/labeled.kt"); + doTest(fileName); + } + @TestMetadata("statementsComposition.kt") public void testStatementsComposition() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeText/statements/statementsComposition.kt");