-package org.simantics.scl.compiler.constants;\r
-\r
-import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;\r
-import org.simantics.scl.compiler.internal.codegen.references.IVal;\r
-import org.simantics.scl.compiler.internal.codegen.references.Val;\r
-import org.simantics.scl.compiler.internal.codegen.references.ValRef;\r
-import org.simantics.scl.compiler.internal.codegen.ssa.statements.LetApply;\r
-import org.simantics.scl.compiler.internal.codegen.utils.SSASimplificationContext;\r
-import org.simantics.scl.compiler.types.Type;\r
-import org.simantics.scl.compiler.types.Types;\r
-\r
-public class JavaTypeClassSuper extends JavaMethod {\r
-\r
- int superId;\r
- \r
- public JavaTypeClassSuper(int superId, String className, String methodName,\r
- Type returnType, Type ... parameterTypes) {\r
- super(false, className, methodName, Types.NO_EFFECTS, returnType, parameterTypes);\r
- this.superId = superId;\r
- }\r
- \r
- public void inline(SSASimplificationContext context, LetApply apply) {\r
- ValRef classRef = apply.getParameters()[0];\r
- Val class_ = classRef.getBinding();\r
- if(class_ instanceof JavaTypeInstanceConstructor) {\r
- JavaTypeInstanceConstructor constr = (JavaTypeInstanceConstructor)class_;\r
- TypeClassInstance instance = constr.getInstance();\r
- IVal newVal = instance.superExpressions[superId].getValue();\r
- apply.getTarget().replaceBy(newVal.createOccurrence());\r
- apply.remove();\r
- }\r
- }\r
- \r
-}\r
+package org.simantics.scl.compiler.constants;
+
+import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance;
+import org.simantics.scl.compiler.internal.codegen.references.IVal;
+import org.simantics.scl.compiler.internal.codegen.references.Val;
+import org.simantics.scl.compiler.internal.codegen.references.ValRef;
+import org.simantics.scl.compiler.internal.codegen.ssa.statements.LetApply;
+import org.simantics.scl.compiler.internal.codegen.utils.SSASimplificationContext;
+import org.simantics.scl.compiler.types.Type;
+import org.simantics.scl.compiler.types.Types;
+
+public class JavaTypeClassSuper extends JavaMethod {
+
+ int superId;
+
+ public JavaTypeClassSuper(int superId, String className, String methodName,
+ Type returnType, Type ... parameterTypes) {
+ super(false, className, methodName, Types.NO_EFFECTS, returnType, parameterTypes);
+ this.superId = superId;
+ }
+
+ public void inline(SSASimplificationContext context, LetApply apply) {
+ ValRef classRef = apply.getParameters()[0];
+ Val class_ = classRef.getBinding();
+ if(class_ instanceof JavaTypeInstanceConstructor) {
+ JavaTypeInstanceConstructor constr = (JavaTypeInstanceConstructor)class_;
+ TypeClassInstance instance = constr.getInstance();
+ IVal newVal = instance.superExpressions[superId].getValue();
+ apply.getTarget().replaceBy(newVal.createOccurrence());
+ apply.remove();
+ }
+ }
+
+}