package org.simantics.scl.compiler.elaboration.expressions;
+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.continuations.ICont;
import org.simantics.scl.compiler.internal.codegen.references.IVal;
}
@Override
- public IVal toVal(Environment env, CodeWriter w) {
+ public IVal toVal(CompilationContext context, CodeWriter w) {
CodeWriter success = w.createBlock(getType());
IVal result = success.getParameters()[0];
CodeWriter failure = w.createBlock();
- compile(env, w, success.getContinuation(), failure.getContinuation());
+ compile(context, w, success.getContinuation(), failure.getContinuation());
w.continueAs(success);
failure.throw_(location, Throw.MatchingException, "Matching failure at: " + toString());
return result;
return this;
}
- public void compile(Environment env, CodeWriter firstWriter, ICont success,
+ public void compile(CompilationContext context, CodeWriter firstWriter, ICont success,
ICont lastFailure) {
// Create all code blocks
CodeWriter[] writers = new CodeWriter[expressions.length];
for(Expression guard : expressions[i].guards) {
CodeWriter nextW = w.createBlock();
- w.if_(guard.toVal(env, w), nextW.getContinuation(), failure);
+ w.if_(guard.toVal(context, w), nextW.getContinuation(), failure);
w = nextW;
}
- w.jump(success, expressions[i].value.toVal(env, w));
+ w.jump(success, expressions[i].value.toVal(context, w));
}
}