Remove useless parameter from FunctionGenerationStrategy

This commit is contained in:
Alexander Udalov
2013-04-10 18:54:38 +04:00
parent 330efd3967
commit 57f6870e68
4 changed files with 17 additions and 7 deletions
@@ -174,7 +174,9 @@ public class FunctionCodegen extends GenerationStateAware {
genNotNullAssertionsForParameters(new InstructionAdapter(mv), state, functionDescriptor, frameMap); genNotNullAssertionsForParameters(new InstructionAdapter(mv), state, functionDescriptor, frameMap);
strategy.generateBody(mv, signature, context, localVariableNames, frameMap); strategy.generateBody(mv, signature, context, frameMap);
localVariableNames.addAll(strategy.getLocalVariableNames());
} }
Label methodEnd = new Label(); Label methodEnd = new Label();
@@ -23,18 +23,28 @@ import org.jetbrains.jet.codegen.signature.JvmMethodSignature;
import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.lang.psi.JetDeclarationWithBody; import org.jetbrains.jet.lang.psi.JetDeclarationWithBody;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
public abstract class FunctionGenerationStrategy { public abstract class FunctionGenerationStrategy {
private final Collection<String> localVariableNames = new ArrayList<String>();
public abstract void generateBody( public abstract void generateBody(
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature, @NotNull JvmMethodSignature signature,
@NotNull MethodContext context, @NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap @NotNull FrameMap frameMap
); );
protected void addLocalVariableName(@NotNull String name) {
localVariableNames.add(name);
}
@NotNull
public Collection<String> getLocalVariableNames() {
return localVariableNames;
}
public static class Default extends FunctionGenerationStrategy { public static class Default extends FunctionGenerationStrategy {
private final GenerationState state; private final GenerationState state;
@@ -50,14 +60,15 @@ public abstract class FunctionGenerationStrategy {
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature, @NotNull JvmMethodSignature signature,
@NotNull MethodContext context, @NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap @NotNull FrameMap frameMap
) { ) {
ExpressionCodegen codegen = new ExpressionCodegen(mv, frameMap, signature.getAsmMethod().getReturnType(), context, state); ExpressionCodegen codegen = new ExpressionCodegen(mv, frameMap, signature.getAsmMethod().getReturnType(), context, state);
codegen.returnExpression(declaration.getBodyExpression()); codegen.returnExpression(declaration.getBodyExpression());
localVariableNames.addAll(codegen.getLocalVariableNamesForExpression()); for (String name : codegen.getLocalVariableNamesForExpression()) {
addLocalVariableName(name);
}
} }
} }
} }
@@ -685,7 +685,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature, @NotNull JvmMethodSignature signature,
@NotNull MethodContext context, @NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap @NotNull FrameMap frameMap
) { ) {
InstructionAdapter iv = new InstructionAdapter(mv); InstructionAdapter iv = new InstructionAdapter(mv);
@@ -711,7 +710,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature, @NotNull JvmMethodSignature signature,
@NotNull MethodContext context, @NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap @NotNull FrameMap frameMap
) { ) {
InstructionAdapter iv = new InstructionAdapter(mv); InstructionAdapter iv = new InstructionAdapter(mv);
@@ -183,7 +183,6 @@ public class PropertyCodegen extends GenerationStateAware {
@NotNull MethodVisitor mv, @NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature, @NotNull JvmMethodSignature signature,
@NotNull MethodContext context, @NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap @NotNull FrameMap frameMap
) { ) {
generateDefaultAccessor(descriptor, new InstructionAdapter(mv), typeMapper, context); generateDefaultAccessor(descriptor, new InstructionAdapter(mv), typeMapper, context);