import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
import org.simantics.scl.compiler.elaboration.expressions.Variable;
import org.simantics.scl.compiler.elaboration.modules.SCLValue;
-import org.simantics.scl.compiler.environment.Environment;
-import org.simantics.scl.compiler.errors.ErrorLog;
import org.simantics.scl.compiler.internal.elaboration.constraints.Constraint;
import org.simantics.scl.compiler.internal.elaboration.utils.StronglyConnectedComponents;
import org.simantics.scl.compiler.types.TPred;
* @author Hannu Niemistö
*/
public class TypeCheckingScheduler {
- final ErrorLog errorLog;
- final Environment environment;
+ private final CompilationContext compilationContext;
- ArrayList<TypeInferableDefinition> definitions = new ArrayList<TypeInferableDefinition>();
- ArrayList<Runnable> postTypeCheckingRunnables = new ArrayList<Runnable>();
+ private final ArrayList<TypeInferableDefinition> definitions = new ArrayList<TypeInferableDefinition>();
+ private final ArrayList<Runnable> postTypeCheckingRunnables = new ArrayList<Runnable>();
- public TypeCheckingScheduler(ErrorLog errorLog, Environment environment) {
- this.errorLog = errorLog;
- this.environment = environment;
+ public TypeCheckingScheduler(CompilationContext compilationContext) {
+ this.compilationContext = compilationContext;
}
public void addTypeInferableDefinition(TypeInferableDefinition definition) {
}
private void typeCheck(int[] component) {
- TypingContext context = new TypingContext(errorLog, environment);
+ TypingContext context = new TypingContext(compilationContext);
context.recursiveValues = new THashSet<SCLValue>();
for(int c : component)
constraintMap.put(cons.constraint, cons);
}
Constraint cons = constraintMap.get(constraint);
- errorLog.log(cons.getDemandLocation(),
+ compilationContext.errorLog.log(cons.getDemandLocation(),
"Constrain " + constraint +
" contains free variables not mentioned in the type of the value.");
}