tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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);