Make typeof (0, undef) throw a reference error. bug 333728, r=brendan

This commit is contained in:
mrbkap%gmail.com 2006-04-27 23:49:51 +00:00
Родитель a8e64c65ca
Коммит 1e7cde7835
4 изменённых файлов: 10 добавлений и 1 удалений

Просмотреть файл

@ -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)