]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/singletons/TypeProxyConstant.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / constants / singletons / TypeProxyConstant.java
1 package org.simantics.scl.compiler.constants.singletons;
2
3 import org.objectweb.asm.Label;
4 import org.simantics.scl.compiler.constants.Constant;
5 import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
6 import org.simantics.scl.compiler.internal.codegen.references.IVal;
7 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
8 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
9 import org.simantics.scl.compiler.types.TVar;
10 import org.simantics.scl.compiler.types.Types;
11 import org.simantics.scl.compiler.types.kinds.Kinds;
12 import org.simantics.scl.runtime.tuple.Tuple0;
13
14 public class TypeProxyConstant extends Constant {
15     
16     private static final TVar A = Types.var(Kinds.STAR);
17     public static final TypeProxyConstant INSTANCE = new TypeProxyConstant();
18     
19     private TypeProxyConstant() {
20         super(Types.forAll(A, Types.apply(Types.TYPE_PROXY, A)));
21     }
22
23     @Override
24     public void push(MethodBuilder mb) {
25     }
26     
27     @Override
28     public void deconstruct(MethodBuilder mb, IVal parameter,
29             Cont success, Label failure) {
30         mb.jump(success);
31     }
32     
33     public int constructorTag() {
34         return 0;
35     }
36     
37     @Override
38     public String toString() {
39         return "TypeProxy";
40     }
41     
42     @Override
43     public Object realizeValue(TransientClassBuilder classBuilder) {
44         return Tuple0.INSTANCE;
45     }
46 }