import java.util.ArrayList;
import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
+import org.simantics.scl.compiler.compilation.CompilationContext;
import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext;
import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;
import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
-import org.simantics.scl.compiler.environment.Environment;
import org.simantics.scl.compiler.errors.Locations;
import org.simantics.scl.compiler.internal.codegen.references.BoundVar;
import org.simantics.scl.compiler.internal.codegen.references.IVal;
import gnu.trove.set.hash.THashSet;
import gnu.trove.set.hash.TIntHashSet;
+/**
+ * Generated maily from EPreLet
+ */
public class ELet extends Expression {
public Assignment[] assignments;
public Expression in;
}
@Override
- public IVal toVal(Environment env, CodeWriter w) {
+ public IVal toVal(CompilationContext context, CodeWriter w) {
// Create bound variables
BoundVar[] vars = new BoundVar[assignments.length];
for(int i=0;i<assignments.length;++i) {
rdw.setLocation(range);
for(int i=0;i<assignments.length;++i) {
DecomposedExpression decomposed =
- DecomposedExpression.decompose(assignments[i].value);
+ DecomposedExpression.decompose(context.errorLog, assignments[i].value);
CodeWriter newW = rdw.createFunction(vars[i],
decomposed.typeParameters,
decomposed.effect,
IVal[] parameters = newW.getParameters();
for(int j=0;j<parameters.length;++j)
decomposed.parameters[j].setVal(parameters[j]);
- newW.return_(decomposed.body.toVal(env, newW));
+ newW.return_(decomposed.body.toVal(context, newW));
}
- return in.toVal(env, w);
+ return in.toVal(context, w);
}
private void checkAssignments(TypingContext context) {