From 5908211fbfd194a5d5d8bcfb519c44eeafcddbbc Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 2 Dec 2013 21:48:06 +0400 Subject: [PATCH] Refactor JetControlFlowBuilderAdapter to avoid mutable fields --- .../cfg/JetControlFlowBuilderAdapter.java | 82 ++++++++++--------- .../JetControlFlowInstructionsGenerator.java | 8 ++ 2 files changed, 50 insertions(+), 40 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java index c3539e49ce8..95801dc33ce 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java @@ -27,204 +27,206 @@ import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import java.util.List; -public class JetControlFlowBuilderAdapter implements JetControlFlowBuilder { - protected JetControlFlowBuilder builder; +public abstract class JetControlFlowBuilderAdapter implements JetControlFlowBuilder { + + @NotNull + protected abstract JetControlFlowBuilder getDelegateBuilder(); @Override public void loadUnit(@NotNull JetExpression expression) { - builder.loadUnit(expression); + getDelegateBuilder().loadUnit(expression); } @Override public void loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant) { - builder.loadConstant(expression, constant); + getDelegateBuilder().loadConstant(expression, constant); } @Override public void createAnonymousObject(@NotNull JetObjectLiteralExpression expression) { - builder.createAnonymousObject(expression); + getDelegateBuilder().createAnonymousObject(expression); } @Override public void loadStringTemplate(@NotNull JetStringTemplateExpression expression) { - builder.loadStringTemplate(expression); + getDelegateBuilder().loadStringTemplate(expression); } @Override public void readThis(@NotNull JetExpression expression, @Nullable ReceiverParameterDescriptor parameterDescriptor) { - builder.readThis(expression, parameterDescriptor); + getDelegateBuilder().readThis(expression, parameterDescriptor); } @Override public void readVariable(@NotNull JetExpression expression, @Nullable VariableDescriptor variableDescriptor) { - builder.readVariable(expression, variableDescriptor); + getDelegateBuilder().readVariable(expression, variableDescriptor); } @Override public void call(@NotNull JetExpression expression, @NotNull ResolvedCall resolvedCall) { - builder.call(expression, resolvedCall); + getDelegateBuilder().call(expression, resolvedCall); } @Override public void predefinedOperation(@NotNull JetExpression expression, @Nullable PredefinedOperation operation) { - builder.predefinedOperation(expression, operation); + getDelegateBuilder().predefinedOperation(expression, operation); } @Override public void compilationError(@NotNull JetElement element, @NotNull String message) { - builder.compilationError(element, message); + getDelegateBuilder().compilationError(element, message); } @Override @NotNull public Label createUnboundLabel() { - return builder.createUnboundLabel(); + return getDelegateBuilder().createUnboundLabel(); } @NotNull @Override public Label createUnboundLabel(@NotNull String name) { - return builder.createUnboundLabel(name); + return getDelegateBuilder().createUnboundLabel(name); } @Override public void bindLabel(@NotNull Label label) { - builder.bindLabel(label); + getDelegateBuilder().bindLabel(label); } @Override public void jump(@NotNull Label label) { - builder.jump(label); + getDelegateBuilder().jump(label); } @Override public void jumpOnFalse(@NotNull Label label) { - builder.jumpOnFalse(label); + getDelegateBuilder().jumpOnFalse(label); } @Override public void jumpOnTrue(@NotNull Label label) { - builder.jumpOnTrue(label); + getDelegateBuilder().jumpOnTrue(label); } @Override public void nondeterministicJump(@NotNull Label label) { - builder.nondeterministicJump(label); + getDelegateBuilder().nondeterministicJump(label); } @Override public void nondeterministicJump(@NotNull List