]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/ConcreteModule.java
(refs #7809) Added builtin Pure type to indicate no effects
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / ConcreteModule.java
index b92f3dff6417c04b5d23b9dfe0899e7315759ed6..31ef0dc5a0cb9863874d042858aec59d451adadd 100644 (file)
@@ -12,6 +12,7 @@ import org.simantics.scl.compiler.constants.Constant;
 import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
 import org.simantics.scl.compiler.elaboration.modules.Documentation;
 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
+import org.simantics.scl.compiler.elaboration.modules.TypeAlias;
 import org.simantics.scl.compiler.elaboration.modules.TypeClass;
 import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
 import org.simantics.scl.compiler.elaboration.modules.TypeDescriptor;
@@ -22,8 +23,12 @@ import org.simantics.scl.compiler.elaboration.rules.TransformationRule;
 import org.simantics.scl.compiler.environment.filter.NamespaceFilter;
 import org.simantics.scl.compiler.errors.CompilationError;
 import org.simantics.scl.compiler.internal.codegen.effects.EffectConstructor;
+import org.simantics.scl.compiler.module.debug.ModuleDebugInfo;
 import org.simantics.scl.compiler.top.ModuleInitializer;
 import org.simantics.scl.compiler.types.TCon;
+import org.simantics.scl.compiler.types.TVar;
+import org.simantics.scl.compiler.types.Type;
+import org.simantics.scl.compiler.types.Types;
 import org.simantics.scl.runtime.profiling.BranchPoint;
 
 import gnu.trove.map.hash.THashMap;
@@ -54,6 +59,8 @@ public class ConcreteModule implements Module {
     ModuleInitializer moduleInitializer;
 
     protected Documentation documentation;
+    
+    public ModuleDebugInfo moduleDebugInfo;
 
     public ConcreteModule(String moduleName) {
         this.moduleName = moduleName;
@@ -76,6 +83,10 @@ public class ConcreteModule implements Module {
         return effectConstructors.put(name, effectConstructor) != null;
     }
 
+    public void addTypeAlias(String name, TVar[] parameters, Type body) {
+        typeDescriptors.put(name, new TypeAlias(Types.con(moduleName, name), parameters, body));
+    }
+    
     public boolean addTypeClass(String name, TypeClass typeClass) {
         return typeClasses.put(name, typeClass) != null;
     }
@@ -249,7 +260,7 @@ public class ConcreteModule implements Module {
         this.values.forEachEntry(new TObjectObjectProcedure<String,SCLValue>() {
             @Override
             public boolean execute(String name, SCLValue value) {
-                if(value.isPrivate())
+                if(value.isPrivateOrDerived())
                     return true;
                 String lowerPrefix = prefix.toLowerCase();
                 String lowerName = name.toLowerCase();
@@ -269,6 +280,11 @@ public class ConcreteModule implements Module {
                 consumer.accept(value);
         });
     }
+    
+    @Override
+    public List<String> getValueNames() {
+        return new ArrayList<String>(values.keySet());
+    }
 
     public Collection<SCLRelation> getRelations() {
         return relations.values();
@@ -336,4 +352,9 @@ public class ConcreteModule implements Module {
     public void setDeprecation(String deprecation) {
         this.deprecation = deprecation;
     }
+    
+    @Override
+    public ModuleDebugInfo getModuleDebugInfo() {
+        return moduleDebugInfo;
+    }
 }