1 package org.simantics.scl.compiler.constants.singletons;
\r
3 import org.objectweb.asm.Label;
\r
4 import org.simantics.scl.compiler.constants.Constant;
\r
5 import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
\r
6 import org.simantics.scl.compiler.internal.codegen.references.IVal;
\r
7 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
\r
8 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
\r
9 import org.simantics.scl.compiler.types.TVar;
\r
10 import org.simantics.scl.compiler.types.Types;
\r
11 import org.simantics.scl.compiler.types.kinds.Kinds;
\r
13 public class NothingConstant extends Constant {
\r
15 private static final TVar A = Types.var(Kinds.STAR);
\r
16 public static final NothingConstant INSTANCE = new NothingConstant();
\r
18 private NothingConstant() {
\r
19 super(Types.forAll(A, Types.apply(Types.MAYBE, A)));
\r
23 public void push(MethodBuilder mb) {
\r
28 public void deconstruct(MethodBuilder mb, IVal parameter,
\r
29 Cont success, Label failure) {
\r
30 if(failure != null) {
\r
32 mb.ifNullBranch(failure, false);
\r
37 public int constructorTag() {
\r
42 public String toString() {
\r
47 public Object realizeValue(TransientClassBuilder classBuilder) {
\r