]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/types/MaybeType.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / types / MaybeType.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/types/MaybeType.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/types/MaybeType.java
new file mode 100644 (file)
index 0000000..1f86f92
--- /dev/null
@@ -0,0 +1,24 @@
+package org.simantics.scl.compiler.internal.codegen.types;\r
+\r
+import org.cojen.classfile.TypeDesc;\r
+import org.simantics.scl.compiler.elaboration.modules.TypeConstructor;\r
+import org.simantics.scl.compiler.types.Type;\r
+import org.simantics.scl.compiler.types.Types;\r
+import org.simantics.scl.compiler.types.kinds.Kinds;\r
+\r
+public class MaybeType extends TypeConstructor {\r
+    public static final MaybeType INSTANCE = new MaybeType();\r
+    \r
+    private MaybeType() {\r
+        super(Types.MAYBE, Kinds.STAR_TO_STAR);\r
+        isOpen = false;\r
+        setType(Types.con(Types.BUILTIN, "Maybe"), Types.var(Kinds.STAR));\r
+        documentation = "Represents an optional value.";\r
+    }\r
+    \r
+    @Override\r
+    public TypeDesc construct(JavaTypeTranslator translator, Type[] parameters) {\r
+        return JavaTypeTranslator.toObjectType(translator.toTypeDesc(parameters[0]));\r
+    }\r
+\r
+}\r