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