cover-init-name-syntax.js (2174B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 // CoverInitName in async arrow parameters. 6 async ({a = 1}) => {}; 7 async ({a = 1}, {b = 2}) => {}; 8 async ({a = 1}, {b = 2}, {c = 3}) => {}; 9 async ({a = 1} = {}, {b = 2}, {c = 3}) => {}; 10 async ({a = 1} = {}, {b = 2} = {}, {c = 3}) => {}; 11 async ({a = 1} = {}, {b = 2} = {}, {c = 3} = {}) => {}; 12 13 // CoverInitName nested in array destructuring. 14 async ([{a = 0}]) => {}; 15 16 // CoverInitName nested in rest pattern. 17 async ([...[{a = 0}]]) => {}; 18 19 // CoverInitName nested in object destructuring. 20 async ({p: {a = 0}}) => {}; 21 22 // CoverInitName in CoverCallExpressionAndAsyncArrowHead, but not AsyncArrowHead. 23 assertThrowsInstanceOf(() => eval(` 24 NotAsync({a = 1}); 25 `), SyntaxError); 26 assertThrowsInstanceOf(() => eval(` 27 NotAsync({a = 1}, {b = 2}, {c = 3}); 28 `), SyntaxError); 29 assertThrowsInstanceOf(() => eval(` 30 NotAsync({a = 1}, {b = 2}, {c = 3} = {}); 31 `), SyntaxError); 32 assertThrowsInstanceOf(() => eval(` 33 NotAsync({a = 1}, {b = 2} = {}, {c = 3} = {}); 34 `), SyntaxError); 35 36 // Starts with "async", but not called from AssignmentExpression. 37 assertThrowsInstanceOf(() => eval(` 38 typeof async({a = 1}); 39 `), SyntaxError); 40 assertThrowsInstanceOf(() => eval(` 41 typeof async({a = 1}, {b = 2}, {c = 3}); 42 `), SyntaxError); 43 assertThrowsInstanceOf(() => eval(` 44 typeof async({a = 1}, {b = 2}, {c = 3} = {}); 45 `), SyntaxError); 46 assertThrowsInstanceOf(() => eval(` 47 typeof async({a = 1}, {b = 2} = {}, {c = 3} = {}); 48 `), SyntaxError); 49 50 // CoverInitName in CoverCallExpressionAndAsyncArrowHead, but not AsyncArrowHead. 51 assertThrowsInstanceOf(() => eval(` 52 obj.async({a = 1}); 53 `), SyntaxError); 54 assertThrowsInstanceOf(() => eval(` 55 obj.async({a = 1}, {b = 2}, {c = 3}); 56 `), SyntaxError); 57 assertThrowsInstanceOf(() => eval(` 58 obj.async({a = 1}, {b = 2}, {c = 3} = {}); 59 `), SyntaxError); 60 assertThrowsInstanceOf(() => eval(` 61 obj.async({a = 1}, {b = 2} = {}, {c = 3} = {}); 62 `), SyntaxError); 63 64 if (typeof reportCompare === "function") 65 reportCompare(0, 0);