From 3497e27d561214174b9b686b36dae71b44cabad9 Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Mon, 23 Mar 2015 18:22:43 -0700 Subject: [PATCH] Add spread to typeWriter --- src/harness/typeWriter.ts | 1 + .../reference/arrayLiteralSpread.types | 22 +++++++++++++++++++ .../reference/callWithSpreadES6.types | 13 +++++++++++ 3 files changed, 36 insertions(+) diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index 54cdc27e3b3..e645c8b765c 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -53,6 +53,7 @@ class TypeWriterWalker { case ts.SyntaxKind.PostfixUnaryExpression: case ts.SyntaxKind.BinaryExpression: case ts.SyntaxKind.ConditionalExpression: + case ts.SyntaxKind.SpreadElementExpression: this.log(node, this.getTypeOfNode(node)); break; diff --git a/tests/baselines/reference/arrayLiteralSpread.types b/tests/baselines/reference/arrayLiteralSpread.types index 0dae59521bf..3122c0628af 100644 --- a/tests/baselines/reference/arrayLiteralSpread.types +++ b/tests/baselines/reference/arrayLiteralSpread.types @@ -9,44 +9,55 @@ function f0() { var a1 = [...a]; >a1 : number[] >[...a] : number[] +>...a : number[] >a : number[] var a2 = [1, ...a]; >a2 : number[] >[1, ...a] : number[] +>...a : number[] >a : number[] var a3 = [1, 2, ...a]; >a3 : number[] >[1, 2, ...a] : number[] +>...a : number[] >a : number[] var a4 = [...a, 1]; >a4 : number[] >[...a, 1] : number[] +>...a : number[] >a : number[] var a5 = [...a, 1, 2]; >a5 : number[] >[...a, 1, 2] : number[] +>...a : number[] >a : number[] var a6 = [1, 2, ...a, 1, 2]; >a6 : number[] >[1, 2, ...a, 1, 2] : number[] +>...a : number[] >a : number[] var a7 = [1, ...a, 2, ...a]; >a7 : number[] >[1, ...a, 2, ...a] : number[] +>...a : number[] >a : number[] +>...a : number[] >a : number[] var a8 = [...a, ...a, ...a]; >a8 : number[] >[...a, ...a, ...a] : number[] +>...a : number[] >a : number[] +>...a : number[] >a : number[] +>...a : number[] >a : number[] } @@ -60,6 +71,7 @@ function f1() { var b = ["hello", ...a, true]; >b : (string | number | boolean)[] >["hello", ...a, true] : (string | number | boolean)[] +>...a : number[] >a : number[] var b: (string | number | boolean)[]; @@ -72,19 +84,29 @@ function f2() { var a = [...[...[...[...[...[]]]]]]; >a : any[] >[...[...[...[...[...[]]]]]] : undefined[] +>...[...[...[...[...[]]]]] : undefined[] >[...[...[...[...[]]]]] : undefined[] +>...[...[...[...[]]]] : undefined[] >[...[...[...[]]]] : undefined[] +>...[...[...[]]] : undefined[] >[...[...[]]] : undefined[] +>...[...[]] : undefined[] >[...[]] : undefined[] +>...[] : undefined[] >[] : undefined[] var b = [...[...[...[...[...[5]]]]]]; >b : number[] >[...[...[...[...[...[5]]]]]] : number[] +>...[...[...[...[...[5]]]]] : number[] >[...[...[...[...[5]]]]] : number[] +>...[...[...[...[5]]]] : number[] >[...[...[...[5]]]] : number[] +>...[...[...[5]]] : number[] >[...[...[5]]] : number[] +>...[...[5]] : number[] >[...[5]] : number[] +>...[5] : number[] >[5] : number[] } diff --git a/tests/baselines/reference/callWithSpreadES6.types b/tests/baselines/reference/callWithSpreadES6.types index 8a75d21e4ef..1711926d773 100644 --- a/tests/baselines/reference/callWithSpreadES6.types +++ b/tests/baselines/reference/callWithSpreadES6.types @@ -38,11 +38,13 @@ foo(1, 2, "abc"); foo(1, 2, ...a); >foo(1, 2, ...a) : void >foo : (x: number, y: number, ...z: string[]) => void +>...a : string[] >a : string[] foo(1, 2, ...a, "abc"); >foo(1, 2, ...a, "abc") : void >foo : (x: number, y: number, ...z: string[]) => void +>...a : string[] >a : string[] obj.foo(1, 2, "abc"); @@ -56,6 +58,7 @@ obj.foo(1, 2, ...a); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>...a : string[] >a : string[] obj.foo(1, 2, ...a, "abc"); @@ -63,6 +66,7 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>...a : string[] >a : string[] (obj.foo)(1, 2, "abc"); @@ -78,6 +82,7 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>...a : string[] >a : string[] (obj.foo)(1, 2, ...a, "abc"); @@ -86,6 +91,7 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo : (x: number, y: number, ...z: string[]) => any >obj : X >foo : (x: number, y: number, ...z: string[]) => any +>...a : string[] >a : string[] xa[1].foo(1, 2, "abc"); @@ -101,6 +107,7 @@ xa[1].foo(1, 2, ...a); >xa[1] : X >xa : X[] >foo : (x: number, y: number, ...z: string[]) => any +>...a : string[] >a : string[] xa[1].foo(1, 2, ...a, "abc"); @@ -109,6 +116,7 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1] : X >xa : X[] >foo : (x: number, y: number, ...z: string[]) => any +>...a : string[] >a : string[] (xa[1].foo)(...[1, 2, "abc"]); @@ -120,6 +128,7 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1] : X >xa : X[] >foo : (x: number, y: number, ...z: string[]) => any +>...[1, 2, "abc"] : (string | number)[] >[1, 2, "abc"] : (string | number)[] class C { @@ -145,6 +154,7 @@ class C { >foo : (x: number, y: number, ...z: string[]) => void >x : number >y : number +>...z : string[] >z : string[] } foo(x: number, y: number, ...z: string[]) { @@ -167,6 +177,7 @@ class D extends C { super(1, 2, ...a); >super(1, 2, ...a) : void >super : typeof C +>...a : string[] >a : string[] } foo() { @@ -183,6 +194,7 @@ class D extends C { >super.foo : (x: number, y: number, ...z: string[]) => void >super : C >foo : (x: number, y: number, ...z: string[]) => void +>...a : string[] >a : string[] } } @@ -192,5 +204,6 @@ var c = new C(1, 2, ...a); >c : C >new C(1, 2, ...a) : C >C : typeof C +>...a : string[] >a : string[]