-package org.simantics.scl.compiler.elaboration.equation;\r
-\r
-import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;\r
-import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;\r
-import org.simantics.scl.compiler.elaboration.contexts.TypingContext;\r
-import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
-import org.simantics.scl.compiler.elaboration.expressions.Variable;\r
-import org.simantics.scl.compiler.elaboration.expressions.VariableProcedure;\r
-import org.simantics.scl.compiler.errors.Locations;\r
-import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator;\r
-import org.simantics.scl.compiler.types.Type;\r
-\r
-import gnu.trove.map.hash.TObjectIntHashMap;\r
-import gnu.trove.set.hash.THashSet;\r
-import gnu.trove.set.hash.TIntHashSet;\r
-\r
-public class EqBasic extends Equation {\r
- public Expression left;\r
- public Expression right;\r
- \r
- public EqBasic(Expression left, Expression right) {\r
- this.left = left;\r
- this.right = right;\r
- }\r
- \r
- public EqBasic(long location, Expression left, Expression right) {\r
- this(left, right);\r
- this.location = location;\r
- }\r
- \r
- @Override\r
- public void setLocationDeep(long loc) {\r
- if(location == Locations.NO_LOCATION) {\r
- location = loc;\r
- left.setLocationDeep(loc);\r
- right.setLocationDeep(loc);\r
- }\r
- }\r
-\r
- @Override\r
- public void forVariables(VariableProcedure procedure) {\r
- left.forVariables(procedure);\r
- right.forVariables(procedure);\r
- }\r
-\r
- @Override\r
- public void collectFreeVariables(THashSet<Variable> vars) {\r
- left.collectFreeVariables(vars);\r
- right.collectFreeVariables(vars);\r
- }\r
-\r
- @Override\r
- public void decorate(ExpressionDecorator decorator) {\r
- left = left.decorate(decorator);\r
- right = right.decorate(decorator);\r
- }\r
-\r
- @Override\r
- public void collectEffects(THashSet<Type> effects) {\r
- left.collectEffects(effects);\r
- right.collectEffects(effects);\r
- }\r
-\r
- @Override\r
- public void checkType(TypingContext context) {\r
- left = left.inferType(context);\r
- right = right.checkType(context, left.getType());\r
- }\r
-\r
- @Override\r
- public void collectRefs(TObjectIntHashMap<Object> allRefs, TIntHashSet refs) {\r
- left.collectRefs(allRefs, refs);\r
- right.collectRefs(allRefs, refs);\r
- }\r
-\r
- @Override\r
- public void collectVars(TObjectIntHashMap<Variable> allVars, TIntHashSet vars) {\r
- left.collectVars(allVars, vars);\r
- right.collectVars(allVars, vars);\r
- }\r
-\r
- @Override\r
- public void resolve(TranslationContext context) {\r
- left = left.resolve(context);\r
- right = right.resolve(context);\r
- }\r
-\r
- @Override\r
- public void accept(EquationVisitor visitor) {\r
- visitor.visit(this);\r
- }\r
-\r
- @Override\r
- public Equation replace(ReplaceContext context) {\r
- return new EqBasic(location, left.replace(context), right.replace(context));\r
- }\r
-}\r
+package org.simantics.scl.compiler.elaboration.equation;
+
+import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
+import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;
+import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+import org.simantics.scl.compiler.errors.Locations;
+
+public class EqBasic extends Equation {
+ public Expression left;
+ public Expression right;
+
+ public EqBasic(Expression left, Expression right) {
+ this.left = left;
+ this.right = right;
+ }
+
+ public EqBasic(long location, Expression left, Expression right) {
+ this(left, right);
+ this.location = location;
+ }
+
+ @Override
+ public void setLocationDeep(long loc) {
+ if(location == Locations.NO_LOCATION) {
+ location = loc;
+ left.setLocationDeep(loc);
+ right.setLocationDeep(loc);
+ }
+ }
+
+ @Override
+ public void checkType(TypingContext context) {
+ left = left.inferType(context);
+ right = right.checkType(context, left.getType());
+ }
+
+ @Override
+ public void resolve(TranslationContext context) {
+ left = left.resolve(context);
+ right = right.resolve(context);
+ }
+
+ @Override
+ public void accept(EquationVisitor visitor) {
+ visitor.visit(this);
+ }
+
+ @Override
+ public Equation replace(ReplaceContext context) {
+ return new EqBasic(location, left.replace(context), right.replace(context));
+ }
+}