зеркало из https://github.com/mozilla/gecko-dev.git
Make typeof (0, undef) throw a reference error. bug 333728, r=brendan
This commit is contained in:
Родитель
a8e64c65ca
Коммит
1e7cde7835
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче