--- /dev/null
+package org.simantics.scl.compiler.elaboration.expressions;\r
+\r
+import org.simantics.scl.compiler.common.names.Name;\r
+import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;\r
+import org.simantics.scl.compiler.elaboration.modules.SCLValue;\r
+import org.simantics.scl.compiler.errors.Locations;\r
+\r
+public class ERange extends ASTExpression {\r
+ Expression from;\r
+ Expression to;\r
+ \r
+ public ERange(Expression from, Expression to) {\r
+ this.from = from;\r
+ this.to = to;\r
+ }\r
+\r
+ private static final Name RANGE = Name.create("Prelude", "range");\r
+ \r
+ @Override\r
+ public Expression resolve(TranslationContext context) {\r
+ from = from.resolve(context);\r
+ to = to.resolve(context);\r
+ SCLValue rangeFunction = context.getEnvironment().getValue(RANGE);\r
+ return new EApply(location, new EConstant(rangeFunction), from, to);\r
+ } \r
+ \r
+ @Override\r
+ public void setLocationDeep(long loc) {\r
+ if(location == Locations.NO_LOCATION) {\r
+ location = loc;\r
+ from.setLocationDeep(loc);\r
+ to.setLocationDeep(loc);\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public Expression accept(ExpressionTransformer transformer) {\r
+ return transformer.transform(this);\r
+ }\r
+\r
+}\r