X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fenvironment%2FConcreteEnvironment.java;h=c2a16f68151995defb0f4d02d7551ecf90df5f34;hb=4e753de3df98d5411f8329205c0e03f2e13e3c1d;hp=2fb5e41d769c1d02da6548407cd30347da92771d;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/ConcreteEnvironment.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/ConcreteEnvironment.java index 2fb5e41d7..c2a16f681 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/ConcreteEnvironment.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/ConcreteEnvironment.java @@ -1,12 +1,15 @@ package org.simantics.scl.compiler.environment; -import gnu.trove.map.hash.THashMap; - +import java.util.ArrayList; import java.util.Collection; +import java.util.List; +import org.simantics.scl.compiler.constants.Constant; import org.simantics.scl.compiler.elaboration.rules.TransformationRule; import org.simantics.scl.compiler.module.Module; +import gnu.trove.map.hash.THashMap; + public class ConcreteEnvironment extends AbstractEnvironment { private final THashMap moduleMap; @@ -18,6 +21,27 @@ public class ConcreteEnvironment extends AbstractEnvironment { this.localNamespace = localNamespace; } + @Override + public List getFieldAccessors(String name) { + List result = null; + boolean resultIsImmutable = true; + for(Module module : moduleMap.values()) { + List accessors = module.getFieldAccessors(name); + if(accessors != null) { + if(result == null) + result = accessors; + else if(resultIsImmutable) { + result = new ArrayList(result.size() + accessors.size()); + result.addAll(accessors); + resultIsImmutable = false; + } + else + result.addAll(accessors); + } + } + return result; + } + @Override public Namespace getLocalNamespace() { return localNamespace;