From 4783dd1e543967997f54bec0250c88a69661a2f6 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 7 Oct 2008 12:01:06 -0500 Subject: [PATCH] jscript: Fixed list literal length calculation. --- dlls/jscript/parser.y | 3 ++- dlls/jscript/tests/lang.js | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/jscript/parser.y b/dlls/jscript/parser.y index 2123e9c8b47..8f010285a12 100644 --- a/dlls/jscript/parser.y +++ b/dlls/jscript/parser.y @@ -738,7 +738,8 @@ PrimaryExpression /* ECMA-262 3rd Edition 11.1.4 */ ArrayLiteral - : '[' Elision_opt ']' { $$ = new_array_literal_expression(ctx, NULL, $2); } + : '[' ']' { $$ = new_array_literal_expression(ctx, NULL, 0); } + | '[' Elision_opt ']' { $$ = new_array_literal_expression(ctx, NULL, $2+1); } | '[' ElementList ']' { $$ = new_array_literal_expression(ctx, $2, 0); } | '[' ElementList ',' Elision_opt ']' { $$ = new_array_literal_expression(ctx, $2, $4+1); } diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index c9d9455a472..82e865f4159 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -615,6 +615,9 @@ ok(tmp["6"] === true, "tmp[6] !== true"); ok(tmp[2] === 1, "tmp[2] !== 1"); ok([1,].length === 2, "[1,].length !== 2"); +ok([,,].length === 3, "[,,].length !== 3"); +ok([,].length === 2, "[].length != 2"); +ok([].length === 0, "[].length != 0"); tmp = 0; while(tmp < 4) {