Bug 537673 - Don't constant-fold a parenthesized callee expression. r=jorendoff

This commit is contained in:
Blake Kaplan 2010-01-07 15:58:44 -08:00
Родитель 5c35fd9d37
Коммит 63f7dadd3f
1 изменённых файлов: 6 добавлений и 1 удалений

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

@ -8978,8 +8978,13 @@ js_FoldConstants(JSContext *cx, JSParseNode *pn, JSTreeContext *tc, bool inCond)
/* Propagate inCond through logical connectives. */
bool cond = inCond && (pn->pn_type == TOK_OR || pn->pn_type == TOK_AND);
/* Don't fold a parenthesized call expression. See bug 537673. */
pn1 = pn2 = pn->pn_head;
if ((pn->pn_type == TOK_LP || pn->pn_type == TOK_NEW) && pn2->pn_parens)
pn2 = pn2->pn_next;
/* Save the list head in pn1 for later use. */
for (pn1 = pn2 = pn->pn_head; pn2; pn2 = pn2->pn_next) {
for (; pn2; pn2 = pn2->pn_next) {
if (!js_FoldConstants(cx, pn2, tc, cond))
return JS_FALSE;
}