destructuring-rest-identifiers.js (1101B)
1 load(libdir + 'asserts.js'); 2 load(libdir + 'eqArrayHelper.js'); 3 4 var reserved = [ 5 'break', 6 'do', 7 'in', 8 'typeof', 9 'case', 10 'else', 11 'instanceof', 12 'var', 13 'catch', 14 'export', 15 'new', 16 'void', 17 'class', 18 'extends', 19 'return', 20 'while', 21 'const', 22 'finally', 23 'super', 24 'with', 25 'continue', 26 'for', 27 'switch', 28 'debugger', 29 'function', 30 'this', 31 'delete', 32 'import', 33 'try', 34 'enum', 35 'null', 36 'true', 37 'false' 38 ]; 39 reserved.forEach(ident => { 40 assertThrowsInstanceOf(() => new Function('var [...' + ident + '] = []'), SyntaxError); 41 }); 42 43 var strictIdentifiers = [ 44 'yield', 45 'let', 46 'eval', 47 'arguments', 48 'implements', 49 'interface', 50 'package', 51 'private', 52 'protected', 53 'public', 54 'static' 55 ]; 56 57 strictIdentifiers.forEach(ident => 58 assertThrowsInstanceOf(() => 59 new Function('"use strict"; [...' + ident + '] = []'), SyntaxError)); 60 61 var globalEval = eval; 62 strictIdentifiers.forEach(ident => { 63 globalEval(ident + ' = null'); 64 assertEqArray(new Function('input', '[, ...' + ident + '] = input;' + 65 'return ' + ident 66 )([1, 2, 3]), [2, 3]); 67 });