Make typeof (0, undef) throw a reference error. bug 333728, r=brendan
git-svn-id: svn://10.0.0.236/trunk@195611 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
7a3f1e5e60
commit
685578b30f
@ -4340,9 +4340,15 @@ js_EmitTree(JSContext *cx, JSCodeGenerator *cg, JSParseNode *pn)
|
||||
case TOK_UNARYOP:
|
||||
/* Unary op, including unary +/-. */
|
||||
pn2 = pn->pn_kid;
|
||||
op = pn->pn_op;
|
||||
if (op == JSOP_TYPEOF) {
|
||||
for (pn3 = pn2; pn3->pn_type == TOK_RP; pn3 = pn3->pn_kid)
|
||||
continue;
|
||||
if (pn3->pn_type != TOK_NAME)
|
||||
op = JSOP_TYPEOFEXPR;
|
||||
}
|
||||
if (!js_EmitTree(cx, cg, pn2))
|
||||
return JS_FALSE;
|
||||
op = pn->pn_op;
|
||||
#if JS_HAS_XML_SUPPORT
|
||||
if (op == JSOP_XMLNAME &&
|
||||
js_NewSrcNote2(cx, cg, SRC_PCBASE,
|
||||
|
||||
@ -3434,6 +3434,7 @@ interrupt:
|
||||
STORE_OPND(-1, rval);
|
||||
END_CASE(JSOP_DELELEM)
|
||||
|
||||
BEGIN_CASE(JSOP_TYPEOFEXPR)
|
||||
BEGIN_CASE(JSOP_TYPEOF)
|
||||
rval = FETCH_OPND(-1);
|
||||
SAVE_SP_AND_PC(fp);
|
||||
|
||||
@ -1806,6 +1806,7 @@ Decompile(SprintStack *ss, jsbytecode *pc, intN nb)
|
||||
break;
|
||||
#endif
|
||||
|
||||
case JSOP_TYPEOFEXPR:
|
||||
case JSOP_TYPEOF:
|
||||
case JSOP_VOID:
|
||||
rval = POP_STR();
|
||||
|
||||
@ -405,3 +405,4 @@ OPDEF(JSOP_STOP, 195,"stop", NULL, 1, 0, 0, 0, JOF_BYTE)
|
||||
*/
|
||||
OPDEF(JSOP_GETXPROP, 196,"getxprop", NULL, 3, 1, 1, 12, JOF_CONST|JOF_PROP)
|
||||
OPDEF(JSOP_GETXELEM, 197,"getxelem", NULL, 1, 2, 1, 12, JOF_BYTE |JOF_ELEM|JOF_LEFTASSOC)
|
||||
OPDEF(JSOP_TYPEOFEXPR, 198, js_typeof_str,NULL, 1, 1, 1, 10, JOF_BYTE|JOF_DETECTING)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user