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