Skip to content

Commit 0196947

Browse files
committed
Improve nested destructuring test for ESNext emit
Now with object destructuring inside array destructuring inside object destructuring! Each with their own array/object rest! Also updates baselines.
1 parent 214ce38 commit 0196947

File tree

4 files changed

+99
-7
lines changed

4 files changed

+99
-7
lines changed

tests/baselines/reference/objectRestAssignment.js

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@ let other: number;
55
let rest: { };
66
let complex: { x: { ka, ki }, y: number };
77
({x: { ka, ...nested }, y: other, ...rest} = complex);
8+
9+
// should be:
10+
let overEmit: { a: { ka: string, x: string }[], b: { z: string, ki: string, ku: string }, ke: string, ko: string };
11+
12+
// var _g = overEmit.a, [_h, ...y] = _g, nested2 = __rest(_h, []), _j = overEmit.b, { z } = _j, c = __rest(_j, ["z"]), rest2 = __rest(overEmit, ["a", "b"]);
13+
var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit;
14+
({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit);
815

916

1017
//// [objectRestAssignment.js]
@@ -14,10 +21,15 @@ var __rest = (this && this.__rest) || function (s, e) {
1421
t[p] = s[p];
1522
return t;
1623
};
17-
var ka;
18-
var nested;
19-
var other;
20-
var rest;
21-
var complex;
22-
(_a = complex.x, (ka = _a.ka, _a), nested = __rest(_a, ["ka"]), (other = complex.y, complex), rest = __rest(complex, ["x", "y"]), complex);
23-
var _a;
24+
let ka;
25+
let nested;
26+
let other;
27+
let rest;
28+
let complex;
29+
(_a = complex.x, { ka } = _a, nested = __rest(_a, ["ka"]), { y: other } = complex, rest = __rest(complex, ["x", "y"]), complex);
30+
// should be:
31+
let overEmit;
32+
// var _g = overEmit.a, [_h, ...y] = _g, nested2 = __rest(_h, []), _j = overEmit.b, { z } = _j, c = __rest(_j, ["z"]), rest2 = __rest(overEmit, ["a", "b"]);
33+
var _b = overEmit.a, [_c, ...y] = _b, nested2 = __rest(_c, []), _d = overEmit.b, { z } = _d, c = __rest(_d, ["z"]), rest2 = __rest(overEmit, ["a", "b"]);
34+
(_e = overEmit.a, [_f, ...y] = _e, nested2 = __rest(_f, []), _g = overEmit.b, { z } = _g, c = __rest(_g, ["z"]), rest2 = __rest(overEmit, ["a", "b"]), overEmit);
35+
var _a, _e, _f, _g;

tests/baselines/reference/objectRestAssignment.symbols

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,34 @@ let complex: { x: { ka, ki }, y: number };
2626
>other : Symbol(other, Decl(objectRestAssignment.ts, 2, 3))
2727
>complex : Symbol(complex, Decl(objectRestAssignment.ts, 4, 3))
2828

29+
// should be:
30+
let overEmit: { a: { ka: string, x: string }[], b: { z: string, ki: string, ku: string }, ke: string, ko: string };
31+
>overEmit : Symbol(overEmit, Decl(objectRestAssignment.ts, 8, 3))
32+
>a : Symbol(a, Decl(objectRestAssignment.ts, 8, 15))
33+
>ka : Symbol(ka, Decl(objectRestAssignment.ts, 8, 20))
34+
>x : Symbol(x, Decl(objectRestAssignment.ts, 8, 32))
35+
>b : Symbol(b, Decl(objectRestAssignment.ts, 8, 47))
36+
>z : Symbol(z, Decl(objectRestAssignment.ts, 8, 52))
37+
>ki : Symbol(ki, Decl(objectRestAssignment.ts, 8, 63))
38+
>ku : Symbol(ku, Decl(objectRestAssignment.ts, 8, 75))
39+
>ke : Symbol(ke, Decl(objectRestAssignment.ts, 8, 89))
40+
>ko : Symbol(ko, Decl(objectRestAssignment.ts, 8, 101))
41+
42+
// var _g = overEmit.a, [_h, ...y] = _g, nested2 = __rest(_h, []), _j = overEmit.b, { z } = _j, c = __rest(_j, ["z"]), rest2 = __rest(overEmit, ["a", "b"]);
43+
var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit;
44+
>a : Symbol(a, Decl(objectRestAssignment.ts, 8, 15))
45+
>nested2 : Symbol(nested2, Decl(objectRestAssignment.ts, 11, 11))
46+
>y : Symbol(y, Decl(objectRestAssignment.ts, 11, 25))
47+
>b : Symbol(b, Decl(objectRestAssignment.ts, 8, 47))
48+
>z : Symbol(z, Decl(objectRestAssignment.ts, 11, 37))
49+
>c : Symbol(c, Decl(objectRestAssignment.ts, 11, 40))
50+
>rest2 : Symbol(rest2, Decl(objectRestAssignment.ts, 11, 48))
51+
>overEmit : Symbol(overEmit, Decl(objectRestAssignment.ts, 8, 3))
52+
53+
({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit);
54+
>a : Symbol(a, Decl(objectRestAssignment.ts, 12, 2))
55+
>y : Symbol(y, Decl(objectRestAssignment.ts, 11, 25))
56+
>b : Symbol(b, Decl(objectRestAssignment.ts, 12, 29))
57+
>z : Symbol(z, Decl(objectRestAssignment.ts, 12, 34))
58+
>overEmit : Symbol(overEmit, Decl(objectRestAssignment.ts, 8, 3))
59+

tests/baselines/reference/objectRestAssignment.types

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,44 @@ let complex: { x: { ka, ki }, y: number };
3232
>rest : any
3333
>complex : { x: { ka: any; ki: any; }; y: number; }
3434

35+
// should be:
36+
let overEmit: { a: { ka: string, x: string }[], b: { z: string, ki: string, ku: string }, ke: string, ko: string };
37+
>overEmit : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
38+
>a : { ka: string; x: string; }[]
39+
>ka : string
40+
>x : string
41+
>b : { z: string; ki: string; ku: string; }
42+
>z : string
43+
>ki : string
44+
>ku : string
45+
>ke : string
46+
>ko : string
47+
48+
// var _g = overEmit.a, [_h, ...y] = _g, nested2 = __rest(_h, []), _j = overEmit.b, { z } = _j, c = __rest(_j, ["z"]), rest2 = __rest(overEmit, ["a", "b"]);
49+
var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit;
50+
>a : any
51+
>nested2 : { ka: string; x: string; }
52+
>y : { ka: string; x: string; }[]
53+
>b : any
54+
>z : string
55+
>c : { ki: string; ku: string; }
56+
>rest2 : { ke: string; ko: string; }
57+
>overEmit : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
58+
59+
({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit);
60+
>({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit) : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
61+
>{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
62+
>{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } : { ke: string; ko: string; a: { ka: string; x: string; }[]; b: { ki: string; ku: string; z: string; }; }
63+
>a : { ka: string; x: string; }[]
64+
>[{ ...nested2 }, ...y] : { ka: string; x: string; }[]
65+
>{ ...nested2 } : { ka: string; x: string; }
66+
>nested2 : any
67+
>...y : { ka: string; x: string; }
68+
>y : { ka: string; x: string; }[]
69+
>b : { ki: string; ku: string; z: string; }
70+
>{ z, ...c } : { ki: string; ku: string; z: string; }
71+
>z : string
72+
>c : any
73+
>rest2 : any
74+
>overEmit : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
75+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
// @target: es2015
12
let ka: any;
23
let nested: { ki };
34
let other: number;
45
let rest: { };
56
let complex: { x: { ka, ki }, y: number };
67
({x: { ka, ...nested }, y: other, ...rest} = complex);
8+
9+
// should be:
10+
let overEmit: { a: { ka: string, x: string }[], b: { z: string, ki: string, ku: string }, ke: string, ko: string };
11+
12+
// var _g = overEmit.a, [_h, ...y] = _g, nested2 = __rest(_h, []), _j = overEmit.b, { z } = _j, c = __rest(_j, ["z"]), rest2 = __rest(overEmit, ["a", "b"]);
13+
var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit;
14+
({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit);

0 commit comments

Comments
 (0)