2003/06/09 06:38:36
[org.ibex.core.git] / src / org / xwt / js / ByteCodeBlock.java
index 2da760d..54b8169 100644 (file)
@@ -109,7 +109,8 @@ public class ByteCodeBlock implements ByteCodes, Tokens {
                 Object key = t.pop();
                 JS target = (JS)t.peek();
                 if (target == null)
-                   throw new JS.Exn("tried to put a value to the " + key + " property on the null value");
+                   throw new JS.Exn(sourceName + ":" + line + ": tried to put a value to the " + key +
+                                    " property on the null value");
                 target.put(key, val);
                 t.push(val);
                 break;
@@ -136,7 +137,7 @@ public class ByteCodeBlock implements ByteCodes, Tokens {
                 arguments.setSize(numArgs);
                 for(int j=numArgs - 1; j >= 0; j--) arguments.setElementAt(t.pop(), j);
                 JS.Function f = (JS.Function)t.pop();
-                if (f == null) throw new JS.Exn("attempted to call null");
+                if (f == null) throw new JS.Exn(sourceName + ":" + line + ": attempted to call null");
                 t.push(f.call(arguments));
                 break;
             }
@@ -214,10 +215,10 @@ public class ByteCodeBlock implements ByteCodes, Tokens {
 
     public Object doGet(final Object o, final Object v) {
         if (o == null)
-            throw new JS.Exn("tried to get property \"" + v + "\" from the null value");
+            throw new JS.Exn(sourceName + ":" + line + ": tried to get property \"" + v + "\" from the null value");
         if (o instanceof String) {
             if (v.equals("length")) return new Integer(((String)o).length());
-            else if (v.equals("substring")) return new JS.Function() {
+            else if (v.equals("substring")) return new JS.Function(-1, "java", null, null) {
                     public Object _call(JS.Array args) {
                         if (args.length() == 1) return ((String)o).substring(JS.toNumber(args.elementAt(0)).intValue());
                         else if (args.length() == 2) return ((String)o).substring(JS.toNumber(args.elementAt(0)).intValue(),
@@ -225,24 +226,24 @@ public class ByteCodeBlock implements ByteCodes, Tokens {
                         else throw new Error("String.substring() can only take one or two arguments");
                     }
                 };
-            else if (v.equals("toLowerCase")) return new JS.Function() {
+            else if (v.equals("toLowerCase")) return new JS.Function(-1, "java", null, null) {
                     public Object _call(JS.Array args) {
                         return ((String)o).toLowerCase();
                     } };
-            else if (v.equals("toUpperCase")) return new JS.Function() {
+            else if (v.equals("toUpperCase")) return new JS.Function(-1, "java", null, null) {
                     public Object _call(JS.Array args) {
                         return ((String)o).toString().toUpperCase();
                     } };
-            else if (v.equals("charAt")) return new JS.Function() {
+            else if (v.equals("charAt")) return new JS.Function(-1, "java", null, null) {
                     public Object _call(JS.Array args) {
                         return ((String)o).charAt(JS.toNumber(args.elementAt(0)).intValue()) + "";
                     } };
-            else if (v.equals("lastIndexOf")) return new JS.Function() {
+            else if (v.equals("lastIndexOf")) return new JS.Function(-1, "java", null, null) {
                     public Object _call(JS.Array args) {
                         if (args.length() != 1) return null;
                         return new Integer(((String)o).lastIndexOf(args.elementAt(0).toString()));
                     } };
-            else if (v.equals("indexOf")) return new JS.Function() {
+            else if (v.equals("indexOf")) return new JS.Function(-1, "java", null, null) {
                     public Object _call(JS.Array args) {
                         if (args.length() != 1) return null;
                         return new Integer(((String)o).indexOf(args.elementAt(0).toString()));