1 package org.simantics.scl.compiler.elaboration.equation;
3 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
4 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;
5 import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
6 import org.simantics.scl.compiler.elaboration.expressions.Expression;
7 import org.simantics.scl.compiler.errors.Locations;
9 public class EqBasic extends Equation {
10 public Expression left;
11 public Expression right;
13 public EqBasic(Expression left, Expression right) {
18 public EqBasic(long location, Expression left, Expression right) {
20 this.location = location;
24 public void setLocationDeep(long loc) {
25 if(location == Locations.NO_LOCATION) {
27 left.setLocationDeep(loc);
28 right.setLocationDeep(loc);
33 public void checkType(TypingContext context) {
34 left = left.inferType(context);
35 right = right.checkType(context, left.getType());
39 public void resolve(TranslationContext context) {
40 left = left.resolve(context);
41 right = right.resolve(context);
45 public void accept(EquationVisitor visitor) {
50 public Equation replace(ReplaceContext context) {
51 return new EqBasic(location, left.replace(context), right.replace(context));