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;
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;
}
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(),
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()));