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);
strategy.generateBody(mv, signature, context, localVariableNames, frameMap);
strategy.generateBody(mv, signature, context, frameMap);
localVariableNames.addAll(strategy.getLocalVariableNames());
}
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.lang.psi.JetDeclarationWithBody;
import java.util.ArrayList;
import java.util.Collection;
public abstract class FunctionGenerationStrategy {
private final Collection<String> localVariableNames = new ArrayList<String>();
public abstract void generateBody(
@NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature,
@NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@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 {
private final GenerationState state;
@@ -50,14 +60,15 @@ public abstract class FunctionGenerationStrategy {
@NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature,
@NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap
) {
ExpressionCodegen codegen = new ExpressionCodegen(mv, frameMap, signature.getAsmMethod().getReturnType(), context, state);
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 JvmMethodSignature signature,
@NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap
) {
InstructionAdapter iv = new InstructionAdapter(mv);
@@ -711,7 +710,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
@NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature,
@NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap
) {
InstructionAdapter iv = new InstructionAdapter(mv);
@@ -183,7 +183,6 @@ public class PropertyCodegen extends GenerationStateAware {
@NotNull MethodVisitor mv,
@NotNull JvmMethodSignature signature,
@NotNull MethodContext context,
@NotNull Collection<String> localVariableNames,
@NotNull FrameMap frameMap
) {
generateDefaultAccessor(descriptor, new InstructionAdapter(mv), typeMapper, context);