Add spread to typeWriter

This commit is contained in:
Jason Freeman 2015-03-23 18:22:43 -07:00
parent abe4076417
commit 3497e27d56
3 changed files with 36 additions and 0 deletions

View File

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

View File

@ -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[]
}

View File

@ -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[]
(<Function>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[]