export-destructuring.js (2498B)
1 function assertArrayEq(value, expected) 2 { 3 assertEq(value instanceof Array, true); 4 assertEq(value.length, expected.length); 5 for (let i = 0; i < value.length; i++) 6 assertEq(value[i], expected[i]); 7 } 8 9 registerModule('a', parseModule(` 10 export const [] = []; 11 export const [a=0] = []; 12 export const [b] = [1]; 13 export const [c, d, e] = [2, 3, 4]; 14 export const [, f, g] = [5, 6, 7]; 15 export const [h,, i] = [8, 9, 10]; 16 export const [,, j] = [11, 12, 13]; 17 export const [...k] = [14, 15, 16]; 18 export const [l, ...m] = [17, 18, 19]; 19 export const [,, ...n] = [20, 21, 22]; 20 `)); 21 22 m = parseModule(` 23 import * as a from 'a'; 24 25 assertEq(a.a, 0); 26 assertEq(a.b, 1); 27 assertEq(a.c, 2); 28 assertEq(a.d, 3); 29 assertEq(a.e, 4); 30 assertEq(a.f, 6); 31 assertEq(a.g, 7); 32 assertEq(a.h, 8); 33 assertEq(a.i, 10); 34 assertEq(a.j, 13); 35 assertArrayEq(a.k, [14, 15, 16]); 36 assertEq(a.l, 17); 37 assertArrayEq(a.m, [18, 19]); 38 assertArrayEq(a.n, [22]); 39 `); 40 41 moduleLink(m); 42 moduleEvaluate(m); 43 44 registerModule('o', parseModule(` 45 export const {} = {}; 46 export const {x: a=0} = {}; 47 export const {x: b=0} = {x: 1}; 48 export const {c, d, e} = {c: 2, d: 3, e: 4}; 49 export const {x: f} = {x: 5}; 50 export const {g} = {}; 51 export const {h=6} = {}; 52 `)); 53 54 m = parseModule(` 55 import * as o from 'o'; 56 57 assertEq(o.a, 0); 58 assertEq(o.b, 1); 59 assertEq(o.c, 2); 60 assertEq(o.d, 3); 61 assertEq(o.e, 4); 62 assertEq(o.f, 5); 63 assertEq(o.g, undefined); 64 assertEq(o.h, 6); 65 `); 66 67 moduleLink(m); 68 moduleEvaluate(m); 69 70 registerModule('ao', parseModule(` 71 export const [{x: a}, {x: b}] = [{x: 1}, {x: 2}]; 72 export const [{c}, {d}] = [{c: 3}, {d: 4}]; 73 export const [,, {e}, ...f] = [5, 6, {e: 7}, 8, 9]; 74 75 export const {x: [g, h, i]} = {x: [10, 11, 12]}; 76 77 export const [[], [...j], [, k, l]] = [[], [13, 14], [15, 16, 17]]; 78 79 export const {x: {m, n, o=20}, y: {z: p}} = {x: {m: 18, n: 19}, y: {z: 21}}; 80 `)); 81 82 m = parseModule(` 83 import * as ao from 'ao'; 84 85 assertEq(ao.a, 1); 86 assertEq(ao.b, 2); 87 assertEq(ao.c, 3); 88 assertEq(ao.d, 4); 89 assertEq(ao.e, 7); 90 assertArrayEq(ao.f, [8, 9]); 91 assertEq(ao.g, 10); 92 assertEq(ao.h, 11); 93 assertEq(ao.i, 12); 94 assertArrayEq(ao.j, [13, 14]); 95 assertEq(ao.k, 16); 96 assertEq(ao.l, 17); 97 assertEq(ao.m, 18); 98 assertEq(ao.n, 19); 99 assertEq(ao.o, 20); 100 assertEq(ao.p, 21); 101 `); 102 103 moduleLink(m); 104 moduleEvaluate(m);