]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/references/ValSpecialization.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / references / ValSpecialization.java
1 package org.simantics.scl.compiler.internal.codegen.references;
2
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;
8
9 public class ValSpecialization implements IVal {
10
11     Val val;
12     Type[] parameters;
13     
14     public ValSpecialization(Val val, Type ... parameters) {
15         this.val = val;
16         this.parameters = parameters;
17     }
18
19     @Override
20     public Type getType() {
21         return Types.instantiate(val.getType(), parameters); 
22     }
23
24     @Override
25     public ValRef createOccurrence() {
26         return val.createOccurrence(parameters);
27     }
28
29     @Override
30     public IVal createSpecialization(Type... parameters) {
31         return new ValSpecialization(val, Types.concat(this.parameters, parameters));
32     }
33
34     @Override
35     public void push(MethodBuilder mb) {
36         throw new InternalCompilerError();
37     }
38
39     @Override
40     public ValRef createOccurrence(Type... parameters) {
41         return val.createOccurrence(Types.concat(this.parameters, parameters));
42     }
43
44     @Override
45     public Type apply(MethodBuilder mb, Type[] typeParameters,
46             Val... parameters) {
47         throw new InternalCompilerError();
48     }
49
50     @Override
51     public Object realizeValue(TransientClassBuilder classLoader) {
52         return val.realizeValue(classLoader);
53     }
54
55     @Override
56     public void setLabel(String label) {        
57     }
58
59 }