added JSExn.IO
[org.ibex.core.git] / src / org / ibex / js / JSExn.java
index 8c1362d..ff4abc5 100644 (file)
@@ -23,7 +23,7 @@ public class JSExn extends Exception {
             if (element instanceof Interpreter.CallMarker) {
                 Interpreter.CallMarker cm = (Interpreter.CallMarker)element;
                 if (cm.f != null)
-                    addBacktrace(cm.f.sourceName + ":" + cm.f.line[cm.pc]);
+                    addBacktrace(cm.f.sourceName + ":" + cm.f.line[cm.pc-1]);
                 if (cm.scope != null && cm.scope instanceof Trap.TrapScope)
                     addBacktrace("trap on property \"" + ((Trap.TrapScope)cm.scope).t.name + "\"");
             }
@@ -42,6 +42,14 @@ public class JSExn extends Exception {
     public String getMessage() { return toString(); }
     public Object getObject() { return js; } 
     public void addBacktrace(String line) { backtrace.addElement(line); }
+
+
+    public static class IO extends JSExn {
+        public IO(java.io.IOException ioe) {
+            super("ibex.io: " + ioe.toString());
+            JS.warn(ioe);
+        }
+    }
 } 
 
 /** should only be used for failed coercions */