X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fenvironment%2FNamespaceImpl.java;h=214749bcb05b881c660325f29c2d53bd26e61553;hb=84b211a0aa05c956d33e038a1106bb0464ce373a;hp=0c97d308ab680ed87ee6a2dbace1b971ea6e9d3c;hpb=27d76db8786149c91b2e5a97d79c774e8c163eb0;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/NamespaceImpl.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/NamespaceImpl.java index 0c97d308a..214749bcb 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/NamespaceImpl.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/NamespaceImpl.java @@ -1,10 +1,9 @@ package org.simantics.scl.compiler.environment; import java.util.ArrayList; -import java.util.List; import java.util.function.Consumer; -import org.simantics.scl.compiler.constants.Constant; +import org.simantics.scl.compiler.elaboration.chr.CHRRuleset; import org.simantics.scl.compiler.elaboration.modules.SCLValue; import org.simantics.scl.compiler.elaboration.modules.TypeClass; import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor; @@ -268,6 +267,33 @@ public class NamespaceImpl implements Namespace { return result; } + @Override + public CHRRuleset getRuleset(String name) throws AmbiguousNameException { + CHRRuleset result = null, temp; + Module resultModule = null; + ArrayList conflictingModules = null; + for(ModuleImport moduleImport : moduleImports) { + Module module = moduleImport.module; + temp = module.getRuleset(name); + if(temp != null) { + if(result != null) { + if(conflictingModules == null) { + conflictingModules = new ArrayList(2); + conflictingModules.add(resultModule.getName()); + } + conflictingModules.add(module.getName()); + } + else { + result = temp; + resultModule = module; + } + } + } + if(conflictingModules != null) + throw new AmbiguousNameException(conflictingModules, name); + return result; + } + @Override public void findValuesForPrefix(String prefix, NamespaceFilter filter, TObjectProcedure proc) { for(ModuleImport moduleImport : moduleImports)