projects
/
org.ibex.core.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
240fe2c
)
use JS.toString() everywhere
author
brian
<brian@brianweb.net>
Sat, 3 Jul 2004 09:41:02 +0000
(09:41 +0000)
committer
brian
<brian@brianweb.net>
Sat, 3 Jul 2004 09:41:02 +0000
(09:41 +0000)
darcs-hash:
20040703094102
-24bed-
d772c08a198d15fa07cad9db565715f087041ca5
.gz
src/org/ibex/js/Interpreter.java
patch
|
blob
|
history
diff --git
a/src/org/ibex/js/Interpreter.java
b/src/org/ibex/js/Interpreter.java
index
504bbd2
..
983b471
100644
(file)
--- a/
src/org/ibex/js/Interpreter.java
+++ b/
src/org/ibex/js/Interpreter.java
@@
-486,7
+486,7
@@
class Interpreter implements ByteCodes, Tokens {
if (right == null) right = JS.N(0);
int result = 0;
if (left instanceof String || right instanceof String) {
if (right == null) right = JS.N(0);
int result = 0;
if (left instanceof String || right instanceof String) {
- result = left.toString().compareTo(right.toString());
+ result = JS.toString(left).compareTo(JS.toString(right));
} else {
result = (int)java.lang.Math.ceil(JS.toDouble(left) - JS.toDouble(right));
}
} else {
result = (int)java.lang.Math.ceil(JS.toDouble(left) - JS.toDouble(right));
}
@@
-497,6
+497,7
@@
class Interpreter implements ByteCodes, Tokens {
case EQ:
case NE: {
case EQ:
case NE: {
+ // FIXME: This is not correct, see ECMA-262 11.9.3
Object l = left;
Object r = right;
boolean ret;
Object l = left;
Object r = right;
boolean ret;
@@
-505,7
+506,7
@@
class Interpreter implements ByteCodes, Tokens {
else if (r == null) ret = false; // l != null, so its false
else if (l instanceof Boolean) ret = JS.B(JS.toBoolean(r)).equals(l);
else if (l instanceof Number) ret = JS.toNumber(r).doubleValue() == JS.toNumber(l).doubleValue();
else if (r == null) ret = false; // l != null, so its false
else if (l instanceof Boolean) ret = JS.B(JS.toBoolean(r)).equals(l);
else if (l instanceof Number) ret = JS.toNumber(r).doubleValue() == JS.toNumber(l).doubleValue();
- else if (l instanceof String) ret = r != null && l.equals(r.toString());
+ else if (l instanceof String) ret = r != null && l.equals(JS.toString(r));
else ret = l.equals(r);
stack.push(JS.B(op == EQ ? ret : !ret)); break;
}
else ret = l.equals(r);
stack.push(JS.B(op == EQ ? ret : !ret)); break;
}
@@
-652,13
+653,13
@@
class Interpreter implements ByteCodes, Tokens {
return sb.toString();
}
case "indexOf": {
return sb.toString();
}
case "indexOf": {
- String search = alength >= 1 ? arg0.toString() : "null";
+ String search = alength >= 1 ? JS.toString(arg0) : "null";
int start = alength >= 2 ? JS.toInt(arg1) : 0;
// Java's indexOf handles an out of bounds start index, it'll return -1
return JS.N(s.indexOf(search,start));
}
case "lastIndexOf": {
int start = alength >= 2 ? JS.toInt(arg1) : 0;
// Java's indexOf handles an out of bounds start index, it'll return -1
return JS.N(s.indexOf(search,start));
}
case "lastIndexOf": {
- String search = alength >= 1 ? arg0.toString() : "null";
+ String search = alength >= 1 ? JS.toString(arg0) : "null";
int start = alength >= 2 ? JS.toInt(arg1) : 0;
// Java's indexOf handles an out of bounds start index, it'll return -1
return JS.N(s.lastIndexOf(search,start));
int start = alength >= 2 ? JS.toInt(arg1) : 0;
// Java's indexOf handles an out of bounds start index, it'll return -1
return JS.N(s.lastIndexOf(search,start));
@@
-696,7
+697,7
@@
class Interpreter implements ByteCodes, Tokens {
}
if (!returnJS) {
// the string stuff applies to everything
}
if (!returnJS) {
// the string stuff applies to everything
- String s = o.toString();
+ String s = JS.toString(o);
// this is sort of ugly, but this list should never change
// These should provide a complete (enough) implementation of the ECMA-262 String object
// this is sort of ugly, but this list should never change
// These should provide a complete (enough) implementation of the ECMA-262 String object
@@
-722,7
+723,7
@@
class Interpreter implements ByteCodes, Tokens {
}
if (returnJS) {
final Object target = o;
}
if (returnJS) {
final Object target = o;
- final String method = key.toString();
+ final String method = JS.toString(o);
return new JS() {
public Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn {
if (nargs > 2) throw new JSExn("cannot call that method with that many arguments");
return new JS() {
public Object call(Object a0, Object a1, Object a2, Object[] rest, int nargs) throws JSExn {
if (nargs > 2) throw new JSExn("cannot call that method with that many arguments");