X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2FEFieldAccess.java;h=668c05393d0f29444823b70833479d600fb86f33;hp=c05b15409bf8976d6a95c386d7a714085c7c5d01;hb=6dfe20b0f514b91337fcac4de0267ffd8268be07;hpb=f5b8a3d0b68ab33a78235c5dfa84fc1d45f6271e diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EFieldAccess.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EFieldAccess.java index c05b15409..668c05393 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EFieldAccess.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/EFieldAccess.java @@ -11,22 +11,20 @@ import org.simantics.scl.compiler.elaboration.expressions.EAmbiguous.Alternative import org.simantics.scl.compiler.elaboration.expressions.accessor.FieldAccessor; import org.simantics.scl.compiler.elaboration.expressions.accessor.IdAccessor; import org.simantics.scl.compiler.errors.Locations; -import org.simantics.scl.compiler.internal.elaboration.utils.ExpressionDecorator; import org.simantics.scl.compiler.internal.header.ModuleHeader; import org.simantics.scl.compiler.types.Type; import org.simantics.scl.compiler.types.Types; import org.simantics.scl.compiler.types.exceptions.MatchException; import gnu.trove.map.hash.TObjectIntHashMap; -import gnu.trove.set.hash.THashSet; import gnu.trove.set.hash.TIntHashSet; public class EFieldAccess extends SimplifiableExpression { private static final Type VARIABLE = Types.con("Simantics/Variables", "Variable"); - Expression parent; - FieldAccessor accessor; + public Expression parent; + public FieldAccessor accessor; boolean lastAccessor = true; public EFieldAccess(Expression parent, FieldAccessor accessor) { @@ -36,13 +34,6 @@ public class EFieldAccess extends SimplifiableExpression { ((EFieldAccess)parent).lastAccessor = false; } - @Override - public void collectRefs(TObjectIntHashMap allRefs, - TIntHashSet refs) { - parent.collectRefs(allRefs, refs); - accessor.collectRefs(allRefs, refs); - } - @Override public void collectVars(TObjectIntHashMap allVars, TIntHashSet vars) { @@ -67,7 +58,7 @@ public class EFieldAccess extends SimplifiableExpression { return null; List accessors = context.getEnvironment().getFieldAccessors(idAccessor.fieldName); if(accessors == null) { - context.getErrorLog().log("Couldn't resolve accessor ." + idAccessor.fieldName + "."); + context.getErrorLog().log(idAccessor.location, "Couldn't resolve accessor ." + idAccessor.fieldName + "."); return new EError(location); } Expression accessorExpression; @@ -86,9 +77,14 @@ public class EFieldAccess extends SimplifiableExpression { public Type getType() { return accessors.get(index).getType(); } + @Override + public String toString() { + return accessors.get(index).toString(); + } }; } accessorExpression = new EAmbiguous(alternatives); + accessorExpression.location = location; } return new EApply(location, accessorExpression, parent).checkType(context, requiredType); } @@ -115,12 +111,6 @@ public class EFieldAccess extends SimplifiableExpression { return this; } - @Override - public void collectFreeVariables(THashSet vars) { - parent.collectFreeVariables(vars); - accessor.collectFreeVariables(vars); - } - @Override public Expression simplify(SimplificationContext context) { // Simplify subexpressions @@ -161,17 +151,6 @@ public class EFieldAccess extends SimplifiableExpression { accessor.resolve(context); return this; } - - @Override - public Expression decorate(ExpressionDecorator decorator) { - return decorator.decorate(this); - } - - @Override - public void collectEffects(THashSet effects) { - // FIXME - effects.add(Types.READ_GRAPH); - } @Override public void setLocationDeep(long loc) { @@ -186,12 +165,6 @@ public class EFieldAccess extends SimplifiableExpression { public void accept(ExpressionVisitor visitor) { visitor.visit(this); } - - @Override - public void forVariables(VariableProcedure procedure) { - parent.forVariables(procedure); - accessor.forVariables(procedure); - } @Override public Expression accept(ExpressionTransformer transformer) {