import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
import org.simantics.scl.compiler.internal.codegen.utils.PrintingContext;
import org.simantics.scl.compiler.internal.codegen.utils.SSAValidationContext;
+import org.simantics.scl.compiler.internal.codegen.utils.ValRefVisitor;
import org.simantics.scl.compiler.types.TVar;
import org.simantics.scl.compiler.types.Type;
import org.simantics.scl.runtime.exceptions.MatchingException;
TypeDesc exceptionClass;
String description;
- public Throw(TypeDesc exceptionClass, String description) {
+ public Throw(int lineNumber, TypeDesc exceptionClass, String description) {
+ super(lineNumber);
this.exceptionClass = exceptionClass;
this.description = description;
}
@Override
public void generateCode(MethodBuilder mb) {
- //mb.push(exception.getBinding());
- //cb.mapLineNumber(location);
+ mb.lineNumber(lineNumber);
mb.newObject(exceptionClass);
mb.dup();
if(description == null)
@Override
public SSAExit copy(CopyContext context) {
- return new Throw(exceptionClass, description);
+ return new Throw(lineNumber, exceptionClass, description);
}
@Override
public SSABlock[] getSuccessors() {
return SSABlock.EMPTY_ARRAY;
}
+
+ @Override
+ public void forValRefs(ValRefVisitor visitor) {
+ }
+
+ @Override
+ public void cleanup() {
+ }
}