X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fquery%2FQAtom.java;h=fd7dacb799b625984ccf280c1b4f96380701c950;hp=95760513b5383e80136b8005ff9ed50ce4a8b82a;hb=9a175feb652b2b7bba7afa540831b9076be3c10e;hpb=0b72d3e4ec886838314ffeba0fa201e32c0aae3e diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/query/QAtom.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/query/QAtom.java index 95760513b..fd7dacb79 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/query/QAtom.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/query/QAtom.java @@ -1,11 +1,5 @@ package org.simantics.scl.compiler.elaboration.query; -import gnu.trove.map.hash.THashMap; -import gnu.trove.map.hash.TIntObjectHashMap; -import gnu.trove.map.hash.TObjectIntHashMap; -import gnu.trove.set.hash.THashSet; -import gnu.trove.set.hash.TIntHashSet; - import java.util.ArrayList; import java.util.Set; @@ -31,16 +25,22 @@ import org.simantics.scl.compiler.types.TVar; import org.simantics.scl.compiler.types.Type; import org.simantics.scl.compiler.types.Types; +import gnu.trove.map.hash.THashMap; +import gnu.trove.map.hash.TIntObjectHashMap; +import gnu.trove.map.hash.TObjectIntHashMap; +import gnu.trove.set.hash.THashSet; +import gnu.trove.set.hash.TIntHashSet; + public class QAtom extends Query { public SCLRelation relation; public Type[] typeParameters; public Expression[] parameters; - + public QAtom(SCLRelation relation, Expression ... parameters) { this.relation = relation; this.parameters = parameters; } - + public QAtom(SCLRelation relation, Type[] typeParameters, Expression ... parameters) { this.relation = relation; this.typeParameters = typeParameters; @@ -52,7 +52,7 @@ public class QAtom extends Query { for(Expression parameter : parameters) parameter.collectFreeVariables(vars); } - + @Override public void checkType(TypingContext context) { // Type parameters @@ -60,7 +60,7 @@ public class QAtom extends Query { typeParameters = new Type[typeVariables.length]; for(int i=0;i= 0) allVariablesSet.add(v); - + context.addConstraint(new RelationConstraint(allVariablesSet.toArray(), varParameters, this, optionalVariableByParameter, procedure.requiredVariablesMask)); } catch(Exception e) { context.getQueryCompilationContext().getTypingContext().getErrorLog().log(location, e); } } - + private static void collectRefs(SCLRelation relation, TObjectIntHashMap allRefs, TIntHashSet refs) { if(relation instanceof CompositeRelation) { @@ -167,7 +167,7 @@ public class QAtom extends Query { for(Expression parameter : parameters) parameter.collectRefs(allRefs, refs); } - + @Override public void collectVars(TObjectIntHashMap allVars, TIntHashSet vars) { @@ -215,7 +215,7 @@ public class QAtom extends Query { return new Diff[] { new Diff(diffable.id, new QConjunction(eqs)) }; } } - + private static boolean containsReferenceTo( CompositeRelation relation, THashMap diffables) { @@ -235,7 +235,7 @@ public class QAtom extends Query { else return this; } - + @Override public void setLocationDeep(long loc) { if(location == Locations.NO_LOCATION) { @@ -244,7 +244,7 @@ public class QAtom extends Query { parameter.setLocationDeep(loc); } } - + @Override public void accept(QueryVisitor visitor) { visitor.visit(this); @@ -266,7 +266,7 @@ public class QAtom extends Query { } list.add(this); } - + @Override public Query accept(QueryTransformer transformer) { return transformer.transform(this);