]> 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 8a83e5f35644631bdc58c568dd70c275a264109d..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;
@@ -25,6 +26,9 @@ 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;
@@ -79,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;
     }