1 package org.simantics.scl.compiler.internal.codegen.references;
3 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
4 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
5 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
6 import org.simantics.scl.compiler.types.Type;
7 import org.simantics.scl.compiler.types.Types;
9 public class ValSpecialization implements IVal {
14 public ValSpecialization(Val val, Type ... parameters) {
16 this.parameters = parameters;
20 public Type getType() {
21 return Types.instantiate(val.getType(), parameters);
25 public ValRef createOccurrence() {
26 return val.createOccurrence(parameters);
30 public IVal createSpecialization(Type... parameters) {
31 return new ValSpecialization(val, Types.concat(this.parameters, parameters));
35 public void push(MethodBuilder mb) {
36 throw new InternalCompilerError();
40 public ValRef createOccurrence(Type... parameters) {
41 return val.createOccurrence(Types.concat(this.parameters, parameters));
45 public Type apply(MethodBuilder mb, Type[] typeParameters,
47 throw new InternalCompilerError();
51 public Object realizeValue(TransientClassBuilder classLoader) {
52 return val.realizeValue(classLoader);
56 public void setLabel(String label) {