1 package org.simantics.scl.compiler.elaboration.expressions;
\r
3 import org.simantics.scl.compiler.elaboration.contexts.ReplaceContext;
\r
4 import org.simantics.scl.compiler.errors.Locations;
\r
5 import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator;
\r
6 import org.simantics.scl.compiler.internal.parsing.Symbol;
\r
8 public class GuardedExpression extends Symbol {
\r
9 public Expression[] guards;
\r
10 public Expression value;
\r
12 public GuardedExpression(Expression[] guards, Expression value) {
\r
13 this.guards = guards;
\r
17 public GuardedExpression replace(ReplaceContext context) {
\r
18 return new GuardedExpression(
\r
19 Expression.replace(context, guards),
\r
20 value.replace(context));
\r
23 public void decorate(ExpressionDecorator decorator) {
\r
24 for(int i=0;i<guards.length;++i)
\r
25 guards[i] = guards[i].decorate(decorator);
\r
26 value = value.decorate(decorator);
\r
29 public void setLocationDeep(long loc) {
\r
30 if(location == Locations.NO_LOCATION) {
\r
32 for(Expression guard : guards)
\r
33 guard.setLocationDeep(loc);
\r
34 value.setLocationDeep(loc);
\r
38 public void forVariables(VariableProcedure procedure) {
\r
39 for(Expression guard : guards)
\r
40 guard.forVariables(procedure);
\r
41 value.forVariables(procedure);
\r