From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/jscript/parser.y | 4 ++++ dlls/mshtml/tests/es5.js | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/jscript/parser.y b/dlls/jscript/parser.y index 5f00dbcd1a2..6618dc9add5 100644 --- a/dlls/jscript/parser.y +++ b/dlls/jscript/parser.y @@ -798,7 +798,11 @@ ArgumentList /* ECMA-262 3rd Edition 11.1 */ PrimaryExpression : kTHIS { $$ = new_expression(ctx, EXPR_THIS, 0); } + /* We have to lay out the keywords explicitly instead of using Identifier, see LabelledStatement. */ | tIdentifier { $$ = new_identifier_expression(ctx, $1); } + | kGET { $$ = new_identifier_expression(ctx, $1); } + | kSET { $$ = new_identifier_expression(ctx, $1); } + | kLET { $$ = new_identifier_expression(ctx, $1); } | Literal { $$ = new_literal_expression(ctx, $1); } | ArrayLiteral { $$ = $1; } | ObjectLiteral { $$ = $1; } diff --git a/dlls/mshtml/tests/es5.js b/dlls/mshtml/tests/es5.js index 110a1c583fd..3adb7cc1d61 100644 --- a/dlls/mshtml/tests/es5.js +++ b/dlls/mshtml/tests/es5.js @@ -473,15 +473,18 @@ sync_test("array_sort", function() { });
sync_test("identifier_keywords", function() { - function get(let, set) { } + function get(let, set) { { get instanceof (Object); } return let + set; } { get /* asdf */: 10 } let /* block label */ : { break let; ok(false, "did not break out of 'let' labelled block statement"); } - set: var let; + set: var let = get(1, 2); var set = 1234; var o = { + get: get, + set: set, + let /* comment */ : let, if: 1, default: 2, function: 3, @@ -516,7 +519,12 @@ sync_test("identifier_keywords", function() { ok(o.if === 1, "o.if = " + o.if); ok(ro().default === 2, "ro().default = " + ro().default); ok(o.false === true, "o.false = " + o.false); + ok(o.get === get, "o.get = " + o.get); + ok(o.set === set, "o.set = " + o.set); + ok(o.let === let, "o.let = " + o.let); ok(o.instanceof === 3, "o.instanceof = " + o.instanceof); + ok(let === 3, "let = " + let); + ok(set === 1234, "set = " + set);
var tmp = false; try {