From: Lokesh Poovaragan <lokesh.poovaragan@gmail.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55447 --- dlls/jscript/tests/lang.js | 21 ++++++++++++ dlls/jscript/tests/run.c | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index 89f52298fb3..42f3c793d76 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -2096,6 +2096,27 @@ function returnTest() { ok(returnTest() === undefined, "returnTest = " + returnTest()); +/* keywords as property names in member expressions should not trigger ASI */ +(function() { + var O = { continue: 1, break: 2, return: 3, throw: 4 }; + var x = { + label: O.continue + }; + ok(x.label === 1, "x.label = " + x.label); + var y = { + label: O.break + }; + ok(y.label === 2, "y.label = " + y.label); + var z = { + label: O.return + }; + ok(z.label === 3, "z.label = " + z.label); + var w = { + label: O.throw + }; + ok(w.label === 4, "w.label = " + w.label); +})(); + ActiveXObject = 1; ok(ActiveXObject === 1, "ActiveXObject = " + ActiveXObject); diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c index 5d555b05eb0..f80e5586420 100644 --- a/dlls/jscript/tests/run.c +++ b/dlls/jscript/tests/run.c @@ -4293,6 +4293,73 @@ static BOOL run_tests(void) CHECK_CALLED(global_propargput_d); CHECK_CALLED(global_propargput_i); + strict_dispid_check = FALSE; + + /* test 1: non-keyword property access with newline */ + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, + L"var O = { cont: 1 };\n" + L"var x = { label: O.cont\n" + L"};\n" + L"reportSuccess();"); + ok(hres == S_OK, "test 1 (non-keyword) parse_script failed: %08lx\n", hres); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + + /* test 2: keyword continue after '.' */ + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, + L"var O = { cont: 1 };\n" + L"var x = O.continue;\n" + L"reportSuccess();"); + ok(hres == S_OK, "test 2a (continue after dot) parse_script failed: %08lx\n", hres); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, + L"var O = { cont: 1 };\n" + L"var x = O.continue\n" + L"reportSuccess();"); + ok(hres == S_OK, "test 2b (continue after dot, newline) parse_script failed: %08lx\n", hres); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, + L"var O = { cont: 1 };\n" + L"var x = { label: O.continue\n" + L"};\n" + L"reportSuccess();"); + ok(hres == S_OK, "test 2c (continue after dot in object literal, newline) parse_script failed: %08lx\n", hres); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + + /* test 3: keyword in object literal */ + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, + L"var O = { continue: 1 };\n" + L"reportSuccess();"); + ok(hres == S_OK, "test 3a (continue as property name) parse_script failed: %08lx\n", hres); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, + L"var O = { continue: 1 };\n" + L"var x = { label: O.continue\n" + L"};\n" + L"reportSuccess();"); + ok(hres == S_OK, "test 3b (both contexts) parse_script failed: %08lx\n", hres); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + SET_EXPECT(global_propargputop_d); SET_EXPECT(global_propargputop_get_i); SET_EXPECT(global_propargputop_put_i); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11462