]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/Expression.java
(refs #7375) Replaced forVariables by a visitor
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / Expression.java
index 0d48c4a153492e47307e7521831fc1dc0f7cc1db..da3afdbfa08ea1df7ccef191f859790b1d34f0d9 100644 (file)
@@ -14,6 +14,7 @@ import org.simantics.scl.compiler.elaboration.errors.NotPatternException;
 import org.simantics.scl.compiler.elaboration.expressions.lhstype.LhsType;
 import org.simantics.scl.compiler.elaboration.expressions.lhstype.PatternMatchingLhs;
 import org.simantics.scl.compiler.elaboration.expressions.printing.ExpressionToStringVisitor;
+import org.simantics.scl.compiler.elaboration.expressions.visitors.ForVariablesUsesVisitor;
 import org.simantics.scl.compiler.elaboration.query.QAtom;
 import org.simantics.scl.compiler.elaboration.relations.SCLRelation;
 import org.simantics.scl.compiler.internal.codegen.references.IVal;
@@ -156,9 +157,12 @@ public abstract class Expression extends Symbol implements Typed {
 
        public abstract void collectRefs(TObjectIntHashMap<Object> allRefs, TIntHashSet refs);
        public abstract void collectVars(TObjectIntHashMap<Variable> allVars, TIntHashSet vars);
-       public abstract void forVariables(VariableProcedure procedure);
-       
-       public Expression decomposeMatching() {
+
+    public void forVariableUses(VariableProcedure procedure) {
+        accept(new ForVariablesUsesVisitor(procedure));
+    }
+
+    public Expression decomposeMatching() {
         return this;
     }
 
@@ -258,7 +262,7 @@ public abstract class Expression extends Symbol implements Typed {
         THashSet<Variable> result = new THashSet<Variable>();
         collectFreeVariables(result);
         return result;
-    }    
+    }
 
     public static Expression[] concat(Expression[] a, Expression[] b) {
         if(a.length == 0)