cleaned up trap handling in Interpreter.java
[org.ibex.core.git] / src / org / ibex / js / JSExn.java
index b39d6c8..6f2a1ab 100644 (file)
@@ -16,16 +16,17 @@ public class JSExn extends Exception {
     public JSExn(Object js, Vec stack, JSFunction f, int pc, JSScope scope) { this.js = js; fill(stack, f, pc, scope); }
     private void fill(Vec stack, JSFunction f, int pc, JSScope scope) {
         addBacktrace(f.sourceName + ":" + f.line[pc]);
-        if (scope != null && scope instanceof Trap.TrapScope)
-            addBacktrace("trap on property \"" + ((Trap.TrapScope)scope).t.name + "\"");
+        // FIXME: "trap on property"
+        /*if (scope != null && scope instanceof Trap.TrapScope)
+            addBacktrace("trap on property \"" + ((Trap.TrapScope)scope).t.name + "\"");*/
         for(int i=stack.size()-1; i>=0; i--) {
             Object element = stack.elementAt(i);
             if (element instanceof Interpreter.CallMarker) {
                 Interpreter.CallMarker cm = (Interpreter.CallMarker)element;
                 if (cm.f != null)
                     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 + "\"");
+                /*if (cm.scope != null && cm.scope instanceof Trap.TrapScope)
+                    addBacktrace("trap on property \"" + ((Trap.TrapScope)cm.scope).t.name + "\"");*/
             }
         }
     }
@@ -42,6 +43,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 */