]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Expression.java
(refs #7278, refs #7279) Small fixes to InternalCompilerExceptions
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / Expression.java
index a0f28d190bf7340234ae5a052675f572f6275c10..2b75f61cd0c236a2d37a5f7dae20e26224281362 100644 (file)
@@ -4,6 +4,7 @@ import java.util.ArrayList;
 
 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
 import org.simantics.scl.compiler.common.precedence.Precedence;
+import org.simantics.scl.compiler.compilation.CompilationContext;
 import org.simantics.scl.compiler.constants.NoRepConstant;
 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
 import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext;
@@ -15,7 +16,6 @@ import org.simantics.scl.compiler.elaboration.expressions.lhstype.PatternMatchin
 import org.simantics.scl.compiler.elaboration.expressions.printing.ExpressionToStringVisitor;
 import org.simantics.scl.compiler.elaboration.query.QAtom;
 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
-import org.simantics.scl.compiler.environment.Environment;
 import org.simantics.scl.compiler.internal.codegen.references.IVal;
 import org.simantics.scl.compiler.internal.codegen.writer.CodeWriter;
 import org.simantics.scl.compiler.internal.elaboration.decomposed.DecomposedExpression;
@@ -196,7 +196,7 @@ public abstract class Expression extends Symbol implements Typed {
             throw new TypeValidationException(loc);
     }
 
-       public abstract IVal toVal(Environment env, CodeWriter w);
+       public abstract IVal toVal(CompilationContext context, CodeWriter w);
                
        public Expression closure(TVar ... vars) {
            if(vars.length == 0)
@@ -303,14 +303,14 @@ public abstract class Expression extends Symbol implements Typed {
         throw new NotPatternException(this);
     }
     
-    public IVal lambdaToVal(Environment env, CodeWriter w) {
-        DecomposedExpression decomposed = DecomposedExpression.decompose(this);
+    public IVal lambdaToVal(CompilationContext context, CodeWriter w) {
+        DecomposedExpression decomposed = DecomposedExpression.decompose(context.errorLog, this);
         CodeWriter newW = w.createFunction(decomposed.typeParameters, decomposed.effect, decomposed.returnType, decomposed.parameterTypes);
         IVal[] parameters = newW.getParameters();
         IVal functionVal = newW.getFunction().getTarget();
         for(int i=0;i<parameters.length;++i)
             decomposed.parameters[i].setVal(parameters[i]);
-        newW.return_(decomposed.body.toVal(env, newW));
+        newW.return_(decomposed.body.toVal(context, newW));
         return functionVal;
     }