]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/singletons/TypeOfConstant.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / constants / singletons / TypeOfConstant.java
1 package org.simantics.scl.compiler.constants.singletons;\r
2 \r
3 import org.simantics.scl.compiler.constants.FunctionValue;\r
4 import org.simantics.scl.compiler.internal.codegen.references.Val;\r
5 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;\r
6 import org.simantics.scl.compiler.types.TCon;\r
7 import org.simantics.scl.compiler.types.TVar;\r
8 import org.simantics.scl.compiler.types.Type;\r
9 import org.simantics.scl.compiler.types.Types;\r
10 import org.simantics.scl.compiler.types.kinds.Kinds;\r
11 \r
12 public class TypeOfConstant extends FunctionValue {\r
13     private static final TVar A = Types.var(Kinds.STAR);\r
14     private static final TCon Type = Types.con(Types.BUILTIN, "Type");\r
15     public static final TypeOfConstant INSTANCE = new TypeOfConstant();\r
16     \r
17     private TypeOfConstant() {\r
18         super(new TVar[] {A}, Types.NO_EFFECTS, Type, \r
19                 Types.pred(Types.TYPEABLE, A), A);\r
20     }\r
21     \r
22     @Override\r
23     public Type applyExact(MethodBuilder mb, Val[] parameters) {\r
24         mb.push(parameters[0], Type);\r
25         return getReturnType();\r
26     }\r
27     \r
28     @Override\r
29     public String toString() {\r
30         return "typeOf";\r
31     }\r
32 }