]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/equation/EqGuard.java
(refs #7375) Replaced collectVars method by a visitor
[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;
2
3 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
4 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;
5 import org.simantics.scl.compiler.elaboration.contexts.TypingContext;
6 import org.simantics.scl.compiler.elaboration.expressions.Expression;
7 import org.simantics.scl.compiler.errors.Locations;
8
9 public class EqGuard extends Equation {
10     public Expression guard;
11
12     public EqGuard(Expression guard) {
13         this.guard = guard;
14     }
15     
16     public EqGuard(long location, Expression guard) {
17         this(guard);
18         this.location = location;
19     }
20
21     @Override
22     public void setLocationDeep(long loc) {
23         if(location == Locations.NO_LOCATION) {
24             location = loc;
25             guard.setLocationDeep(loc);
26         }
27     }
28
29     @Override
30     public void checkType(TypingContext context) {
31         guard = guard.checkIgnoredType(context);
32     }
33
34     @Override
35     public void resolve(TranslationContext context) {
36         guard = guard.resolve(context);
37     }
38     
39     @Override
40     public void accept(EquationVisitor visitor) {
41         visitor.visit(this);
42     }
43
44     @Override
45     public Equation replace(ReplaceContext context) {
46         return new EqGuard(location, guard.replace(context));
47     }
48 }