diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /js/src/tests/non262/arrow-functions/yield-in-arrow.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | js/src/tests/non262/arrow-functions/yield-in-arrow.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/js/src/tests/non262/arrow-functions/yield-in-arrow.js b/js/src/tests/non262/arrow-functions/yield-in-arrow.js new file mode 100644 index 0000000000..8b849a1c88 --- /dev/null +++ b/js/src/tests/non262/arrow-functions/yield-in-arrow.js @@ -0,0 +1,77 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +const yieldInParameters = [ + `(a = yield) => {}`, + `(a = yield /a/g) => {}`, // Should parse as division, not yield expression with regexp. + `yield => {};`, + `(yield) => {};`, + `(yield = 0) => {};`, + `([yield]) => {};`, + `([yield = 0]) => {};`, + `([...yield]) => {};`, + `({a: yield}) => {};`, + `({yield}) => {};`, + `({yield = 0}) => {};`, +]; + +const yieldInBody = [ + `() => yield;`, + `() => yield /a/g;`, + `() => { var x = yield; }`, + `() => { var x = yield /a/g; }`, + + `() => { var yield; };`, + `() => { var yield = 0; };`, + `() => { var [yield] = []; };`, + `() => { var [yield = 0] = []; };`, + `() => { var [...yield] = []; };`, + `() => { var {a: yield} = {}; };`, + `() => { var {yield} = {}; };`, + `() => { var {yield = 0} = {}; };`, + + `() => { let yield; };`, + `() => { let yield = 0; };`, + `() => { let [yield] = []; };`, + `() => { let [yield = 0] = []; };`, + `() => { let [...yield] = []; };`, + `() => { let {a: yield} = {}; };`, + `() => { let {yield} = {}; };`, + `() => { let {yield = 0} = {}; };`, + + `() => { const yield = 0; };`, + `() => { const [yield] = []; };`, + `() => { const [yield = 0] = []; };`, + `() => { const [...yield] = []; };`, + `() => { const {a: yield} = {}; };`, + `() => { const {yield} = {}; };`, + `() => { const {yield = 0} = {}; };`, +]; + + +// Script context. +for (let test of [...yieldInParameters, ...yieldInBody]) { + eval(test); + assertThrowsInstanceOf(() => eval(`"use strict"; ${test}`), SyntaxError); +} + +// Function context. +for (let test of [...yieldInParameters, ...yieldInBody]) { + eval(`function f() { ${test} }`); + assertThrowsInstanceOf(() => eval(`"use strict"; function f() { ${test} }`), SyntaxError); +} + +// Generator context. +for (let test of yieldInParameters) { + assertThrowsInstanceOf(() => eval(`function* g() { ${test} }`), SyntaxError); +} +for (let test of yieldInBody) { + eval(`function* g() { ${test} }`); +} +for (let test of [...yieldInParameters, ...yieldInBody]) { + assertThrowsInstanceOf(() => eval(`"use strict"; function* g() { ${test} }`), SyntaxError); +} + +if (typeof reportCompare === "function") + reportCompare(0, 0, "ok"); |