package org.simantics.scl.compiler.constants; 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 UnsafeCoerce extends FunctionValue { private static TVar A = Types.var(Kinds.STAR); private static TVar B = Types.var(Kinds.STAR); public static final UnsafeCoerce INSTANCE = new UnsafeCoerce(); private UnsafeCoerce() { super(new TVar[] {A, B}, Types.NO_EFFECTS, B, A); } @Override public Type applyExact(MethodBuilder mb, Val[] parameters) { mb.pushBoxed(parameters[0]); return getReturnType(); } }