X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fconstants%2Fsingletons%2FClassConstant.java;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fconstants%2Fsingletons%2FClassConstant.java;h=c61ef1aeb4d99f26be94f871fe9032ef8b06d1a4;hb=6fd9bc1ec7e95848d0cc15d12825a65a4b57ada5;hp=0000000000000000000000000000000000000000;hpb=b48616484fd2324fc415187d151acbb94deb2493;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/singletons/ClassConstant.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/singletons/ClassConstant.java new file mode 100644 index 000000000..c61ef1aeb --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/singletons/ClassConstant.java @@ -0,0 +1,26 @@ +package org.simantics.scl.compiler.constants.singletons; + +import org.simantics.scl.compiler.constants.FunctionValue; +import org.simantics.scl.compiler.internal.codegen.references.Val; +import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder; +import org.simantics.scl.compiler.types.TVar; +import org.simantics.scl.compiler.types.Type; +import org.simantics.scl.compiler.types.Types; +import org.simantics.scl.compiler.types.kinds.Kinds; + +public class ClassConstant extends FunctionValue { + + private static final TVar A = Types.var(Kinds.STAR); + public static final ClassConstant INSTANCE = new ClassConstant(); + + private ClassConstant() { + super(new TVar[] {A}, Types.NO_EFFECTS, Types.apply(Types.CLASS, A), + Types.pred(Types.VEC_COMP, A)); + } + + @Override + public Type applyExact(MethodBuilder mb, Val[] parameters) { + mb.push(parameters[0], Types.CLASS); + return getReturnType(); + } +} \ No newline at end of file