Remove useless parameter from FunctionGenerationStrategy
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user