]> gerrit.simantics Code Review - simantics/platform.git/blob
50e4edd6a3068efd0130abe2f40766e7df089b34
[simantics/platform.git] /
1 package org.simantics.scl.compiler.elaboration.expressions;\r
2 \r
3 import org.simantics.scl.compiler.common.names.Name;\r
4 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;\r
5 import org.simantics.scl.compiler.elaboration.modules.SCLValue;\r
6 import org.simantics.scl.compiler.errors.Locations;\r
7 \r
8 public class ERange extends ASTExpression {\r
9     Expression from;\r
10     Expression to;\r
11     \r
12     public ERange(Expression from, Expression to) {\r
13         this.from = from;\r
14         this.to = to;\r
15     }\r
16 \r
17     private static final Name RANGE = Name.create("Prelude", "range");\r
18     \r
19     @Override\r
20     public Expression resolve(TranslationContext context) {\r
21         from = from.resolve(context);\r
22         to = to.resolve(context);\r
23         SCLValue rangeFunction = context.getEnvironment().getValue(RANGE);\r
24         return new EApply(location, new EConstant(rangeFunction), from, to);\r
25     }    \r
26     \r
27     @Override\r
28     public void setLocationDeep(long loc) {\r
29         if(location == Locations.NO_LOCATION) {\r
30             location = loc;\r
31             from.setLocationDeep(loc);\r
32             to.setLocationDeep(loc);\r
33         }\r
34     }\r
35     \r
36     @Override\r
37     public Expression accept(ExpressionTransformer transformer) {\r
38         return transformer.transform(this);\r
39     }\r
40 \r
41 }\r