]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/equation/EqGuard.java
migrated to svn revision 33108
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / equation / EqGuard.java
1 package org.simantics.scl.compiler.elaboration.equation;\r
2 \r
3 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;\r
4 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;\r
5 import org.simantics.scl.compiler.elaboration.contexts.TypingContext;\r
6 import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
7 import org.simantics.scl.compiler.elaboration.expressions.Variable;\r
8 import org.simantics.scl.compiler.elaboration.expressions.VariableProcedure;\r
9 import org.simantics.scl.compiler.errors.Locations;\r
10 import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator;\r
11 import org.simantics.scl.compiler.types.Type;\r
12 \r
13 import gnu.trove.map.hash.TObjectIntHashMap;\r
14 import gnu.trove.set.hash.THashSet;\r
15 import gnu.trove.set.hash.TIntHashSet;\r
16 \r
17 public class EqGuard extends Equation {\r
18     public Expression guard;\r
19 \r
20     public EqGuard(Expression guard) {\r
21         this.guard = guard;\r
22     }\r
23     \r
24     public EqGuard(long location, Expression guard) {\r
25         this(guard);\r
26         this.location = location;\r
27     }\r
28 \r
29     @Override\r
30     public void setLocationDeep(long loc) {\r
31         if(location == Locations.NO_LOCATION) {\r
32             location = loc;\r
33             guard.setLocationDeep(loc);\r
34         }\r
35     }\r
36 \r
37     @Override\r
38     public void forVariables(VariableProcedure procedure) {\r
39         guard.forVariables(procedure);\r
40     }\r
41 \r
42     @Override\r
43     public void collectFreeVariables(THashSet<Variable> vars) {\r
44         guard.collectFreeVariables(vars);\r
45     }\r
46 \r
47     @Override\r
48     public void decorate(ExpressionDecorator decorator) {\r
49         guard = guard.decorate(decorator);\r
50     }\r
51 \r
52     @Override\r
53     public void collectEffects(THashSet<Type> effects) {\r
54         guard.collectEffects(effects);\r
55     }\r
56 \r
57     @Override\r
58     public void checkType(TypingContext context) {\r
59         guard = guard.checkIgnoredType(context);\r
60     }\r
61 \r
62     @Override\r
63     public void collectRefs(TObjectIntHashMap<Object> allRefs, TIntHashSet refs) {\r
64         guard.collectRefs(allRefs, refs);\r
65     }\r
66 \r
67     @Override\r
68     public void collectVars(TObjectIntHashMap<Variable> allVars, TIntHashSet vars) {\r
69         guard.collectVars(allVars, vars);\r
70     }\r
71 \r
72     @Override\r
73     public void resolve(TranslationContext context) {\r
74         guard = guard.resolve(context);\r
75     }\r
76     \r
77     @Override\r
78     public void accept(EquationVisitor visitor) {\r
79         visitor.visit(this);\r
80     }\r
81 \r
82     @Override\r
83     public Equation replace(ReplaceContext context) {\r
84         return new EqGuard(location, guard.replace(context));\r
85     }\r
86 }\r