import java.util.ArrayList;
+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.IVal;
import org.simantics.scl.compiler.internal.codegen.ssa.exits.Throw;
}
@Override
- public IVal toVal(Environment env, CodeWriter w) {
+ public IVal toVal(CompilationContext context, CodeWriter w) {
ArrayList<Row> rows = new ArrayList<Row>(cases.length);
for(Case case_ : cases)
rows.add(new Row(case_.patterns, case_.value));
IVal[] scrutineeVals = new IVal[scrutinee.length];
for(int i=0;i<scrutinee.length;++i)
- scrutineeVals[i] = scrutinee[i].toVal(env, w);
+ scrutineeVals[i] = scrutinee[i].toVal(context, w);
CodeWriter joinPoint = w.createBlock(getType());
CodeWriter failurePoint = w.createBlock(); // TODO generate only one failurePoint per function
- PatternMatchingCompiler.split(w, env, scrutineeVals, joinPoint.getContinuation(), failurePoint.getContinuation(), rows);
+ PatternMatchingCompiler.split(w, context, scrutineeVals, joinPoint.getContinuation(), failurePoint.getContinuation(), rows);
failurePoint.throw_(location, Throw.MatchingException, "Matching failure at: " + toString());
w.continueAs(joinPoint);
return w.getParameters()[0];