]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/singletons/TypeProxyConstant.java
Migrated source code from Simantics SVN
[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;\r
2 \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
12 import org.simantics.scl.runtime.tuple.Tuple0;\r
13 \r
14 public class TypeProxyConstant extends Constant {\r
15     \r
16     private static final TVar A = Types.var(Kinds.STAR);\r
17     public static final TypeProxyConstant INSTANCE = new TypeProxyConstant();\r
18     \r
19     private TypeProxyConstant() {\r
20         super(Types.forAll(A, Types.apply(Types.TYPE_PROXY, A)));\r
21     }\r
22 \r
23     @Override\r
24     public void push(MethodBuilder mb) {\r
25     }\r
26     \r
27     @Override\r
28     public void deconstruct(MethodBuilder mb, IVal parameter,\r
29             Cont success, Label failure) {\r
30         mb.jump(success);\r
31     }\r
32     \r
33     public int constructorTag() {\r
34         return 0;\r
35     }\r
36     \r
37     @Override\r
38     public String toString() {\r
39         return "TypeProxy";\r
40     }\r
41     \r
42     @Override\r
43     public Object realizeValue(TransientClassBuilder classBuilder) {\r
44         return Tuple0.INSTANCE;\r
45     }\r
46 }\r