]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/NoRepConstant.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / constants / NoRepConstant.java
1 package org.simantics.scl.compiler.constants;
2
3 import org.objectweb.asm.Label;
4 import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
5 import org.simantics.scl.compiler.internal.codegen.references.IVal;
6 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
7 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
8 import org.simantics.scl.compiler.types.Type;
9 import org.simantics.scl.compiler.types.Types;
10 import org.simantics.scl.runtime.tuple.Tuple0;
11
12 public class NoRepConstant extends Constant {
13     public static final NoRepConstant PUNIT = new NoRepConstant(Types.PUNIT);
14     
15     public NoRepConstant(Type type) {
16         super(type);
17     }
18     
19     public void push(MethodBuilder mb) {
20     }
21     
22
23     @Override
24     public void deconstruct(MethodBuilder mb, IVal parameter, Cont success,
25             Label failure) {
26         mb.jump(success);
27     }
28     
29     public int constructorTag() {
30         return 0;
31     }
32     
33     @Override
34     public String toString() {
35         return "()";
36     }
37
38     @Override
39     public Object realizeValue(TransientClassBuilder classBuilder) {
40         return Tuple0.INSTANCE;
41     }
42 }