Proper read instructions for function literals

This commit is contained in:
Andrey Breslav
2013-12-02 21:55:58 +04:00
parent 09a1736ab6
commit 87b6ec4990
7 changed files with 60 additions and 0 deletions
@@ -88,6 +88,7 @@ public interface JetControlFlowBuilder {
void loadUnit(@NotNull JetExpression expression);
void loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant<?> constant);
void createAnonymousObject(@NotNull JetObjectLiteralExpression expression);
void createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression);
void loadStringTemplate(@NotNull JetStringTemplateExpression expression);
void readThis(@NotNull JetExpression expression, @Nullable ReceiverParameterDescriptor parameterDescriptor);
@@ -47,6 +47,11 @@ public abstract class JetControlFlowBuilderAdapter implements JetControlFlowBuil
getDelegateBuilder().createAnonymousObject(expression);
}
@Override
public void createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression) {
getDelegateBuilder().createFunctionLiteral(expression);
}
@Override
public void loadStringTemplate(@NotNull JetStringTemplateExpression expression) {
getDelegateBuilder().loadStringTemplate(expression);
@@ -700,6 +700,7 @@ public class JetControlFlowProcessor {
public void visitFunctionLiteralExpression(@NotNull JetFunctionLiteralExpression expression) {
JetFunctionLiteral functionLiteral = expression.getFunctionLiteral();
processLocalDeclaration(functionLiteral);
builder.createFunctionLiteral(expression);
}
@Override
@@ -346,6 +346,11 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd
read(expression);
}
@Override
public void createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression) {
read(expression);
}
@Override
public void loadStringTemplate(@NotNull JetStringTemplateExpression expression) {
read(expression);