From 4037d07a0b2f37d587823d8d13812f56dac6891a Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 21 Jun 2018 17:21:34 -1000 Subject: [PATCH] Accept new baselines --- ...umentExpressionContextualTyping.errors.txt | 8 +++-- .../argumentExpressionContextualTyping.types | 2 +- ...teralExpressionContextualTyping.errors.txt | 10 +++--- ...rayLiteralExpressionContextualTyping.types | 2 +- .../reference/arrowFunctionExpressions.types | 8 ++--- .../declarationEmitDestructuring3.js | 4 +-- .../declarationEmitDestructuring3.types | 10 +++--- .../declarationEmitDestructuring5.js | 6 ++-- .../declarationEmitDestructuring5.types | 6 ++-- ...rationEmitDestructuringArrayPattern2.types | 2 +- ...clarationEmitDestructuringArrayPattern4.js | 8 ++--- ...rationEmitDestructuringArrayPattern4.types | 32 +++++++++---------- ...ArrayBindingPatternAndAssignment1ES5.types | 26 +++++++-------- ...dingPatternAndAssignment1ES5iterable.types | 26 +++++++-------- ...ArrayBindingPatternAndAssignment1ES6.types | 26 +++++++-------- ...ingArrayBindingPatternAndAssignment2.types | 2 +- ...ingArrayBindingPatternAndAssignment3.types | 6 ++-- ...estructuringParameterDeclaration1ES5.types | 2 +- ...ringParameterDeclaration1ES5iterable.types | 2 +- ...estructuringParameterDeclaration1ES6.types | 2 +- ...tructuringParameterDeclaration2.errors.txt | 18 ++++++----- .../destructuringParameterDeclaration2.types | 4 +-- ...cturingParameterDeclaration3ES5.errors.txt | 14 +++++++- ...estructuringParameterDeclaration3ES5.types | 14 ++++---- ...arameterDeclaration3ES5iterable.errors.txt | 14 +++++++- ...ringParameterDeclaration3ES5iterable.types | 14 ++++---- ...cturingParameterDeclaration3ES6.errors.txt | 14 +++++++- ...estructuringParameterDeclaration3ES6.types | 14 ++++---- ...destructuringVariableDeclaration1ES5.types | 12 +++---- ...uringVariableDeclaration1ES5iterable.types | 12 +++---- ...destructuringVariableDeclaration1ES6.types | 12 +++---- ...structuringVariableDeclaration2.errors.txt | 8 +---- .../destructuringVariableDeclaration2.symbols | 1 + .../destructuringVariableDeclaration2.types | 12 +++---- ...destructuringWithLiteralInitializers.types | 20 ++++++------ .../reference/downlevelLetConst12.types | 4 +-- .../reference/downlevelLetConst16.types | 4 +-- ...indingElementInParameterDeclaration1.types | 2 +- ...indingElementInParameterDeclaration2.types | 2 +- .../reference/emitArrowFunctionES6.types | 8 ++--- tests/baselines/reference/for-of49.types | 2 +- ...tializedDestructuringAssignmentTypes.types | 2 +- .../iterableArrayPattern13.errors.txt | 25 +++++++++++++++ .../reference/iterableArrayPattern13.types | 4 +-- .../reference/iterableArrayPattern24.types | 2 +- .../reference/iterableArrayPattern4.types | 2 +- .../reference/iterableArrayPattern6.types | 2 +- .../reference/iterableArrayPattern8.types | 2 +- ...AnyDestructuringParameterDeclaration.types | 2 +- ...plicitAnyDestructuringVarDeclaration.types | 2 +- .../reference/objectRestAssignment.types | 6 ++-- .../reference/recursiveLetConst.types | 2 +- ...nDestructuringForArrayBindingPattern.types | 12 +++---- ...DestructuringForArrayBindingPattern2.types | 6 ++-- ...gForArrayBindingPatternDefaultValues.types | 12 +++---- ...ForArrayBindingPatternDefaultValues2.types | 6 ++-- ...estructuringForOfArrayBindingPattern.types | 6 ++-- ...structuringForOfArrayBindingPattern2.types | 6 ++-- ...orOfArrayBindingPatternDefaultValues.types | 6 ++-- ...rOfArrayBindingPatternDefaultValues2.types | 6 ++-- ...cturingParametertArrayBindingPattern.types | 4 +-- ...tertArrayBindingPatternDefaultValues.types | 4 +-- ...VariableStatementArrayBindingPattern.types | 2 +- ...ariableStatementArrayBindingPattern3.types | 6 ++-- ...mentArrayBindingPatternDefaultValues.types | 2 +- ...entArrayBindingPatternDefaultValues3.types | 24 +++++++------- 66 files changed, 306 insertions(+), 242 deletions(-) create mode 100644 tests/baselines/reference/iterableArrayPattern13.errors.txt diff --git a/tests/baselines/reference/argumentExpressionContextualTyping.errors.txt b/tests/baselines/reference/argumentExpressionContextualTyping.errors.txt index c1bac0fb1ff..87c3a6d0b37 100644 --- a/tests/baselines/reference/argumentExpressionContextualTyping.errors.txt +++ b/tests/baselines/reference/argumentExpressionContextualTyping.errors.txt @@ -1,6 +1,8 @@ tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(16,5): error TS2345: Argument of type '(string | number | boolean)[]' is not assignable to parameter of type '[string, number, boolean]'. Property '0' is missing in type '(string | number | boolean)[]'. -tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(17,5): error TS2345: Argument of type '(string | number | boolean)[]' is not assignable to parameter of type '[string, number, boolean]'. +tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(17,5): error TS2345: Argument of type '[string, number, true, ...(string | number | boolean)[]]' is not assignable to parameter of type '[string, number, boolean]'. + Types of property 'length' are incompatible. + Type 'number' is not assignable to type '3'. tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(18,5): error TS2345: Argument of type '{ x: (string | number)[]; y: { c: boolean; d: string; e: number; }; }' is not assignable to parameter of type '{ x: [any, any]; y: { c: any; d: any; e: any; }; }'. Types of property 'x' are incompatible. Type '(string | number)[]' is not assignable to type '[any, any]'. @@ -29,7 +31,9 @@ tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextua !!! error TS2345: Property '0' is missing in type '(string | number | boolean)[]'. baz(["string", 1, true, ...array]); // Error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '(string | number | boolean)[]' is not assignable to parameter of type '[string, number, boolean]'. +!!! error TS2345: Argument of type '[string, number, true, ...(string | number | boolean)[]]' is not assignable to parameter of type '[string, number, boolean]'. +!!! error TS2345: Types of property 'length' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type '3'. foo(o); // Error because x has an array type namely (string|number)[] ~ !!! error TS2345: Argument of type '{ x: (string | number)[]; y: { c: boolean; d: string; e: number; }; }' is not assignable to parameter of type '{ x: [any, any]; y: { c: any; d: any; e: any; }; }'. diff --git a/tests/baselines/reference/argumentExpressionContextualTyping.types b/tests/baselines/reference/argumentExpressionContextualTyping.types index 9a7d3f97d5b..46ef3a38570 100644 --- a/tests/baselines/reference/argumentExpressionContextualTyping.types +++ b/tests/baselines/reference/argumentExpressionContextualTyping.types @@ -11,7 +11,7 @@ function foo({x: [a, b], y: {c, d, e}}) { } >e : any function bar({x: [a, b = 10], y: {c, d, e = { f:1 }}}) { } ->bar : ({ x: [a, b], y: { c, d, e } }: { x: [any, number]; y: { c: any; d: any; e?: { f: number; }; }; }) => void +>bar : ({ x: [a, b], y: { c, d, e } }: { x: [any, number?]; y: { c: any; d: any; e?: { f: number; }; }; }) => void >x : any >a : any >b : number diff --git a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt index 8cb36b113a7..e2d047ac711 100644 --- a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt +++ b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt @@ -7,8 +7,9 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionConte tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(8,5): error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'. Types of property 'length' are incompatible. Type '4' is not assignable to type '3'. -tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(14,5): error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'. - Property '0' is missing in type 'number[]'. +tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(14,5): error TS2322: Type '[number, number, number, ...number[]]' is not assignable to type '[number, number, number]'. + Types of property 'length' are incompatible. + Type 'number' is not assignable to type '3'. ==== tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts (4 errors) ==== @@ -39,6 +40,7 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionConte var spr1 = [1, 2, 3, ...tup]; var spr2:[number, number, number] = [1, 2, 3, ...tup]; // Error ~~~~ -!!! error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'. -!!! error TS2322: Property '0' is missing in type 'number[]'. +!!! error TS2322: Type '[number, number, number, ...number[]]' is not assignable to type '[number, number, number]'. +!!! error TS2322: Types of property 'length' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type '3'. \ No newline at end of file diff --git a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.types b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.types index 5954448c984..3c1a9b6ba72 100644 --- a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.types +++ b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.types @@ -62,7 +62,7 @@ var spr1 = [1, 2, 3, ...tup]; var spr2:[number, number, number] = [1, 2, 3, ...tup]; // Error >spr2 : [number, number, number] ->[1, 2, 3, ...tup] : number[] +>[1, 2, 3, ...tup] : [number, number, number, ...number[]] >1 : 1 >2 : 2 >3 : 3 diff --git a/tests/baselines/reference/arrowFunctionExpressions.types b/tests/baselines/reference/arrowFunctionExpressions.types index 0de6c674d18..9eb9b091813 100644 --- a/tests/baselines/reference/arrowFunctionExpressions.types +++ b/tests/baselines/reference/arrowFunctionExpressions.types @@ -71,14 +71,14 @@ var p3 = ([, a]) => { }; >a : any var p4 = ([, ...a]) => { }; ->p4 : ([, ...a]: any[]) => void ->([, ...a]) => { } : ([, ...a]: any[]) => void +>p4 : ([, ...a]: [any?, ...any[]]) => void +>([, ...a]) => { } : ([, ...a]: [any?, ...any[]]) => void > : undefined >a : any[] var p5 = ([a = 1]) => { }; ->p5 : ([a]: [number]) => void ->([a = 1]) => { } : ([a]: [number]) => void +>p5 : ([a]: [number?]) => void +>([a = 1]) => { } : ([a]: [number?]) => void >a : number >1 : 1 diff --git a/tests/baselines/reference/declarationEmitDestructuring3.js b/tests/baselines/reference/declarationEmitDestructuring3.js index b21c63203c8..63b90f5d41d 100644 --- a/tests/baselines/reference/declarationEmitDestructuring3.js +++ b/tests/baselines/reference/declarationEmitDestructuring3.js @@ -14,5 +14,5 @@ function foo(_a) { //// [declarationEmitDestructuring3.d.ts] -declare function bar([x, z, ...w]: any[]): void; -declare function foo([x, ...y]?: (string | number | boolean)[]): void; +declare function bar([x, z, ...w]: [any, any, ...any[]]): void; +declare function foo([x, ...y]?: [number, string, boolean]): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring3.types b/tests/baselines/reference/declarationEmitDestructuring3.types index 8e15071c979..537de8e1e74 100644 --- a/tests/baselines/reference/declarationEmitDestructuring3.types +++ b/tests/baselines/reference/declarationEmitDestructuring3.types @@ -1,15 +1,15 @@ === tests/cases/compiler/declarationEmitDestructuring3.ts === function bar([x, z, ...w]) { } ->bar : ([x, z, ...w]: any[]) => void +>bar : ([x, z, ...w]: [any, any, ...any[]]) => void >x : any >z : any >w : any[] function foo([x, ...y] = [1, "string", true]) { } ->foo : ([x, ...y]?: (string | number | boolean)[]) => void ->x : string | number | boolean ->y : (string | number | boolean)[] ->[1, "string", true] : (string | number | boolean)[] +>foo : ([x, ...y]?: [number, string, boolean]) => void +>x : number +>y : (string | boolean)[] +>[1, "string", true] : [number, string, boolean] >1 : 1 >"string" : "string" >true : true diff --git a/tests/baselines/reference/declarationEmitDestructuring5.js b/tests/baselines/reference/declarationEmitDestructuring5.js index e5089bb2097..06a57a8ca27 100644 --- a/tests/baselines/reference/declarationEmitDestructuring5.js +++ b/tests/baselines/reference/declarationEmitDestructuring5.js @@ -24,8 +24,8 @@ function bar2(_a) { //// [declarationEmitDestructuring5.d.ts] -declare function baz([, z, ,]: [any, any, any]): void; +declare function baz([, z, ,]: [any, any, any?]): void; declare function foo([, b,]: [any, any]): void; -declare function bar([z, , ,]: [any, any, any]): void; +declare function bar([z, , ,]: [any, any?, any?]): void; declare function bar1([z, , ,]?: [number, number, number, number, number]): void; -declare function bar2([, , z, , ,]: [any, any, any, any, any]): void; +declare function bar2([, , z, , ,]: [any, any, any, any?, any?]): void; diff --git a/tests/baselines/reference/declarationEmitDestructuring5.types b/tests/baselines/reference/declarationEmitDestructuring5.types index c0223a0f061..770779fdb2f 100644 --- a/tests/baselines/reference/declarationEmitDestructuring5.types +++ b/tests/baselines/reference/declarationEmitDestructuring5.types @@ -1,6 +1,6 @@ === tests/cases/compiler/declarationEmitDestructuring5.ts === function baz([, z, , ]) { } ->baz : ([, z, ,]: [any, any, any]) => void +>baz : ([, z, ,]: [any, any, any?]) => void > : undefined >z : any > : undefined @@ -11,7 +11,7 @@ function foo([, b, ]: [any, any]): void { } >b : any function bar([z, , , ]) { } ->bar : ([z, , ,]: [any, any, any]) => void +>bar : ([z, , ,]: [any, any?, any?]) => void >z : any > : undefined > : undefined @@ -29,7 +29,7 @@ function bar1([z, , , ] = [1, 3, 4, 6, 7]) { } >7 : 7 function bar2([,,z, , , ]) { } ->bar2 : ([, , z, , ,]: [any, any, any, any, any]) => void +>bar2 : ([, , z, , ,]: [any, any, any, any?, any?]) => void > : undefined > : undefined >z : any diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types index 097cab978d5..37781e0a1ae 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern2.types @@ -23,7 +23,7 @@ var [a11, b11, c11] = []; >a11 : any >b11 : any >c11 : any ->[] : [undefined, undefined, undefined] +>[] : [undefined?, undefined?, undefined?] var [a2, [b2, { x12, y12: c2 }]=["abc", { x12: 10, y12: false }]] = [1, ["hello", { x12: 5, y12: true }]]; >a2 : number diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js index 1bd07e7b974..f0438ba5a8a 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.js @@ -24,8 +24,8 @@ var _f = [1, "hello", true], x19 = _f[0], y19 = _f[1], z19 = _f[2], a13 = _f.sli declare var a5: number[]; declare var x14: number, a6: number[]; declare var x15: number, y15: number, a7: number[]; -declare var x16: number, y16: number, z16: number, a8: number[]; +declare var x16: number, y16: number, z16: number, a8: any[]; declare var a9: (string | number | boolean)[]; -declare var x17: string | number | boolean, a10: (string | number | boolean)[]; -declare var x18: string | number | boolean, y18: string | number | boolean, a12: (string | number | boolean)[]; -declare var x19: string | number | boolean, y19: string | number | boolean, z19: string | number | boolean, a13: (string | number | boolean)[]; +declare var x17: number, a10: (string | boolean)[]; +declare var x18: number, y18: string, a12: boolean[]; +declare var x19: number, y19: string, z19: boolean, a13: any[]; diff --git a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types index 0141b3f79e7..52c292997a9 100644 --- a/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types +++ b/tests/baselines/reference/declarationEmitDestructuringArrayPattern4.types @@ -9,7 +9,7 @@ var [...a5] = [1, 2, 3]; var [x14, ...a6] = [1, 2, 3]; >x14 : number >a6 : number[] ->[1, 2, 3] : number[] +>[1, 2, 3] : [number, number, number] >1 : 1 >2 : 2 >3 : 3 @@ -18,7 +18,7 @@ var [x15, y15, ...a7] = [1, 2, 3]; >x15 : number >y15 : number >a7 : number[] ->[1, 2, 3] : number[] +>[1, 2, 3] : [number, number, number] >1 : 1 >2 : 2 >3 : 3 @@ -27,8 +27,8 @@ var [x16, y16, z16, ...a8] = [1, 2, 3]; >x16 : number >y16 : number >z16 : number ->a8 : number[] ->[1, 2, 3] : number[] +>a8 : any[] +>[1, 2, 3] : [number, number, number] >1 : 1 >2 : 2 >3 : 3 @@ -41,28 +41,28 @@ var [...a9] = [1, "hello", true]; >true : true var [x17, ...a10] = [1, "hello", true]; ->x17 : string | number | boolean ->a10 : (string | number | boolean)[] ->[1, "hello", true] : (string | number | boolean)[] +>x17 : number +>a10 : (string | boolean)[] +>[1, "hello", true] : [number, string, boolean] >1 : 1 >"hello" : "hello" >true : true var [x18, y18, ...a12] = [1, "hello", true]; ->x18 : string | number | boolean ->y18 : string | number | boolean ->a12 : (string | number | boolean)[] ->[1, "hello", true] : (string | number | boolean)[] +>x18 : number +>y18 : string +>a12 : boolean[] +>[1, "hello", true] : [number, string, boolean] >1 : 1 >"hello" : "hello" >true : true var [x19, y19, z19, ...a13] = [1, "hello", true]; ->x19 : string | number | boolean ->y19 : string | number | boolean ->z19 : string | number | boolean ->a13 : (string | number | boolean)[] ->[1, "hello", true] : (string | number | boolean)[] +>x19 : number +>y19 : string +>z19 : boolean +>a13 : any[] +>[1, "hello", true] : [number, string, boolean] >1 : 1 >"hello" : "hello" >true : true diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types index 3ad1bfa1dd2..2d212b1e13e 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5.types @@ -93,18 +93,18 @@ var [c0, c1] = [...temp]; var [c2] = []; >c2 : any ->[] : [undefined] +>[] : [undefined?] var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] >c3 : any >c4 : any ->[[[]], [[[[]]]]] : [[[undefined]], [[[[undefined]]]]] ->[[]] : [[undefined]] ->[] : [undefined] ->[[[[]]]] : [[[[undefined]]]] ->[[[]]] : [[[undefined]]] ->[[]] : [[undefined]] ->[] : [undefined] +>[[[]], [[[[]]]]] : [[[undefined?]], [[[[undefined?]]]]] +>[[]] : [[undefined?]] +>[] : [undefined?] +>[[[[]]]] : [[[[undefined?]]]] +>[[[]]] : [[[undefined?]]] +>[[]] : [[undefined?]] +>[] : [undefined?] var [[c5], c6]: [[string|number], boolean] = [[1], true]; >c5 : string | number @@ -149,7 +149,7 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"]; > : undefined > : undefined >c10 : (string | number)[] ->[1, 2, 3, 4, "hello"] : (string | number)[] +>[1, 2, 3, 4, "hello"] : [number, number, number, number, string] >1 : 1 >2 : 2 >3 : 3 @@ -157,10 +157,10 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"]; >"hello" : "hello" var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : string | number ->c12 : string | number ->c13 : (string | number)[] ->[1, 2, "string"] : (string | number)[] +>c11 : number +>c12 : number +>c13 : string[] +>[1, 2, "string"] : [number, number, string] >1 : 1 >2 : 2 >"string" : "string" diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5iterable.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5iterable.types index 1c46f553d4d..8ef92a88755 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5iterable.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5iterable.types @@ -93,18 +93,18 @@ var [c0, c1] = [...temp]; var [c2] = []; >c2 : any ->[] : [undefined] +>[] : [undefined?] var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] >c3 : any >c4 : any ->[[[]], [[[[]]]]] : [[[undefined]], [[[[undefined]]]]] ->[[]] : [[undefined]] ->[] : [undefined] ->[[[[]]]] : [[[[undefined]]]] ->[[[]]] : [[[undefined]]] ->[[]] : [[undefined]] ->[] : [undefined] +>[[[]], [[[[]]]]] : [[[undefined?]], [[[[undefined?]]]]] +>[[]] : [[undefined?]] +>[] : [undefined?] +>[[[[]]]] : [[[[undefined?]]]] +>[[[]]] : [[[undefined?]]] +>[[]] : [[undefined?]] +>[] : [undefined?] var [[c5], c6]: [[string|number], boolean] = [[1], true]; >c5 : string | number @@ -149,7 +149,7 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"]; > : undefined > : undefined >c10 : (string | number)[] ->[1, 2, 3, 4, "hello"] : (string | number)[] +>[1, 2, 3, 4, "hello"] : [number, number, number, number, string] >1 : 1 >2 : 2 >3 : 3 @@ -157,10 +157,10 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"]; >"hello" : "hello" var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : string | number ->c12 : string | number ->c13 : (string | number)[] ->[1, 2, "string"] : (string | number)[] +>c11 : number +>c12 : number +>c13 : string[] +>[1, 2, "string"] : [number, number, string] >1 : 1 >2 : 2 >"string" : "string" diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types index 3a51965df31..7767cadee5a 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES6.types @@ -93,18 +93,18 @@ var [c0, c1] = [...temp]; var [c2] = []; >c2 : any ->[] : [undefined] +>[] : [undefined?] var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]] >c3 : any >c4 : any ->[[[]], [[[[]]]]] : [[[undefined]], [[[[undefined]]]]] ->[[]] : [[undefined]] ->[] : [undefined] ->[[[[]]]] : [[[[undefined]]]] ->[[[]]] : [[[undefined]]] ->[[]] : [[undefined]] ->[] : [undefined] +>[[[]], [[[[]]]]] : [[[undefined?]], [[[[undefined?]]]]] +>[[]] : [[undefined?]] +>[] : [undefined?] +>[[[[]]]] : [[[[undefined?]]]] +>[[[]]] : [[[undefined?]]] +>[[]] : [[undefined?]] +>[] : [undefined?] var [[c5], c6]: [[string|number], boolean] = [[1], true]; >c5 : string | number @@ -149,7 +149,7 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"]; > : undefined > : undefined >c10 : (string | number)[] ->[1, 2, 3, 4, "hello"] : (string | number)[] +>[1, 2, 3, 4, "hello"] : [number, number, number, number, string] >1 : 1 >2 : 2 >3 : 3 @@ -157,10 +157,10 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"]; >"hello" : "hello" var [c11, c12, ...c13] = [1, 2, "string"]; ->c11 : string | number ->c12 : string | number ->c13 : (string | number)[] ->[1, 2, "string"] : (string | number)[] +>c11 : number +>c12 : number +>c13 : string[] +>[1, 2, "string"] : [number, number, string] >1 : 1 >2 : 2 >"string" : "string" diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types index 1a8eb31fd80..97ccf4930e6 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types @@ -4,7 +4,7 @@ var [[a0], [[a1]]] = [] // Error >a0 : any >a1 : any ->[] : [undefined, undefined] +>[] : [undefined?, undefined?] var [[a2], [[a3]]] = undefined // Error >a2 : any diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types index 542a8ad1b36..0fb81ba6aa3 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types @@ -3,7 +3,7 @@ const [a, b = a] = [1]; // ok >a : any >b : any >a : any ->[1] : [number, any] +>[1] : [number, any?] >1 : 1 const [c, d = c, e = e] = [1]; // error for e = e @@ -12,7 +12,7 @@ const [c, d = c, e = e] = [1]; // error for e = e >c : any >e : any >e : any ->[1] : [number, any, any] +>[1] : [number, any?, any?] >1 : 1 const [f, g = f, h = i, i = f] = [1]; // error for h = i @@ -23,7 +23,7 @@ const [f, g = f, h = i, i = f] = [1]; // error for h = i >i : any >i : any >f : any ->[1] : [number, any, any, any] +>[1] : [number, any?, any?, any?] >1 : 1 (function ([a, b = a]) { // ok diff --git a/tests/baselines/reference/destructuringParameterDeclaration1ES5.types b/tests/baselines/reference/destructuringParameterDeclaration1ES5.types index c7a5c44f1d4..5977fb4bea2 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration1ES5.types +++ b/tests/baselines/reference/destructuringParameterDeclaration1ES5.types @@ -229,7 +229,7 @@ function c5([a, b, [[c]]]) { } >c : any function c6([a, b, [[c=1]]]) { } ->c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void +>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void >a : any >b : any >c : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types b/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types index b41a2027586..7601de8ac92 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types +++ b/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types @@ -229,7 +229,7 @@ function c5([a, b, [[c]]]) { } >c : any function c6([a, b, [[c=1]]]) { } ->c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void +>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void >a : any >b : any >c : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration1ES6.types b/tests/baselines/reference/destructuringParameterDeclaration1ES6.types index 9de904efdec..8a6f5d6ca42 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration1ES6.types +++ b/tests/baselines/reference/destructuringParameterDeclaration1ES6.types @@ -212,7 +212,7 @@ function c5([a, b, [[c]]]) { } >c : any function c6([a, b, [[c=1]]]) { } ->c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void +>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void >a : any >b : any >c : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt index 46a816af349..6e4b3f1ad08 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt @@ -28,10 +28,11 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(39,4): error TS2345: Argument of type '[number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. Types of property '2' are incompatible. Type 'boolean' is not assignable to type '[[any]]'. -tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(40,4): error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number]]]'. - Type '[[string]]' is not assignable to type '[[number]]'. - Type '[string]' is not assignable to type '[number]'. - Type 'string' is not assignable to type 'number'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(40,4): error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number?]]]'. + Type '[[string]]' is not assignable to type '[[number?]]'. + Type '[string]' is not assignable to type '[number?]'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(46,13): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(47,13): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(56,8): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. @@ -131,10 +132,11 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2345: Type 'boolean' is not assignable to type '[[any]]'. c6([1, 2, [["string"]]]); // Error, implied type is [any, any, [[number]]] // Use initializer ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number]]]'. -!!! error TS2345: Type '[[string]]' is not assignable to type '[[number]]'. -!!! error TS2345: Type '[string]' is not assignable to type '[number]'. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number?]]]'. +!!! error TS2345: Type '[[string]]' is not assignable to type '[[number?]]'. +!!! error TS2345: Type '[string]' is not assignable to type '[number?]'. +!!! error TS2345: Types of property '0' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. // A parameter can be marked optional by following its name or binding pattern with a question mark (?) // or by including an initializer. Initializers (including binding property or element initializers) are diff --git a/tests/baselines/reference/destructuringParameterDeclaration2.types b/tests/baselines/reference/destructuringParameterDeclaration2.types index 5810f5bca98..44f7690ee1f 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration2.types +++ b/tests/baselines/reference/destructuringParameterDeclaration2.types @@ -143,7 +143,7 @@ function c5([a, b, [[c]]]) { } >c : any function c6([a, b, [[c = 1]]]) { } ->c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void +>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void >a : any >b : any >c : number @@ -193,7 +193,7 @@ c5([1, 2, false, true]); // Error, implied type is [any, any, [[any]]] c6([1, 2, [["string"]]]); // Error, implied type is [any, any, [[number]]] // Use initializer >c6([1, 2, [["string"]]]) : void ->c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void +>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void >[1, 2, [["string"]]] : (number | string[][])[] >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration3ES5.errors.txt index 3b16993a047..d3d7cc97b51 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5.errors.txt @@ -1,9 +1,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts(26,4): error TS2345: Argument of type '[number, number, [[string]], boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. Types of property 'length' are incompatible. Type '5' is not assignable to type '3'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts(29,5): error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. + Types of property '2' are incompatible. + Type 'number' is not assignable to type '[[any]]'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts(30,5): error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. + Property '2' is missing in type '[number, number]'. -==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts (1 errors) ==== +==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts (3 errors) ==== // If the parameter is a rest parameter, the parameter type is any[] // A type annotation for a rest parameter must denote an array type. @@ -37,7 +42,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5. a10([1, 2, [["string"]], false, true]); // Parameter type is any[] a10([1, 2, 3, false, true]); // Parameter type is any[] + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. +!!! error TS2345: Types of property '2' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type '[[any]]'. a10([1, 2]); // Parameter type is any[] + ~~~~~~ +!!! error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. +!!! error TS2345: Property '2' is missing in type '[number, number]'. a11([1, 2]); // Parameter type is number[] // Rest parameter with generic diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5.types b/tests/baselines/reference/destructuringParameterDeclaration3ES5.types index 33e0d3b6bd8..e9d2abd14b6 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5.types +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5.types @@ -52,7 +52,7 @@ function a9([a, b, [[c]]]) { } >c : any function a10([a, b, [[c]], ...x]) { } ->a10 : ([a, b, [[c]], ...x]: Iterable) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >a : any >b : any >c : any @@ -107,19 +107,19 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]] a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10([1, 2, [["string"]], false, true]) : void ->a10 : ([a, b, [[c]], ...x]: Iterable) => void ->[1, 2, [["string"]], false, true] : (number | boolean | string[][])[] +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void +>[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] >1 : 1 >2 : 2 ->[["string"]] : string[][] ->["string"] : string[] +>[["string"]] : [[string]] +>["string"] : [string] >"string" : "string" >false : false >true : true a10([1, 2, 3, false, true]); // Parameter type is any[] >a10([1, 2, 3, false, true]) : void ->a10 : ([a, b, [[c]], ...x]: Iterable) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >[1, 2, 3, false, true] : (number | boolean)[] >1 : 1 >2 : 2 @@ -129,7 +129,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[] a10([1, 2]); // Parameter type is any[] >a10([1, 2]) : void ->a10 : ([a, b, [[c]], ...x]: Iterable) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >[1, 2] : number[] >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.errors.txt index f0dbf325ed4..fa08518279e 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.errors.txt @@ -1,9 +1,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts(26,4): error TS2345: Argument of type '[number, number, [[string]], boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. Types of property 'length' are incompatible. Type '5' is not assignable to type '3'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts(29,5): error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. + Types of property '2' are incompatible. + Type 'number' is not assignable to type '[[any]]'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts(30,5): error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. + Property '2' is missing in type '[number, number]'. -==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts (1 errors) ==== +==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts (3 errors) ==== // If the parameter is a rest parameter, the parameter type is any[] // A type annotation for a rest parameter must denote an array type. @@ -37,7 +42,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5i a10([1, 2, [["string"]], false, true]); // Parameter type is any[] a10([1, 2, 3, false, true]); // Parameter type is any[] + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. +!!! error TS2345: Types of property '2' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type '[[any]]'. a10([1, 2]); // Parameter type is any[] + ~~~~~~ +!!! error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. +!!! error TS2345: Property '2' is missing in type '[number, number]'. a11([1, 2]); // Parameter type is number[] // Rest parameter with generic diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types b/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types index 931e149ffe2..7f26813108d 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types @@ -52,7 +52,7 @@ function a9([a, b, [[c]]]) { } >c : any function a10([a, b, [[c]], ...x]) { } ->a10 : ([a, b, [[c]], ...x]: any[]) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >a : any >b : any >c : any @@ -107,19 +107,19 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]] a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10([1, 2, [["string"]], false, true]) : void ->a10 : ([a, b, [[c]], ...x]: any[]) => void ->[1, 2, [["string"]], false, true] : (number | boolean | string[][])[] +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void +>[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] >1 : 1 >2 : 2 ->[["string"]] : string[][] ->["string"] : string[] +>[["string"]] : [[string]] +>["string"] : [string] >"string" : "string" >false : false >true : true a10([1, 2, 3, false, true]); // Parameter type is any[] >a10([1, 2, 3, false, true]) : void ->a10 : ([a, b, [[c]], ...x]: any[]) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >[1, 2, 3, false, true] : (number | boolean)[] >1 : 1 >2 : 2 @@ -129,7 +129,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[] a10([1, 2]); // Parameter type is any[] >a10([1, 2]) : void ->a10 : ([a, b, [[c]], ...x]: any[]) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >[1, 2] : number[] >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES6.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration3ES6.errors.txt index 67a5c1bf87f..238e155e954 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES6.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES6.errors.txt @@ -1,9 +1,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts(26,4): error TS2345: Argument of type '[number, number, [[string]], boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'. Types of property 'length' are incompatible. Type '5' is not assignable to type '3'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts(29,5): error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. + Types of property '2' are incompatible. + Type 'number' is not assignable to type '[[any]]'. +tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts(30,5): error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. + Property '2' is missing in type '[number, number]'. -==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts (1 errors) ==== +==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts (3 errors) ==== // If the parameter is a rest parameter, the parameter type is any[] // A type annotation for a rest parameter must denote an array type. @@ -37,7 +42,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6. a10([1, 2, [["string"]], false, true]); // Parameter type is any[] a10([1, 2, 3, false, true]); // Parameter type is any[] + ~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. +!!! error TS2345: Types of property '2' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type '[[any]]'. a10([1, 2]); // Parameter type is any[] + ~~~~~~ +!!! error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'. +!!! error TS2345: Property '2' is missing in type '[number, number]'. a11([1, 2]); // Parameter type is number[] // Rest parameter with generic diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES6.types b/tests/baselines/reference/destructuringParameterDeclaration3ES6.types index dc5e64d2c2c..6dce00357b5 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES6.types +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES6.types @@ -52,7 +52,7 @@ function a9([a, b, [[c]]]) { } >c : any function a10([a, b, [[c]], ...x]) { } ->a10 : ([a, b, [[c]], ...x]: Iterable) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >a : any >b : any >c : any @@ -107,19 +107,19 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]] a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10([1, 2, [["string"]], false, true]) : void ->a10 : ([a, b, [[c]], ...x]: Iterable) => void ->[1, 2, [["string"]], false, true] : (number | boolean | string[][])[] +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void +>[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] >1 : 1 >2 : 2 ->[["string"]] : string[][] ->["string"] : string[] +>[["string"]] : [[string]] +>["string"] : [string] >"string" : "string" >false : false >true : true a10([1, 2, 3, false, true]); // Parameter type is any[] >a10([1, 2, 3, false, true]) : void ->a10 : ([a, b, [[c]], ...x]: Iterable) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >[1, 2, 3, false, true] : (number | boolean)[] >1 : 1 >2 : 2 @@ -129,7 +129,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[] a10([1, 2]); // Parameter type is any[] >a10([1, 2]) : void ->a10 : ([a, b, [[c]], ...x]: Iterable) => void +>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void >[1, 2] : number[] >1 : 1 >2 : 2 diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES5.types b/tests/baselines/reference/destructuringVariableDeclaration1ES5.types index c3fbcb22d5d..58427ebd849 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES5.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES5.types @@ -113,9 +113,9 @@ var temp1 = [true, false, true] >true : true var [d3, d4] = [1, "string", ...temp1]; ->d3 : string | number | boolean ->d4 : string | number | boolean ->[1, "string", ...temp1] : (string | number | boolean)[] +>d3 : number +>d4 : string +>[1, "string", ...temp1] : [number, string, ...boolean[]] >1 : 1 >"string" : "string" >...temp1 : boolean @@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] }; >f4 : number >f5 : number > : undefined ->{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined]; } ->f : [number, number, { f3: number; f5: number; }, undefined] ->[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined] +>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined?]; } +>f : [number, number, { f3: number; f5: number; }, undefined?] +>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined?] >1 : 1 >2 : 2 >{ f3: 4, f5: 0 } : { f3: number; f5: number; } diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types b/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types index d52e7a51da8..f8d01563d50 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types @@ -113,9 +113,9 @@ var temp1 = [true, false, true] >true : true var [d3, d4] = [1, "string", ...temp1]; ->d3 : string | number | boolean ->d4 : string | number | boolean ->[1, "string", ...temp1] : (string | number | boolean)[] +>d3 : number +>d4 : string +>[1, "string", ...temp1] : [number, string, ...boolean[]] >1 : 1 >"string" : "string" >...temp1 : boolean @@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] }; >f4 : number >f5 : number > : undefined ->{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined]; } ->f : [number, number, { f3: number; f5: number; }, undefined] ->[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined] +>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined?]; } +>f : [number, number, { f3: number; f5: number; }, undefined?] +>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined?] >1 : 1 >2 : 2 >{ f3: 4, f5: 0 } : { f3: number; f5: number; } diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES6.types b/tests/baselines/reference/destructuringVariableDeclaration1ES6.types index ce4dfe0679d..8b9566c3e1c 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES6.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES6.types @@ -113,9 +113,9 @@ var temp1 = [true, false, true] >true : true var [d3, d4] = [1, "string", ...temp1]; ->d3 : string | number | boolean ->d4 : string | number | boolean ->[1, "string", ...temp1] : (string | number | boolean)[] +>d3 : number +>d4 : string +>[1, "string", ...temp1] : [number, string, ...boolean[]] >1 : 1 >"string" : "string" >...temp1 : boolean @@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] }; >f4 : number >f5 : number > : undefined ->{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined]; } ->f : [number, number, { f3: number; f5: number; }, undefined] ->[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined] +>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined?]; } +>f : [number, number, { f3: number; f5: number; }, undefined?] +>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined?] >1 : 1 >2 : 2 >{ f3: 4, f5: 0 } : { f3: number; f5: number; } diff --git a/tests/baselines/reference/destructuringVariableDeclaration2.errors.txt b/tests/baselines/reference/destructuringVariableDeclaration2.errors.txt index c831b10a467..fe8255ca556 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration2.errors.txt +++ b/tests/baselines/reference/destructuringVariableDeclaration2.errors.txt @@ -5,11 +5,9 @@ tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(4 Type '[[boolean]]' is not assignable to type '[[string]]'. Type '[boolean]' is not assignable to type '[string]'. Type 'boolean' is not assignable to type 'string'. -tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(14,16): error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c3' and no string index signature. -tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(14,24): error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c5' and no string index signature. -==== tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts (4 errors) ==== +==== tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts (2 errors) ==== // The type T associated with a destructuring variable declaration is determined as follows: // If the declaration includes a type annotation, T is that type. var {a1, a2}: { a1: number, a2: string } = { a1: true, a2: 1 } // Error @@ -33,10 +31,6 @@ tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(1 // If the binding element is a rest element, T is an array type with // an element type E, where E is the type of the numeric index signature of S. var [c1, c2, { c3: c4, c5 }, , ...c6] = [1, 2, { c3: 4, c5: 0 }]; // Error - ~~ -!!! error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c3' and no string index signature. - ~~ -!!! error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c5' and no string index signature. // When a destructuring variable declaration, binding property, or binding element specifies // an initializer expression, the type of the initializer expression is required to be assignable diff --git a/tests/baselines/reference/destructuringVariableDeclaration2.symbols b/tests/baselines/reference/destructuringVariableDeclaration2.symbols index 8f7c2bfe56a..8581ab21740 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration2.symbols +++ b/tests/baselines/reference/destructuringVariableDeclaration2.symbols @@ -35,6 +35,7 @@ var [b0 = 3, b1 = true, b2 = temp] = [3, false, { t1: false, t2: 5}]; // Error var [c1, c2, { c3: c4, c5 }, , ...c6] = [1, 2, { c3: 4, c5: 0 }]; // Error >c1 : Symbol(c1, Decl(destructuringVariableDeclaration2.ts, 13, 5)) >c2 : Symbol(c2, Decl(destructuringVariableDeclaration2.ts, 13, 8)) +>c3 : Symbol(c3, Decl(destructuringVariableDeclaration2.ts, 13, 48)) >c4 : Symbol(c4, Decl(destructuringVariableDeclaration2.ts, 13, 14)) >c5 : Symbol(c5, Decl(destructuringVariableDeclaration2.ts, 13, 22)) >c6 : Symbol(c6, Decl(destructuringVariableDeclaration2.ts, 13, 30)) diff --git a/tests/baselines/reference/destructuringVariableDeclaration2.types b/tests/baselines/reference/destructuringVariableDeclaration2.types index 666967f91bb..8af7ddb7628 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration2.types +++ b/tests/baselines/reference/destructuringVariableDeclaration2.types @@ -53,14 +53,14 @@ var [b0 = 3, b1 = true, b2 = temp] = [3, false, { t1: false, t2: 5}]; // Error // If the binding element is a rest element, T is an array type with // an element type E, where E is the type of the numeric index signature of S. var [c1, c2, { c3: c4, c5 }, , ...c6] = [1, 2, { c3: 4, c5: 0 }]; // Error ->c1 : number | { c3: number; c5: number; } ->c2 : number | { c3: number; c5: number; } +>c1 : number +>c2 : number >c3 : any ->c4 : any ->c5 : any +>c4 : number +>c5 : number > : undefined ->c6 : (number | { c3: number; c5: number; })[] ->[1, 2, { c3: 4, c5: 0 }] : (number | { c3: number; c5: number; })[] +>c6 : any[] +>[1, 2, { c3: 4, c5: 0 }] : [number, number, { c3: number; c5: number; }, undefined?] >1 : 1 >2 : 2 >{ c3: 4, c5: 0 } : { c3: number; c5: number; } diff --git a/tests/baselines/reference/destructuringWithLiteralInitializers.types b/tests/baselines/reference/destructuringWithLiteralInitializers.types index 51c432f7605..f19c1cf2b7e 100644 --- a/tests/baselines/reference/destructuringWithLiteralInitializers.types +++ b/tests/baselines/reference/destructuringWithLiteralInitializers.types @@ -235,7 +235,7 @@ g1([1, 1]); // (arg: [number, number]) => void function g2([x = 0, y = 0]) { } ->g2 : ([x, y]: [number, number]) => void +>g2 : ([x, y]: [number?, number?]) => void >x : number >0 : 0 >y : number @@ -243,7 +243,7 @@ function g2([x = 0, y = 0]) { } g2([1, 1]); >g2([1, 1]) : void ->g2 : ([x, y]: [number, number]) => void +>g2 : ([x, y]: [number?, number?]) => void >[1, 1] : [number, number] >1 : 1 >1 : 1 @@ -270,40 +270,40 @@ g3([1, 1]); // (arg?: [number, number]) => void function g4([x, y = 0] = [0]) { } ->g4 : ([x, y]?: [number, number]) => void +>g4 : ([x, y]?: [number, number?]) => void >x : number >y : number >0 : 0 ->[0] : [number, number] +>[0] : [number, number?] >0 : 0 g4(); >g4() : void ->g4 : ([x, y]?: [number, number]) => void +>g4 : ([x, y]?: [number, number?]) => void g4([1, 1]); >g4([1, 1]) : void ->g4 : ([x, y]?: [number, number]) => void +>g4 : ([x, y]?: [number, number?]) => void >[1, 1] : [number, number] >1 : 1 >1 : 1 // (arg?: [number, number]) => void function g5([x = 0, y = 0] = []) { } ->g5 : ([x, y]?: [number, number]) => void +>g5 : ([x, y]?: [number?, number?]) => void >x : number >0 : 0 >y : number >0 : 0 ->[] : [number, number] +>[] : [number?, number?] g5(); >g5() : void ->g5 : ([x, y]?: [number, number]) => void +>g5 : ([x, y]?: [number?, number?]) => void g5([1, 1]); >g5([1, 1]) : void ->g5 : ([x, y]?: [number, number]) => void +>g5 : ([x, y]?: [number?, number?]) => void >[1, 1] : [number, number] >1 : 1 >1 : 1 diff --git a/tests/baselines/reference/downlevelLetConst12.types b/tests/baselines/reference/downlevelLetConst12.types index 725e446e010..25316e67eb4 100644 --- a/tests/baselines/reference/downlevelLetConst12.types +++ b/tests/baselines/reference/downlevelLetConst12.types @@ -12,7 +12,7 @@ const bar = 1; let [baz] = []; >baz : any ->[] : [undefined] +>[] : [undefined?] let {a: baz2} = { a: 1 }; >a : any @@ -23,7 +23,7 @@ let {a: baz2} = { a: 1 }; const [baz3] = [] >baz3 : any ->[] : [undefined] +>[] : [undefined?] const {a: baz4} = { a: 1 }; >a : any diff --git a/tests/baselines/reference/downlevelLetConst16.types b/tests/baselines/reference/downlevelLetConst16.types index 5655b1f8f15..450773fd9bb 100644 --- a/tests/baselines/reference/downlevelLetConst16.types +++ b/tests/baselines/reference/downlevelLetConst16.types @@ -516,7 +516,7 @@ function foo3() { } for (let [y] = []; ;) { >y : any ->[] : [undefined] +>[] : [undefined?] use(y); >use(y) : any @@ -555,7 +555,7 @@ function foo4() { } for (const [y] = []; ;) { >y : any ->[] : [undefined] +>[] : [undefined?] use(y); >use(y) : any diff --git a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types index aa715daa30e..f21501bf481 100644 --- a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types +++ b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types @@ -40,7 +40,7 @@ function f5({e, e: {e}}, {e}, [d,e, [[e]]], ...e) { } >e : any[] function f6([f, ...f]) { } ->f6 : ([f, ...f]: any[]) => void +>f6 : ([f, ...f]: [any, ...any[]]) => void >f : any >f : any[] diff --git a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types index 1ef1232e1ba..715d0acc020 100644 --- a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types +++ b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types @@ -43,7 +43,7 @@ function f5({e, e: {e}}, {e}, [d, e, [[e]]], ...e) { } >e : any[] function f6([f, ...f]) { } ->f6 : ([f, ...f]: any[]) => void +>f6 : ([f, ...f]: [any, ...any[]]) => void >f : any >f : any[] diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index 314d5e464b7..db88d3860da 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -58,14 +58,14 @@ var p3 = ([, a]) => { }; >a : any var p4 = ([, ...a]) => { }; ->p4 : ([, ...a]: Iterable) => void ->([, ...a]) => { } : ([, ...a]: Iterable) => void +>p4 : ([, ...a]: [any?, ...any[]]) => void +>([, ...a]) => { } : ([, ...a]: [any?, ...any[]]) => void > : undefined >a : any[] var p5 = ([a = 1]) => { }; ->p5 : ([a]: [number]) => void ->([a = 1]) => { } : ([a]: [number]) => void +>p5 : ([a]: [number?]) => void +>([a = 1]) => { } : ([a]: [number?]) => void >a : number >1 : 1 diff --git a/tests/baselines/reference/for-of49.types b/tests/baselines/reference/for-of49.types index bed54d205ea..fe46157c286 100644 --- a/tests/baselines/reference/for-of49.types +++ b/tests/baselines/reference/for-of49.types @@ -13,7 +13,7 @@ var map = new Map([["", true]]); >true : true for ([k, ...[v]] of map) { ->[k, ...[v]] : (string | boolean)[] +>[k, ...[v]] : [string, ...boolean[]] >k : string >...[v] : boolean >[v] : [boolean] diff --git a/tests/baselines/reference/initializedDestructuringAssignmentTypes.types b/tests/baselines/reference/initializedDestructuringAssignmentTypes.types index 542c693c525..bb30a395cff 100644 --- a/tests/baselines/reference/initializedDestructuringAssignmentTypes.types +++ b/tests/baselines/reference/initializedDestructuringAssignmentTypes.types @@ -9,7 +9,7 @@ const [, a = ''] = ''.match('') || []; >'' : "" >match : (regexp: string | RegExp) => RegExpMatchArray >'' : "" ->[] : [undefined, ""] +>[] : [undefined?, ""?] a.toFixed() >a.toFixed() : any diff --git a/tests/baselines/reference/iterableArrayPattern13.errors.txt b/tests/baselines/reference/iterableArrayPattern13.errors.txt new file mode 100644 index 00000000000..54c064e9ffc --- /dev/null +++ b/tests/baselines/reference/iterableArrayPattern13.errors.txt @@ -0,0 +1,25 @@ +tests/cases/conformance/es6/destructuring/iterableArrayPattern13.ts(17,5): error TS2345: Argument of type 'FooIterator' is not assignable to parameter of type '[any, ...any[]]'. + Property '0' is missing in type 'FooIterator'. + + +==== tests/cases/conformance/es6/destructuring/iterableArrayPattern13.ts (1 errors) ==== + class Bar { x } + class Foo extends Bar { y } + class FooIterator { + next() { + return { + value: new Foo, + done: false + }; + } + + [Symbol.iterator]() { + return this; + } + } + + function fun([a, ...b]) { } + fun(new FooIterator); + ~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'FooIterator' is not assignable to parameter of type '[any, ...any[]]'. +!!! error TS2345: Property '0' is missing in type 'FooIterator'. \ No newline at end of file diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index b97e9551372..d73f5cf0ab8 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -41,13 +41,13 @@ class FooIterator { } function fun([a, ...b]) { } ->fun : ([a, ...b]: Iterable) => void +>fun : ([a, ...b]: [any, ...any[]]) => void >a : any >b : any[] fun(new FooIterator); >fun(new FooIterator) : void ->fun : ([a, ...b]: Iterable) => void +>fun : ([a, ...b]: [any, ...any[]]) => void >new FooIterator : FooIterator >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern24.types b/tests/baselines/reference/iterableArrayPattern24.types index ebcc055836e..5a792a2f851 100644 --- a/tests/baselines/reference/iterableArrayPattern24.types +++ b/tests/baselines/reference/iterableArrayPattern24.types @@ -5,7 +5,7 @@ var a: string, b: boolean[]; [a, ...b] = { 0: "", 1: true }; >[a, ...b] = { 0: "", 1: true } : { 0: string; 1: true; } ->[a, ...b] : (string | boolean)[] +>[a, ...b] : [string, ...boolean[]] >a : string >...b : boolean >b : boolean[] diff --git a/tests/baselines/reference/iterableArrayPattern4.types b/tests/baselines/reference/iterableArrayPattern4.types index 92d34c9a7db..ece3b235dc4 100644 --- a/tests/baselines/reference/iterableArrayPattern4.types +++ b/tests/baselines/reference/iterableArrayPattern4.types @@ -48,7 +48,7 @@ var a: Bar, b: Bar[]; [a, ...b] = new FooIterator >[a, ...b] = new FooIterator : FooIterator ->[a, ...b] : Bar[] +>[a, ...b] : [Bar, ...Bar[]] >a : Bar >...b : Bar >b : Bar[] diff --git a/tests/baselines/reference/iterableArrayPattern6.types b/tests/baselines/reference/iterableArrayPattern6.types index 6e182385a81..c465c02ea44 100644 --- a/tests/baselines/reference/iterableArrayPattern6.types +++ b/tests/baselines/reference/iterableArrayPattern6.types @@ -47,7 +47,7 @@ var a: Bar, b: string[]; [a, ...b] = new FooIterator; >[a, ...b] = new FooIterator : FooIterator ->[a, ...b] : (string | Bar)[] +>[a, ...b] : [Bar, ...string[]] >a : Bar >...b : string >b : string[] diff --git a/tests/baselines/reference/iterableArrayPattern8.types b/tests/baselines/reference/iterableArrayPattern8.types index 7d53628c82f..7614b15b054 100644 --- a/tests/baselines/reference/iterableArrayPattern8.types +++ b/tests/baselines/reference/iterableArrayPattern8.types @@ -47,7 +47,7 @@ var a: Bar, b: string; [a, ...b] = new FooIterator; >[a, ...b] = new FooIterator : FooIterator ->[a, ...b] : (string | Bar)[] +>[a, ...b] : [Bar, ...string[]] >a : Bar >...b : string >b : string diff --git a/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.types b/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.types index 6b6149be670..c0eef976c4d 100644 --- a/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.types +++ b/tests/baselines/reference/noImplicitAnyDestructuringParameterDeclaration.types @@ -7,7 +7,7 @@ function f1([a], {b}, c, d) { // error >d : any } function f2([a = undefined], {b = null}, c = undefined, d = null) { // error ->f2 : ([a]: [any], { b }: { b?: any; }, c?: any, d?: any) => void +>f2 : ([a]: [any?], { b }: { b?: any; }, c?: any, d?: any) => void >a : any >undefined : undefined >b : any diff --git a/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.types b/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.types index 01355600ff3..823af520806 100644 --- a/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.types +++ b/tests/baselines/reference/noImplicitAnyDestructuringVarDeclaration.types @@ -44,5 +44,5 @@ var [a4] = [undefined], {b4} = { b4: null }, c4 = undefined, d4 = null; // error var [a5 = undefined] = []; // error >a5 : any >undefined : undefined ->[] : [undefined] +>[] : [undefined?] diff --git a/tests/baselines/reference/objectRestAssignment.types b/tests/baselines/reference/objectRestAssignment.types index b51260736ad..c0c84b6d5e3 100644 --- a/tests/baselines/reference/objectRestAssignment.types +++ b/tests/baselines/reference/objectRestAssignment.types @@ -59,9 +59,9 @@ var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit; ({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit); >({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit) : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; } >{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; } ->{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } : { ke: string; ko: string; a: { ka: string; x: string; }[]; b: { ki: string; ku: string; z: string; }; } ->a : { ka: string; x: string; }[] ->[{ ...nested2 }, ...y] : { ka: string; x: string; }[] +>{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } : { ke: string; ko: string; a: [{ ka: string; x: string; }, ...{ ka: string; x: string; }[]]; b: { ki: string; ku: string; z: string; }; } +>a : [{ ka: string; x: string; }, ...{ ka: string; x: string; }[]] +>[{ ...nested2 }, ...y] : [{ ka: string; x: string; }, ...{ ka: string; x: string; }[]] >{ ...nested2 } : { ka: string; x: string; } >nested2 : { ka: string; x: string; } >...y : { ka: string; x: string; } diff --git a/tests/baselines/reference/recursiveLetConst.types b/tests/baselines/reference/recursiveLetConst.types index 42db1d5df24..7e4db6687aa 100644 --- a/tests/baselines/reference/recursiveLetConst.types +++ b/tests/baselines/reference/recursiveLetConst.types @@ -49,7 +49,7 @@ for (let [v] of v) { } let [x2 = x2] = [] >x2 : any >x2 : any ->[] : [any] +>[] : [any?] let z0 = () => z0; >z0 : () => any diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types index 00ecd2659ee..618fc7c7805 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types @@ -429,7 +429,7 @@ for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", " for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >robotA : [number, string, string] >i : number >0 : 0 @@ -448,7 +448,7 @@ for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { } for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >getRobot() : [number, string, string] >getRobot : () => [number, string, string] >i : number @@ -467,9 +467,9 @@ for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { >numberA3 : number } for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { ->numberA3 : string | number ->robotAInfo : (string | number)[] ->[2, "trimmer", "trimming"] : (string | number)[] +>numberA3 : number +>robotAInfo : string[] +>[2, "trimmer", "trimming"] : [number, string, string] >2 : 2 >"trimmer" : "trimmer" >"trimming" : "trimming" @@ -486,7 +486,7 @@ for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i >console.log : (msg: any) => void >console : { log(msg: any): void; } >log : (msg: any) => void ->numberA3 : string | number +>numberA3 : number } for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { >multiRobotAInfo : (string | [string, string])[] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types index f317fa2a83c..802f21b6408 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types @@ -531,7 +531,7 @@ for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edgi for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { >[numberA3, ...robotAInfo] = robotA, i = 0 : 0 >[numberA3, ...robotAInfo] = robotA : [number, string, string] ->[numberA3, ...robotAInfo] : (string | number)[] +>[numberA3, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 : number >...robotAInfo : string | number >robotAInfo : (string | number)[] @@ -555,7 +555,7 @@ for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { >[numberA3, ...robotAInfo] = getRobot(), i = 0 : 0 >[numberA3, ...robotAInfo] = getRobot() : [number, string, string] ->[numberA3, ...robotAInfo] : (string | number)[] +>[numberA3, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 : number >...robotAInfo : string | number >robotAInfo : (string | number)[] @@ -580,7 +580,7 @@ for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { >[numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 : 0 >[numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] ->[numberA3, ...robotAInfo] : (string | number)[] +>[numberA3, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 : number >...robotAInfo : string | number >robotAInfo : (string | number)[] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types index 443f22bbab8..45a063c27d4 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types @@ -534,7 +534,7 @@ for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >robotA : [number, string, string] >i : number >0 : 0 @@ -555,7 +555,7 @@ for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >getRobot() : [number, string, string] >getRobot : () => [number, string, string] >i : number @@ -574,11 +574,11 @@ for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { >numberA3 : number } for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { ->numberA3 : string | number +>numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] ->[2, "trimmer", "trimming"] : (string | number)[] +>robotAInfo : string[] +>[2, "trimmer", "trimming"] : [number, string, string] >2 : 2 >"trimmer" : "trimmer" >"trimming" : "trimming" @@ -595,5 +595,5 @@ for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < >console.log : (msg: any) => void >console : { log(msg: any): void; } >log : (msg: any) => void ->numberA3 : string | number +>numberA3 : number } diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types index 0795142c677..01ddecf52f9 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types @@ -666,7 +666,7 @@ for ([nameMA = "noName", for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { >[numberA3 = -1, ...robotAInfo] = robotA, i = 0 : 0 >[numberA3 = -1, ...robotAInfo] = robotA : [number, string, string] ->[numberA3 = -1, ...robotAInfo] : (string | number)[] +>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 = -1 : -1 >numberA3 : number >-1 : -1 @@ -693,7 +693,7 @@ for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { >[numberA3 = -1, ...robotAInfo] = getRobot(), i = 0 : 0 >[numberA3 = -1, ...robotAInfo] = getRobot() : [number, string, string] ->[numberA3 = -1, ...robotAInfo] : (string | number)[] +>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 = -1 : -1 >numberA3 : number >-1 : -1 @@ -721,7 +721,7 @@ for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { >[numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 : 0 >[numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] ->[numberA3 = -1, ...robotAInfo] : (string | number)[] +>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 = -1 : -1 >numberA3 : number >-1 : -1 diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types index 41dc32d2648..cf4f7c990bc 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types @@ -314,7 +314,7 @@ for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB for (let [numberA3, ...robotAInfo] of robots) { >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >robots : [number, string, string][] console.log(numberA3); @@ -326,7 +326,7 @@ for (let [numberA3, ...robotAInfo] of robots) { } for (let [numberA3, ...robotAInfo] of getRobots()) { >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >getRobots() : [number, string, string][] >getRobots : () => [number, string, string][] @@ -339,7 +339,7 @@ for (let [numberA3, ...robotAInfo] of getRobots()) { } for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >[robotA, robotB] : [number, string, string][] >robotA : [number, string, string] >robotB : [number, string, string] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types index abc08ee63d4..9c308a058ae 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types @@ -357,7 +357,7 @@ for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { } for ([numberA3, ...robotAInfo] of robots) { ->[numberA3, ...robotAInfo] : (string | number)[] +>[numberA3, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 : number >...robotAInfo : string | number >robotAInfo : (string | number)[] @@ -371,7 +371,7 @@ for ([numberA3, ...robotAInfo] of robots) { >numberA3 : number } for ([numberA3, ...robotAInfo] of getRobots()) { ->[numberA3, ...robotAInfo] : (string | number)[] +>[numberA3, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 : number >...robotAInfo : string | number >robotAInfo : (string | number)[] @@ -386,7 +386,7 @@ for ([numberA3, ...robotAInfo] of getRobots()) { >numberA3 : number } for ([numberA3, ...robotAInfo] of [robotA, robotB]) { ->[numberA3, ...robotAInfo] : (string | number)[] +>[numberA3, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 : number >...robotAInfo : string | number >robotAInfo : (string | number)[] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types index e82c981033e..16814754511 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types @@ -409,7 +409,7 @@ for (let [numberA3 = -1, ...robotAInfo] of robots) { >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >robots : [number, string, string][] console.log(numberA3); @@ -423,7 +423,7 @@ for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >getRobots() : [number, string, string][] >getRobots : () => [number, string, string][] @@ -438,7 +438,7 @@ for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >[robotA, robotB] : [number, string, string][] >robotA : [number, string, string] >robotB : [number, string, string] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types index dad997dac4f..ed262d6a3d8 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types @@ -489,7 +489,7 @@ for ([nameMA = "noName", [ } for ([numberA3 = -1, ...robotAInfo] of robots) { ->[numberA3 = -1, ...robotAInfo] : (string | number)[] +>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 = -1 : -1 >numberA3 : number >-1 : -1 @@ -506,7 +506,7 @@ for ([numberA3 = -1, ...robotAInfo] of robots) { >numberA3 : number } for ([numberA3 = -1, ...robotAInfo] of getRobots()) { ->[numberA3 = -1, ...robotAInfo] : (string | number)[] +>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 = -1 : -1 >numberA3 : number >-1 : -1 @@ -524,7 +524,7 @@ for ([numberA3 = -1, ...robotAInfo] of getRobots()) { >numberA3 : number } for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { ->[numberA3 = -1, ...robotAInfo] : (string | number)[] +>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberA3 = -1 : -1 >numberA3 : number >-1 : -1 diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types index d7aed64a232..eb9a5dce264 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types @@ -62,7 +62,7 @@ function foo3([numberA2, nameA2, skillA2]: Robot) { function foo4([numberA3, ...robotAInfo]: Robot) { >foo4 : ([numberA3, ...robotAInfo]: [number, string, string]) => void >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >Robot : [number, string, string] console.log(robotAInfo); @@ -70,7 +70,7 @@ function foo4([numberA3, ...robotAInfo]: Robot) { >console.log : (msg: any) => void >console : { log(msg: any): void; } >log : (msg: any) => void ->robotAInfo : (string | number)[] +>robotAInfo : string[] } foo1(robotA); diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types index a9d1013c136..ef4ee4f81bb 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types @@ -86,7 +86,7 @@ function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >Robot : [number, string, string] >[-1, "name", "skill"] : [number, string, string] >-1 : -1 @@ -99,7 +99,7 @@ function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { >console.log : (msg: any) => void >console : { log(msg: any): void; } >log : (msg: any) => void ->robotAInfo : (string | number)[] +>robotAInfo : string[] } foo1(robotA); diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types index 46bdfec4b06..f240f7fd40b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types @@ -59,7 +59,7 @@ let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; let [numberA3, ...robotAInfo] = robotA; >numberA3 : number ->robotAInfo : (string | number)[] +>robotAInfo : string[] >robotA : [number, string, string] if (nameA == nameA2) { diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types index bdd2059b863..3e5018a76c1 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types @@ -222,7 +222,7 @@ let multiRobotAInfo: (string | [string, string])[]; [numberB, ...robotAInfo] = robotB; >[numberB, ...robotAInfo] = robotB : [number, string, string] ->[numberB, ...robotAInfo] : (string | number)[] +>[numberB, ...robotAInfo] : [number, ...(string | number)[]] >numberB : number >...robotAInfo : string | number >robotAInfo : (string | number)[] @@ -230,7 +230,7 @@ let multiRobotAInfo: (string | [string, string])[]; [numberB, ...robotAInfo] = getRobotB(); >[numberB, ...robotAInfo] = getRobotB() : [number, string, string] ->[numberB, ...robotAInfo] : (string | number)[] +>[numberB, ...robotAInfo] : [number, ...(string | number)[]] >numberB : number >...robotAInfo : string | number >robotAInfo : (string | number)[] @@ -239,7 +239,7 @@ let multiRobotAInfo: (string | [string, string])[]; [numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] ->[numberB, ...robotAInfo] : (string | number)[] +>[numberB, ...robotAInfo] : [number, ...(string | number)[]] >numberB : number >...robotAInfo : string | number >robotAInfo : (string | number)[] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types index fae55a6cabf..4a166d03569 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types @@ -73,7 +73,7 @@ let [numberA3 = -1, ...robotAInfo] = robotA; >numberA3 : number >-1 : -1 >1 : 1 ->robotAInfo : (string | number)[] +>robotAInfo : string[] >robotA : [number, string, string] if (nameA == nameA2) { diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types index 35c458f4310..e0c39abebc6 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types @@ -238,11 +238,11 @@ let multiRobotAInfo: (string | string[])[]; [nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB : [string, string[]] ->[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]] +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string?, string?]] >nameMB = "helloNoName" : "helloNoName" >nameMB : string >"helloNoName" : "helloNoName" ->[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string] +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string?, string?] >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string] >primarySkillB = "noSkill" : "noSkill" >primarySkillB : string @@ -250,16 +250,16 @@ let multiRobotAInfo: (string | string[])[]; >secondarySkillB = "noSkill" : "noSkill" >secondarySkillB : string >"noSkill" : "noSkill" ->[] : [string, string] +>[] : [string?, string?] >multiRobotB : [string, string[]] [nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB() : [string, string[]] ->[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]] +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string?, string?]] >nameMB = "helloNoName" : "helloNoName" >nameMB : string >"helloNoName" : "helloNoName" ->[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string] +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string?, string?] >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string] >primarySkillB = "noSkill" : "noSkill" >primarySkillB : string @@ -267,17 +267,17 @@ let multiRobotAInfo: (string | string[])[]; >secondarySkillB = "noSkill" : "noSkill" >secondarySkillB : string >"noSkill" : "noSkill" ->[] : [string, string] +>[] : [string?, string?] >getMultiRobotB() : [string, string[]] >getMultiRobotB : () => [string, string[]] [nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] ->[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]] +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string?, string?]] >nameMB = "helloNoName" : "helloNoName" >nameMB : string >"helloNoName" : "helloNoName" ->[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string] +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string?, string?] >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string] >primarySkillB = "noSkill" : "noSkill" >primarySkillB : string @@ -285,7 +285,7 @@ let multiRobotAInfo: (string | string[])[]; >secondarySkillB = "noSkill" : "noSkill" >secondarySkillB : string >"noSkill" : "noSkill" ->[] : [string, string] +>[] : [string?, string?] ["trimmer", ["trimming", "edging"]]; >["trimmer", ["trimming", "edging"]] : [string, [string, string]] @@ -296,7 +296,7 @@ let multiRobotAInfo: (string | string[])[]; [numberB = -1, ...robotAInfo] = robotB; >[numberB = -1, ...robotAInfo] = robotB : [number, string, string] ->[numberB = -1, ...robotAInfo] : (string | number)[] +>[numberB = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberB = -1 : -1 >numberB : number >-1 : -1 @@ -307,7 +307,7 @@ let multiRobotAInfo: (string | string[])[]; [numberB = -1, ...robotAInfo] = getRobotB(); >[numberB = -1, ...robotAInfo] = getRobotB() : [number, string, string] ->[numberB = -1, ...robotAInfo] : (string | number)[] +>[numberB = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberB = -1 : -1 >numberB : number >-1 : -1 @@ -319,7 +319,7 @@ let multiRobotAInfo: (string | string[])[]; [numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] ->[numberB = -1, ...robotAInfo] : (string | number)[] +>[numberB = -1, ...robotAInfo] : [number, ...(string | number)[]] >numberB = -1 : -1 >numberB : number >-1 : -1