+package org.simantics.scl.compiler.elaboration.expressions.accessor;\r
+\r
+import org.simantics.scl.compiler.constants.StringConstant;\r
+import org.simantics.scl.compiler.elaboration.expressions.ELiteral;\r
+import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
+import org.simantics.scl.compiler.elaboration.expressions.VariableProcedure;\r
+import org.simantics.scl.compiler.errors.Locations;\r
+\r
+public class IdAccessor extends FieldAccessor {\r
+ public final String fieldName;\r
+\r
+ public IdAccessor(String fieldName) {\r
+ this.fieldName = fieldName;\r
+ }\r
+\r
+ @Override\r
+ public Expression asExpression() {\r
+ return new ELiteral(new StringConstant(fieldName));\r
+ }\r
+\r
+ @Override\r
+ public boolean isVariableId() {\r
+ return fieldName.equals("variable");\r
+ }\r
+ \r
+ @Override\r
+ public void setLocationDeep(long loc) {\r
+ if(location == Locations.NO_LOCATION)\r
+ location = loc;\r
+ }\r
+ \r
+ @Override\r
+ public void accept(FieldAccessorVisitor visitor) {\r
+ visitor.visit(this);\r
+ }\r
+\r
+ @Override\r
+ public void forVariables(VariableProcedure procedure) {\r
+ }\r
+}\r