-package org.simantics.scl.compiler.elaboration.query;\r
-\r
-import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;\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.QueryTransformer;\r
-import org.simantics.scl.compiler.elaboration.expressions.Variable;\r
-import org.simantics.scl.compiler.elaboration.expressions.VariableProcedure;\r
-import org.simantics.scl.compiler.elaboration.query.compilation.ConstraintCollectionContext;\r
-import org.simantics.scl.compiler.elaboration.query.compilation.UnsolvableQueryException;\r
-import org.simantics.scl.compiler.errors.Locations;\r
-import org.simantics.scl.compiler.types.Types;\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 QIf extends Query {\r
- public Expression condition;\r
- public Query thenQuery;\r
- public Query elseQuery;\r
- \r
- public QIf(Expression condition, Query thenQuery, Query elseQuery) {\r
- this.condition = condition;\r
- this.thenQuery = thenQuery;\r
- this.elseQuery = elseQuery;\r
- }\r
-\r
- @Override\r
- public void collectFreeVariables(THashSet<Variable> vars) {\r
- condition.collectFreeVariables(vars);\r
- thenQuery.collectFreeVariables(vars);\r
- elseQuery.collectFreeVariables(vars);\r
- }\r
-\r
- @Override\r
- public void collectRefs(TObjectIntHashMap<Object> allRefs, TIntHashSet refs) {\r
- condition.collectRefs(allRefs, refs);\r
- thenQuery.collectRefs(allRefs, refs);\r
- elseQuery.collectRefs(allRefs, refs);\r
- }\r
-\r
- @Override\r
- public void collectVars(TObjectIntHashMap<Variable> allVars, TIntHashSet vars) {\r
- condition.collectVars(allVars, vars);\r
- thenQuery.collectVars(allVars, vars);\r
- elseQuery.collectVars(allVars, vars);\r
- }\r
-\r
- @Override\r
- public void checkType(TypingContext context) {\r
- condition.checkType(context, Types.BOOLEAN);\r
- thenQuery.checkType(context);\r
- elseQuery.checkType(context);\r
- }\r
-\r
- @Override\r
- public void collectConstraints(ConstraintCollectionContext context) throws UnsolvableQueryException {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
-\r
- @Override\r
- public Query replace(ReplaceContext context) {\r
- return new QIf(\r
- condition.replace(context),\r
- thenQuery.replace(context),\r
- elseQuery.replace(context));\r
- }\r
-\r
- @Override\r
- public void setLocationDeep(long loc) {\r
- if(location == Locations.NO_LOCATION) {\r
- this.location = loc;\r
- condition.setLocationDeep(loc);\r
- elseQuery.setLocationDeep(loc);\r
- thenQuery.setLocationDeep(loc);\r
- }\r
- }\r
-\r
- @Override\r
- public void accept(QueryVisitor visitor) {\r
- visitor.visit(this);\r
- }\r
-\r
- @Override\r
- public void forVariables(VariableProcedure procedure) {\r
- condition.forVariables(procedure);\r
- elseQuery.forVariables(procedure);\r
- thenQuery.forVariables(procedure);\r
- }\r
- \r
- @Override\r
- public Query accept(QueryTransformer transformer) {\r
- return transformer.transform(this);\r
- }\r
- \r
-}\r
+package org.simantics.scl.compiler.elaboration.query;
+
+import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
+import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+import org.simantics.scl.compiler.elaboration.expressions.QueryTransformer;
+import org.simantics.scl.compiler.elaboration.query.compilation.ConstraintCollectionContext;
+import org.simantics.scl.compiler.elaboration.query.compilation.UnsolvableQueryException;
+import org.simantics.scl.compiler.errors.Locations;
+import org.simantics.scl.compiler.types.Types;
+
+public class QIf extends Query {
+ public Expression condition;
+ public Query thenQuery;
+ public Query elseQuery;
+
+ public QIf(Expression condition, Query thenQuery, Query elseQuery) {
+ this.condition = condition;
+ this.thenQuery = thenQuery;
+ this.elseQuery = elseQuery;
+ }
+
+ @Override
+ public void checkType(TypingContext context) {
+ condition.checkType(context, Types.BOOLEAN);
+ thenQuery.checkType(context);
+ elseQuery.checkType(context);
+ }
+
+ @Override
+ public void collectConstraints(ConstraintCollectionContext context) throws UnsolvableQueryException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Query replace(ReplaceContext context) {
+ return new QIf(
+ condition.replace(context),
+ thenQuery.replace(context),
+ elseQuery.replace(context));
+ }
+
+ @Override
+ public void setLocationDeep(long loc) {
+ if(location == Locations.NO_LOCATION) {
+ this.location = loc;
+ condition.setLocationDeep(loc);
+ elseQuery.setLocationDeep(loc);
+ thenQuery.setLocationDeep(loc);
+ }
+ }
+
+ @Override
+ public void accept(QueryVisitor visitor) {
+ visitor.visit(this);
+ }
+
+ @Override
+ public Query accept(QueryTransformer transformer) {
+ return transformer.transform(this);
+ }
+
+}