]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/visitors/CollectVarsVisitor.java
(refs #7375) Replaced collectVars method by a visitor
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / visitors / CollectVarsVisitor.java
1 package org.simantics.scl.compiler.elaboration.expressions.visitors;
2
3 import org.simantics.scl.compiler.elaboration.expressions.EAsPattern;
4 import org.simantics.scl.compiler.elaboration.expressions.EVariable;
5 import org.simantics.scl.compiler.elaboration.expressions.Variable;
6
7 import gnu.trove.map.hash.TObjectIntHashMap;
8 import gnu.trove.set.hash.TIntHashSet;
9
10 public class CollectVarsVisitor extends StandardExpressionVisitor {
11     private final TObjectIntHashMap<Variable> allVars;
12     private final TIntHashSet vars;
13     
14     public CollectVarsVisitor(TObjectIntHashMap<Variable> allVars, TIntHashSet vars) {
15         this.allVars = allVars;
16         this.vars = vars;
17     }
18
19     @Override
20     public void visit(EVariable expression) {
21         if(expression.variable != null) {
22             int id = allVars.get(expression.variable);
23             if(id >= 0)
24                 vars.add(id);
25         }
26     }
27     
28     @Override
29     public void visit(EAsPattern expression) {
30         int id = allVars.get(expression.var);
31         if(id >= 0)
32             vars.add(id);
33         expression.pattern.accept(this);
34     }
35 }