diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js')
-rw-r--r-- | js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js b/js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js new file mode 100644 index 000000000..8b849a1c8 --- /dev/null +++ b/js/src/tests/ecma_6/ArrowFunctions/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"); |