Skip to content

Commit 3497e27

Browse files
committed
Add spread to typeWriter
1 parent abe4076 commit 3497e27

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

src/harness/typeWriter.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class TypeWriterWalker {
5353
case ts.SyntaxKind.PostfixUnaryExpression:
5454
case ts.SyntaxKind.BinaryExpression:
5555
case ts.SyntaxKind.ConditionalExpression:
56+
case ts.SyntaxKind.SpreadElementExpression:
5657
this.log(node, this.getTypeOfNode(node));
5758
break;
5859

tests/baselines/reference/arrayLiteralSpread.types

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,55 @@ function f0() {
99
var a1 = [...a];
1010
>a1 : number[]
1111
>[...a] : number[]
12+
>...a : number[]
1213
>a : number[]
1314

1415
var a2 = [1, ...a];
1516
>a2 : number[]
1617
>[1, ...a] : number[]
18+
>...a : number[]
1719
>a : number[]
1820

1921
var a3 = [1, 2, ...a];
2022
>a3 : number[]
2123
>[1, 2, ...a] : number[]
24+
>...a : number[]
2225
>a : number[]
2326

2427
var a4 = [...a, 1];
2528
>a4 : number[]
2629
>[...a, 1] : number[]
30+
>...a : number[]
2731
>a : number[]
2832

2933
var a5 = [...a, 1, 2];
3034
>a5 : number[]
3135
>[...a, 1, 2] : number[]
36+
>...a : number[]
3237
>a : number[]
3338

3439
var a6 = [1, 2, ...a, 1, 2];
3540
>a6 : number[]
3641
>[1, 2, ...a, 1, 2] : number[]
42+
>...a : number[]
3743
>a : number[]
3844

3945
var a7 = [1, ...a, 2, ...a];
4046
>a7 : number[]
4147
>[1, ...a, 2, ...a] : number[]
48+
>...a : number[]
4249
>a : number[]
50+
>...a : number[]
4351
>a : number[]
4452

4553
var a8 = [...a, ...a, ...a];
4654
>a8 : number[]
4755
>[...a, ...a, ...a] : number[]
56+
>...a : number[]
4857
>a : number[]
58+
>...a : number[]
4959
>a : number[]
60+
>...a : number[]
5061
>a : number[]
5162
}
5263

@@ -60,6 +71,7 @@ function f1() {
6071
var b = ["hello", ...a, true];
6172
>b : (string | number | boolean)[]
6273
>["hello", ...a, true] : (string | number | boolean)[]
74+
>...a : number[]
6375
>a : number[]
6476

6577
var b: (string | number | boolean)[];
@@ -72,19 +84,29 @@ function f2() {
7284
var a = [...[...[...[...[...[]]]]]];
7385
>a : any[]
7486
>[...[...[...[...[...[]]]]]] : undefined[]
87+
>...[...[...[...[...[]]]]] : undefined[]
7588
>[...[...[...[...[]]]]] : undefined[]
89+
>...[...[...[...[]]]] : undefined[]
7690
>[...[...[...[]]]] : undefined[]
91+
>...[...[...[]]] : undefined[]
7792
>[...[...[]]] : undefined[]
93+
>...[...[]] : undefined[]
7894
>[...[]] : undefined[]
95+
>...[] : undefined[]
7996
>[] : undefined[]
8097

8198
var b = [...[...[...[...[...[5]]]]]];
8299
>b : number[]
83100
>[...[...[...[...[...[5]]]]]] : number[]
101+
>...[...[...[...[...[5]]]]] : number[]
84102
>[...[...[...[...[5]]]]] : number[]
103+
>...[...[...[...[5]]]] : number[]
85104
>[...[...[...[5]]]] : number[]
105+
>...[...[...[5]]] : number[]
86106
>[...[...[5]]] : number[]
107+
>...[...[5]] : number[]
87108
>[...[5]] : number[]
109+
>...[5] : number[]
88110
>[5] : number[]
89111
}
90112

tests/baselines/reference/callWithSpreadES6.types

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ foo(1, 2, "abc");
3838
foo(1, 2, ...a);
3939
>foo(1, 2, ...a) : void
4040
>foo : (x: number, y: number, ...z: string[]) => void
41+
>...a : string[]
4142
>a : string[]
4243

4344
foo(1, 2, ...a, "abc");
4445
>foo(1, 2, ...a, "abc") : void
4546
>foo : (x: number, y: number, ...z: string[]) => void
47+
>...a : string[]
4648
>a : string[]
4749

4850
obj.foo(1, 2, "abc");
@@ -56,13 +58,15 @@ obj.foo(1, 2, ...a);
5658
>obj.foo : (x: number, y: number, ...z: string[]) => any
5759
>obj : X
5860
>foo : (x: number, y: number, ...z: string[]) => any
61+
>...a : string[]
5962
>a : string[]
6063

6164
obj.foo(1, 2, ...a, "abc");
6265
>obj.foo(1, 2, ...a, "abc") : any
6366
>obj.foo : (x: number, y: number, ...z: string[]) => any
6467
>obj : X
6568
>foo : (x: number, y: number, ...z: string[]) => any
69+
>...a : string[]
6670
>a : string[]
6771

6872
(obj.foo)(1, 2, "abc");
@@ -78,6 +82,7 @@ obj.foo(1, 2, ...a, "abc");
7882
>obj.foo : (x: number, y: number, ...z: string[]) => any
7983
>obj : X
8084
>foo : (x: number, y: number, ...z: string[]) => any
85+
>...a : string[]
8186
>a : string[]
8287

8388
(obj.foo)(1, 2, ...a, "abc");
@@ -86,6 +91,7 @@ obj.foo(1, 2, ...a, "abc");
8691
>obj.foo : (x: number, y: number, ...z: string[]) => any
8792
>obj : X
8893
>foo : (x: number, y: number, ...z: string[]) => any
94+
>...a : string[]
8995
>a : string[]
9096

9197
xa[1].foo(1, 2, "abc");
@@ -101,6 +107,7 @@ xa[1].foo(1, 2, ...a);
101107
>xa[1] : X
102108
>xa : X[]
103109
>foo : (x: number, y: number, ...z: string[]) => any
110+
>...a : string[]
104111
>a : string[]
105112

106113
xa[1].foo(1, 2, ...a, "abc");
@@ -109,6 +116,7 @@ xa[1].foo(1, 2, ...a, "abc");
109116
>xa[1] : X
110117
>xa : X[]
111118
>foo : (x: number, y: number, ...z: string[]) => any
119+
>...a : string[]
112120
>a : string[]
113121

114122
(<Function>xa[1].foo)(...[1, 2, "abc"]);
@@ -120,6 +128,7 @@ xa[1].foo(1, 2, ...a, "abc");
120128
>xa[1] : X
121129
>xa : X[]
122130
>foo : (x: number, y: number, ...z: string[]) => any
131+
>...[1, 2, "abc"] : (string | number)[]
123132
>[1, 2, "abc"] : (string | number)[]
124133

125134
class C {
@@ -145,6 +154,7 @@ class C {
145154
>foo : (x: number, y: number, ...z: string[]) => void
146155
>x : number
147156
>y : number
157+
>...z : string[]
148158
>z : string[]
149159
}
150160
foo(x: number, y: number, ...z: string[]) {
@@ -167,6 +177,7 @@ class D extends C {
167177
super(1, 2, ...a);
168178
>super(1, 2, ...a) : void
169179
>super : typeof C
180+
>...a : string[]
170181
>a : string[]
171182
}
172183
foo() {
@@ -183,6 +194,7 @@ class D extends C {
183194
>super.foo : (x: number, y: number, ...z: string[]) => void
184195
>super : C
185196
>foo : (x: number, y: number, ...z: string[]) => void
197+
>...a : string[]
186198
>a : string[]
187199
}
188200
}
@@ -192,5 +204,6 @@ var c = new C(1, 2, ...a);
192204
>c : C
193205
>new C(1, 2, ...a) : C
194206
>C : typeof C
207+
>...a : string[]
195208
>a : string[]
196209

0 commit comments

Comments
 (0)