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=HEAD;hp=e3280daf6e731494e40f2e968093dea2e0aae9ea;hpb=eecd74faded034bd067094b42bbac0d286d8d9fa;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 e3280daf6..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,7 +1,10 @@ package org.simantics.scl.compiler.environment; +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; @@ -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;