Generate labeled statements as statements

This commit is contained in:
Michael Bogdanov
2014-10-13 11:09:46 +04:00
parent 9d72036ba5
commit 5abc2dac4e
3 changed files with 19 additions and 0 deletions
@@ -50,4 +50,11 @@ public class CodegenStatementVisitor extends JetVisitor<StackValue, StackValue>
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);
}
}
@@ -0,0 +1,6 @@
fun main()
{
@l if (2 != 1) "fail 3"
}
// 0 GETSTATIC
@@ -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");