]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/continuations/ReturnCont.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / continuations / ReturnCont.java
1 package org.simantics.scl.compiler.internal.codegen.continuations;\r
2 \r
3 import org.simantics.scl.compiler.internal.codegen.ssa.SSAFunction;\r
4 import org.simantics.scl.compiler.internal.codegen.utils.CopyContext;\r
5 import org.simantics.scl.compiler.types.TVar;\r
6 import org.simantics.scl.compiler.types.Type;\r
7 import org.simantics.scl.compiler.types.util.Typed;\r
8 \r
9 \r
10 public final class ReturnCont extends Cont implements Typed {\r
11     Type returnType;\r
12     transient SSAFunction parent;\r
13     \r
14     public ReturnCont(Type returnType) {\r
15         this.returnType = returnType;\r
16     }\r
17     \r
18     public void setParent(SSAFunction parent) {\r
19         this.parent = parent;\r
20     }\r
21     \r
22     @Override\r
23     public Type getType() {\r
24         return returnType;\r
25     }\r
26     \r
27     @Override\r
28     public int getArity() {\r
29         return 1;\r
30     }\r
31     \r
32     @Override\r
33     public Type getParameterType(int parameterId) {\r
34         if(parameterId != 0)\r
35             throw new IllegalArgumentException();\r
36         return returnType;\r
37     }\r
38 \r
39     public ReturnCont copy(CopyContext context) {\r
40         return new ReturnCont(context.copyType(returnType));\r
41     }\r
42     \r
43     @Override\r
44     public void replace(TVar[] vars, Type[] replacements) {\r
45         returnType = returnType.replace(vars, replacements);        \r
46     }\r
47 \r
48     public void setType(Type type) {\r
49         this.returnType = type;        \r
50     }\r
51 }\r