Skip to content
Merged
Binary file modified source_.jar
Binary file not shown.
372 changes: 31 additions & 341 deletions src/main/java/cod/interpreter/InterpreterVisitor.java

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions src/main/java/cod/interpreter/TailCallSignal.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package cod.interpreter;

import cod.interpreter.context.LambdaClosure;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public final class TailCallSignal extends RuntimeException {
public final String methodName;
public final LambdaClosure lambdaClosure;
public final List<Object> arguments;

private TailCallSignal(String methodName, LambdaClosure lambdaClosure, List<Object> arguments) {
this.methodName = methodName;
this.lambdaClosure = lambdaClosure;
this.arguments = arguments != null ? new ArrayList<Object>(arguments) : Collections.<Object>emptyList();
}

public static TailCallSignal forMethod(String methodName, List<Object> arguments) {
return new TailCallSignal(methodName, null, arguments);
}

public static TailCallSignal forLambda(LambdaClosure lambdaClosure, List<Object> arguments) {
return new TailCallSignal(null, lambdaClosure, arguments);
}
}
Loading