From 62c8ae10f2ea35b472bda413f06e70d829195f7c Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Fri, 11 Feb 2022 16:58:21 -0800 Subject: [PATCH 1/2] Apply contextual type to empty array literals --- src/compiler/checker.ts | 11 +++- .../reference/arrayAssignmentTest1.types | 16 +++--- .../reference/arrayAssignmentTest2.types | 16 +++--- .../reference/arrayAssignmentTest4.types | 2 +- tests/baselines/reference/arrayConcat2.types | 2 +- tests/baselines/reference/arrayFlatMap.types | 8 +-- tests/baselines/reference/arrayFrom.types | 4 +- tests/baselines/reference/arrayLiteral.types | 2 +- .../arrayLiteralInNonVarArgParameter.types | 2 +- .../baselines/reference/badArraySyntax.types | 2 +- .../checkInfiniteExpansionTermination2.types | 2 +- .../checkSpecialPropertyAssignments.types | 2 +- .../circularInferredTypeOfVariable.types | 6 +-- ...classExpressionWithStaticProperties3.types | 2 +- ...ssExpressionWithStaticPropertiesES63.types | 2 +- .../commaOperatorLeftSideUnused.types | 2 +- ...onRegularTypeFetchingSpeedReasonable.types | 2 +- ...contextualOverloadListFromArrayUnion.types | 2 +- .../reference/contextualTyping.types | 52 +++++++++---------- ...TypingArrayDestructuringWithDefaults.types | 2 +- .../reference/controlFlowLoopAnalysis.types | 2 +- .../reference/controlFlowOptionalChain.types | 2 +- ...ePropertyIsRelatableToTargetProperty.types | 2 +- .../reference/declFileGenericType2.types | 4 +- .../destructuringParameterProperties1.types | 2 +- .../reference/destructuringTuple.types | 2 +- .../directDependenceBetweenTypeAliases.types | 2 +- .../reference/duplicateLocalVariable1.types | 2 +- .../reference/elementAccessChain.3.types | 8 +-- ...ableDeclarationBindingPatterns01_ES5.types | 2 +- ...arationBindingPatterns01_ES5iterable.types | 2 +- ...ableDeclarationBindingPatterns01_ES6.types | 2 +- .../enumLiteralUnionNotWidened.types | 2 +- .../reference/exportDefaultWithJSDoc1.types | 2 +- .../reference/exportDefaultWithJSDoc2.types | 2 +- .../reference/exportStarNotElided.types | 2 +- .../reference/extendGenericArray.types | 2 +- .../reference/extendGenericArray2.types | 2 +- ...fatarrowfunctionsOptionalArgsErrors1.types | 2 +- .../forStatementsMultipleValidDecl.types | 4 +- .../functionSubtypingOfVarArgs2.types | 2 +- .../functionTypeArgumentArrayAssignment.types | 2 +- ...functionTypeArgumentAssignmentCompat.types | 4 +- tests/baselines/reference/genericArray0.types | 2 +- .../genericCallWithArrayLiteralArgs.types | 4 +- ...icClassWithStaticsUsingTypeArguments.types | 2 +- .../reference/genericFunctionInference1.types | 2 +- .../genericTypeArgumentInference1.types | 2 +- .../heterogeneousArrayAndOverloads.types | 2 +- .../heterogeneousArrayLiterals.types | 2 +- .../reference/implicitAnyWidenToAny.types | 2 +- ...inferFromGenericFunctionReturnTypes3.types | 4 +- .../baselines/reference/inferenceLimit.types | 2 +- .../inferentiallyTypingAnEmptyArray.types | 2 +- .../reference/interfaceAssignmentCompat.types | 4 +- ...jsDeclarationsJSDocRedirectedLookups.types | 2 +- ...onsReferenceToClassInstanceCrossFile.types | 4 +- ...tionsTypeReassignmentFromDeclaration.types | 2 +- .../reference/jsFileClassPropertyType2.types | 4 +- .../baselines/reference/lambdaArgCrash.types | 6 +-- .../mappedTypeOverlappingStringEnumKeys.types | 2 +- .../memberVariableDeclarations1.types | 6 +-- ...ExplicitTypeParameterAndArgumentType.types | 2 +- .../moduleClassArrayCodeGenTest.types | 4 +- tests/baselines/reference/multiline.types | 2 +- .../baselines/reference/neverInference.types | 4 +- .../reference/noAsConstNameLookup.types | 2 +- .../reference/noImplicitAnyForIn.types | 2 +- .../nullishCoalescingOperator12.types | 8 +-- .../reference/optionalParamArgsTest.types | 4 +- ...overloadResolutionOverNonCTObjectLit.types | 2 +- .../reference/overloadingOnConstants2.types | 12 ++--- .../reference/parserRealSource11.types | 10 ++-- .../reference/parserRealSource12.types | 2 +- .../reference/parserRealSource14.types | 2 +- .../reference/parserRealSource4.types | 2 +- .../reference/parserRealSource5.types | 2 +- tests/baselines/reference/parserharness.types | 50 +++++++++--------- ...DiscriminatedUnionMemberHasGoodError.types | 2 +- .../reference/propertyAccessChain.3.types | 8 +-- .../propertyAssignmentUseParentType3.types | 2 +- .../reactTagNameComponentWithPropsNoOOM.types | 2 +- ...reactTagNameComponentWithPropsNoOOM2.types | 2 +- .../reference/readonlyArraysAndTuples2.types | 2 +- .../reference/recursiveClassBaseType.types | 2 +- .../recursiveExcessPropertyChecks.types | 2 +- .../reference/recursiveTypeReferences1.types | 8 +-- .../restElementWithNullInitializer.types | 2 +- .../baselines/reference/sourceMapSample.types | 2 +- .../sourceMapValidationClasses.types | 2 +- ...entArrayBindingPatternDefaultValues3.types | 18 +++---- .../staticFieldWithInterfaceContext.types | 2 +- .../reference/strictFunctionTypes1.types | 2 +- ...TemplateStringsTypeArgumentInference.types | 2 +- ...plateStringsTypeArgumentInferenceES6.types | 2 +- ...mplateStringsWithOverloadResolution2.types | 4 +- ...teStringsWithOverloadResolution2_ES6.types | 4 +- .../trailingCommasInBindingPatterns.types | 8 +-- .../reference/tupleTypeInference2.types | 12 ++--- .../reference/typeArgumentInference.types | 2 +- ...ArgumentInferenceConstructSignatures.types | 2 +- ...typeArgumentInferenceWithConstraints.types | 2 +- .../reference/typeGuardsTypeParameters.types | 2 +- .../typeInferenceFBoundedTypeParams.types | 2 +- ...peParameterAsTypeParameterConstraint.types | 2 +- ...eParameterAsTypeParameterConstraint2.types | 2 +- .../typePredicateStructuralMatch.types | 12 ++--- .../undefinedInferentialTyping.types | 2 +- .../baselines/reference/underscoreTest1.types | 2 +- .../reference/unionOfClassCalls.types | 6 +-- .../reference/unspecializedConstraints.types | 4 +- .../validMultipleVariableDeclarations.types | 4 +- tests/baselines/reference/variance.types | 2 +- 113 files changed, 254 insertions(+), 245 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4140f49f9a6f4..94bfc55afb9e5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -16933,7 +16933,10 @@ namespace ts { case SyntaxKind.ObjectLiteralExpression: return some((node as ObjectLiteralExpression).properties, isContextSensitive); case SyntaxKind.ArrayLiteralExpression: - return some((node as ArrayLiteralExpression).elements, isContextSensitive); + if ((node as ArrayLiteralExpression).elements.length > 0) { + return some((node as ArrayLiteralExpression).elements, isContextSensitive); + } + return true; case SyntaxKind.ConditionalExpression: return isContextSensitive((node as ConditionalExpression).whenTrue) || isContextSensitive((node as ConditionalExpression).whenFalse); @@ -26996,6 +26999,12 @@ namespace ts { const elementTypes: Type[] = []; const elementFlags: ElementFlags[] = []; const contextualType = getApparentTypeOfContextualType(node); + if (elementCount === 0 && contextualType && !checkMode) { + const elementType = getElementTypeOfArrayType(contextualType); + if (elementType) { + return createArrayType(elementType); + } + } const inDestructuringPattern = isAssignmentTarget(node); const inConstContext = isConstContext(node); let hasOmittedExpression = false; diff --git a/tests/baselines/reference/arrayAssignmentTest1.types b/tests/baselines/reference/arrayAssignmentTest1.types index 76810a6eb33e0..c4d8f780f199a 100644 --- a/tests/baselines/reference/arrayAssignmentTest1.types +++ b/tests/baselines/reference/arrayAssignmentTest1.types @@ -81,35 +81,35 @@ var f1 = function () { return new C1();} var arr_any: any[] = []; >arr_any : any[] ->[] : undefined[] +>[] : any[] var arr_i1: I1[] = []; >arr_i1 : I1[] ->[] : undefined[] +>[] : I1[] var arr_c1: C1[] = []; >arr_c1 : C1[] ->[] : undefined[] +>[] : C1[] var arr_c2: C2[] = []; >arr_c2 : C2[] ->[] : undefined[] +>[] : C2[] var arr_i1_2: I1[] = []; >arr_i1_2 : I1[] ->[] : undefined[] +>[] : I1[] var arr_c1_2: C1[] = []; >arr_c1_2 : C1[] ->[] : undefined[] +>[] : C1[] var arr_c2_2: C2[] = []; >arr_c2_2 : C2[] ->[] : undefined[] +>[] : C2[] var arr_c3: C3[] = []; >arr_c3 : C3[] ->[] : undefined[] +>[] : C3[] var i1_error: I1 = []; // should be an error - is >i1_error : I1 diff --git a/tests/baselines/reference/arrayAssignmentTest2.types b/tests/baselines/reference/arrayAssignmentTest2.types index 100336ae58bb7..9b8ddcd47d800 100644 --- a/tests/baselines/reference/arrayAssignmentTest2.types +++ b/tests/baselines/reference/arrayAssignmentTest2.types @@ -81,35 +81,35 @@ var f1 = function () { return new C1();} var arr_any: any[] = []; >arr_any : any[] ->[] : undefined[] +>[] : any[] var arr_i1: I1[] = []; >arr_i1 : I1[] ->[] : undefined[] +>[] : I1[] var arr_c1: C1[] = []; >arr_c1 : C1[] ->[] : undefined[] +>[] : C1[] var arr_c2: C2[] = []; >arr_c2 : C2[] ->[] : undefined[] +>[] : C2[] var arr_i1_2: I1[] = []; >arr_i1_2 : I1[] ->[] : undefined[] +>[] : I1[] var arr_c1_2: C1[] = []; >arr_c1_2 : C1[] ->[] : undefined[] +>[] : C1[] var arr_c2_2: C2[] = []; >arr_c2_2 : C2[] ->[] : undefined[] +>[] : C2[] var arr_c3: C3[] = []; >arr_c3 : C3[] ->[] : undefined[] +>[] : C3[] // "clean up error" occurs at this point arr_c3 = arr_c2_2; // should be an error - is diff --git a/tests/baselines/reference/arrayAssignmentTest4.types b/tests/baselines/reference/arrayAssignmentTest4.types index 3c3579d2e38aa..1e29ef854a8d8 100644 --- a/tests/baselines/reference/arrayAssignmentTest4.types +++ b/tests/baselines/reference/arrayAssignmentTest4.types @@ -32,7 +32,7 @@ var o1 = {one : 1}; var arr_any: any[] = []; >arr_any : any[] ->[] : undefined[] +>[] : any[] arr_any = function () { return null;} // should be an error - is >arr_any = function () { return null;} : () => any diff --git a/tests/baselines/reference/arrayConcat2.types b/tests/baselines/reference/arrayConcat2.types index f1ca2a5f10977..1af44d4740639 100644 --- a/tests/baselines/reference/arrayConcat2.types +++ b/tests/baselines/reference/arrayConcat2.types @@ -1,7 +1,7 @@ === tests/cases/compiler/arrayConcat2.ts === var a: string[] = []; >a : string[] ->[] : undefined[] +>[] : string[] a.concat("hello", 'world'); >a.concat("hello", 'world') : string[] diff --git a/tests/baselines/reference/arrayFlatMap.types b/tests/baselines/reference/arrayFlatMap.types index 0e36141f64b64..eb6cc91ae8cd5 100644 --- a/tests/baselines/reference/arrayFlatMap.types +++ b/tests/baselines/reference/arrayFlatMap.types @@ -1,11 +1,11 @@ === tests/cases/compiler/arrayFlatMap.ts === const array: number[] = []; >array : number[] ->[] : undefined[] +>[] : number[] const readonlyArray: ReadonlyArray = []; >readonlyArray : readonly number[] ->[] : undefined[] +>[] : number[] array.flatMap((): ReadonlyArray => []); // ok >array.flatMap((): ReadonlyArray => []) : number[] @@ -13,7 +13,7 @@ array.flatMap((): ReadonlyArray => []); // ok >array : number[] >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] >(): ReadonlyArray => [] : () => ReadonlyArray ->[] : undefined[] +>[] : number[] readonlyArray.flatMap((): ReadonlyArray => []); // ok >readonlyArray.flatMap((): ReadonlyArray => []) : number[] @@ -21,5 +21,5 @@ readonlyArray.flatMap((): ReadonlyArray => []); // ok >readonlyArray : readonly number[] >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] >(): ReadonlyArray => [] : () => ReadonlyArray ->[] : undefined[] +>[] : number[] diff --git a/tests/baselines/reference/arrayFrom.types b/tests/baselines/reference/arrayFrom.types index 8c755a6366f8a..7273fbbb5918b 100644 --- a/tests/baselines/reference/arrayFrom.types +++ b/tests/baselines/reference/arrayFrom.types @@ -14,11 +14,11 @@ interface B { const inputA: A[] = []; >inputA : A[] ->[] : undefined[] +>[] : A[] const inputB: B[] = []; >inputB : B[] ->[] : undefined[] +>[] : B[] const inputALike: ArrayLike = { length: 0 }; >inputALike : ArrayLike diff --git a/tests/baselines/reference/arrayLiteral.types b/tests/baselines/reference/arrayLiteral.types index c36cc93c68e38..04d172b3e661e 100644 --- a/tests/baselines/reference/arrayLiteral.types +++ b/tests/baselines/reference/arrayLiteral.types @@ -29,7 +29,7 @@ var y = new Array(); var x2: number[] = []; >x2 : number[] ->[] : undefined[] +>[] : number[] var x2: number[] = new Array(1); >x2 : number[] diff --git a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types index 4b46e0bf29f00..7721ab351d2a7 100644 --- a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types +++ b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types @@ -7,7 +7,7 @@ function panic(val: string[], ...opt: string[]) { } panic([], 'one', 'two'); >panic([], 'one', 'two') : void >panic : (val: string[], ...opt: string[]) => void ->[] : undefined[] +>[] : string[] >'one' : "one" >'two' : "two" diff --git a/tests/baselines/reference/badArraySyntax.types b/tests/baselines/reference/badArraySyntax.types index 053b4af944863..599c1b4a24cc0 100644 --- a/tests/baselines/reference/badArraySyntax.types +++ b/tests/baselines/reference/badArraySyntax.types @@ -9,7 +9,7 @@ class Z { var a1: Z[] = []; >a1 : Z[] ->[] : undefined[] +>[] : Z[] var a2 = new Z[]; >a2 : any diff --git a/tests/baselines/reference/checkInfiniteExpansionTermination2.types b/tests/baselines/reference/checkInfiniteExpansionTermination2.types index 61f3410198982..e751201473541 100644 --- a/tests/baselines/reference/checkInfiniteExpansionTermination2.types +++ b/tests/baselines/reference/checkInfiniteExpansionTermination2.types @@ -20,7 +20,7 @@ function fn() { var values: ISubject[] = []; >values : ISubject[] ->[] : undefined[] +>[] : ISubject[] // Hang when using , but not combineLatest(values); diff --git a/tests/baselines/reference/checkSpecialPropertyAssignments.types b/tests/baselines/reference/checkSpecialPropertyAssignments.types index 14043231b0294..6ba1ed2dbf35d 100644 --- a/tests/baselines/reference/checkSpecialPropertyAssignments.types +++ b/tests/baselines/reference/checkSpecialPropertyAssignments.types @@ -16,7 +16,7 @@ A.B = class { /** @type {string[]} */ var x = []; >x : string[] ->[] : undefined[] +>[] : string[] /** @type {number[]} */ var y; diff --git a/tests/baselines/reference/circularInferredTypeOfVariable.types b/tests/baselines/reference/circularInferredTypeOfVariable.types index c0ddb43fd8bd9..0b99adcc6efa1 100644 --- a/tests/baselines/reference/circularInferredTypeOfVariable.types +++ b/tests/baselines/reference/circularInferredTypeOfVariable.types @@ -10,7 +10,7 @@ >p : string[] return []; ->[] : undefined[] +>[] : string[] } function bar(p: string[]): string[] { @@ -18,12 +18,12 @@ >p : string[] return []; ->[] : undefined[] +>[] : string[] } let a1: string[] | undefined = []; >a1 : string[] ->[] : undefined[] +>[] : string[] while (true) { >true : true diff --git a/tests/baselines/reference/classExpressionWithStaticProperties3.types b/tests/baselines/reference/classExpressionWithStaticProperties3.types index 67823ea83403a..3fac18d0e6788 100644 --- a/tests/baselines/reference/classExpressionWithStaticProperties3.types +++ b/tests/baselines/reference/classExpressionWithStaticProperties3.types @@ -5,7 +5,7 @@ declare var console: any; const arr: {y(): number}[] = []; >arr : { y(): number; }[] >y : () => number ->[] : undefined[] +>[] : { y(): number; }[] for (let i = 0; i < 3; i++) { >i : number diff --git a/tests/baselines/reference/classExpressionWithStaticPropertiesES63.types b/tests/baselines/reference/classExpressionWithStaticPropertiesES63.types index 5a948f54402c9..af50b8adab9ab 100644 --- a/tests/baselines/reference/classExpressionWithStaticPropertiesES63.types +++ b/tests/baselines/reference/classExpressionWithStaticPropertiesES63.types @@ -5,7 +5,7 @@ declare var console: any; const arr: {y(): number}[] = []; >arr : { y(): number; }[] >y : () => number ->[] : undefined[] +>[] : { y(): number; }[] for (let i = 0; i < 3; i++) { >i : number diff --git a/tests/baselines/reference/commaOperatorLeftSideUnused.types b/tests/baselines/reference/commaOperatorLeftSideUnused.types index 585ac1ca7e0c2..9b33aef0e7e4c 100644 --- a/tests/baselines/reference/commaOperatorLeftSideUnused.types +++ b/tests/baselines/reference/commaOperatorLeftSideUnused.types @@ -10,7 +10,7 @@ function fn() { let arr: any[] = []; >arr : any[] ->[] : undefined[] +>[] : any[] switch(arr.length) { >arr.length : number diff --git a/tests/baselines/reference/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types b/tests/baselines/reference/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types index a4709500c7789..298de0d4938d9 100644 --- a/tests/baselines/reference/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types +++ b/tests/baselines/reference/conditionalTypeDiscriminatingLargeUnionRegularTypeFetchingSpeedReasonable.types @@ -16019,6 +16019,6 @@ export function makeThing( children: ChildrenOf>[] = [], >children : ChildrenOf>[] ->[] : undefined[] +>[] : ChildrenOf>[] ) { } diff --git a/tests/baselines/reference/contextualOverloadListFromArrayUnion.types b/tests/baselines/reference/contextualOverloadListFromArrayUnion.types index f42e54a0cec7d..a56ccc41bb1dc 100644 --- a/tests/baselines/reference/contextualOverloadListFromArrayUnion.types +++ b/tests/baselines/reference/contextualOverloadListFromArrayUnion.types @@ -83,7 +83,7 @@ export function series(tasks: Task[], callback: Callback): void { let results: T[] = [] >results : T[] ->[] : never[] +>[] : T[] function next() { >next : () => void diff --git a/tests/baselines/reference/contextualTyping.types b/tests/baselines/reference/contextualTyping.types index 9d0bc119879db..52d3dc1de1142 100644 --- a/tests/baselines/reference/contextualTyping.types +++ b/tests/baselines/reference/contextualTyping.types @@ -75,7 +75,7 @@ var c3t2 = ({ }) var c3t3: number[] = []; >c3t3 : number[] ->[] : undefined[] +>[] : number[] var c3t4: () => IFoo = function() { return ({}) }; >c3t4 : () => IFoo @@ -128,9 +128,9 @@ var c3t8: (n: number, s: string) => number = function(n) { return n; }; var c3t9: number[][] = [[],[]]; >c3t9 : number[][] ->[[],[]] : undefined[][] ->[] : undefined[] ->[] : undefined[] +>[[],[]] : number[][] +>[] : number[] +>[] : number[] var c3t10: IFoo[] = [({}),({})]; >c3t10 : IFoo[] @@ -179,12 +179,12 @@ var c3t13 = ({ var c3t14 = ({ >c3t14 : IFoo >({ a: []}) : IFoo ->({ a: []}) : { a: undefined[]; } ->{ a: []} : { a: undefined[]; } +>({ a: []}) : { a: number[]; } +>{ a: []} : { a: number[]; } a: [] ->a : undefined[] ->[] : undefined[] +>a : number[] +>[] : number[] }) @@ -413,11 +413,11 @@ objc8.t2 = ({ }); objc8.t3 = []; ->objc8.t3 = [] : undefined[] +>objc8.t3 = [] : number[] >objc8.t3 : number[] >objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } >t3 : number[] ->[] : undefined[] +>[] : number[] objc8.t4 = function() { return ({}) }; >objc8.t4 = function() { return ({}) } : () => IFoo @@ -471,13 +471,13 @@ objc8.t8 = function(n) { return n; }; >n : number objc8.t9 = [[],[]]; ->objc8.t9 = [[],[]] : undefined[][] +>objc8.t9 = [[],[]] : number[][] >objc8.t9 : number[][] >objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } >t9 : number[][] ->[[],[]] : undefined[][] ->[] : undefined[] ->[] : undefined[] +>[[],[]] : number[][] +>[] : number[] +>[] : number[] objc8.t10 = [({}),({})]; >objc8.t10 = [({}),({})] : IFoo[] @@ -539,12 +539,12 @@ objc8.t14 = ({ >objc8 : { t1: (s: string) => string; t2: IFoo; t3: number[]; t4: () => IFoo; t5: (n: number) => IFoo; t6: (n: number, s: string) => IFoo; t7: (n: number, s: string) => number; t8: (n: number, s: string) => number; t9: number[][]; t10: IFoo[]; t11: ((n: number, s: string) => string)[]; t12: IBar; t13: IFoo; t14: IFoo; } >t14 : IFoo >({ a: []}) : IFoo ->({ a: []}) : { a: undefined[]; } ->{ a: []} : { a: undefined[]; } +>({ a: []}) : { a: number[]; } +>{ a: []} : { a: number[]; } a: [] ->a : undefined[] ->[] : undefined[] +>a : number[] +>[] : number[] }) // CONTEXT: Function call @@ -617,7 +617,7 @@ var c12t2 = ({ var c12t3 = []; >c12t3 : number[] > [] : number[] ->[] : undefined[] +>[] : number[] var c12t4 = <() => IFoo> function() { return ({}) }; >c12t4 : () => IFoo @@ -675,9 +675,9 @@ var c12t8 = <(n: number, s: string) => number> function(n) { return n; }; var c12t9 = [[],[]]; >c12t9 : number[][] > [[],[]] : number[][] ->[[],[]] : undefined[][] ->[] : undefined[] ->[] : undefined[] +>[[],[]] : number[][] +>[] : number[] +>[] : number[] var c12t10 = [({}),({})]; >c12t10 : IFoo[] @@ -729,12 +729,12 @@ var c12t13 = ({ var c12t14 = ({ >c12t14 : IFoo > ({ a: []}) : IFoo ->({ a: []}) : { a: undefined[]; } ->{ a: []} : { a: undefined[]; } +>({ a: []}) : { a: number[]; } +>{ a: []} : { a: number[]; } a: [] ->a : undefined[] ->[] : undefined[] +>a : number[] +>[] : number[] }) diff --git a/tests/baselines/reference/contextualTypingArrayDestructuringWithDefaults.types b/tests/baselines/reference/contextualTypingArrayDestructuringWithDefaults.types index 30e35d683dbd3..9729d414541bb 100644 --- a/tests/baselines/reference/contextualTypingArrayDestructuringWithDefaults.types +++ b/tests/baselines/reference/contextualTypingArrayDestructuringWithDefaults.types @@ -24,7 +24,7 @@ let [ c_ = {a: "a"} ]: I[] = []; >{a: "a"} : { a: "a"; } >a : "a" >"a" : "a" ->[] : undefined[] +>[] : I[] // not a great example, expect an error function foo() { diff --git a/tests/baselines/reference/controlFlowLoopAnalysis.types b/tests/baselines/reference/controlFlowLoopAnalysis.types index f3aa3bd2bd0da..2ff07d7dcb549 100644 --- a/tests/baselines/reference/controlFlowLoopAnalysis.types +++ b/tests/baselines/reference/controlFlowLoopAnalysis.types @@ -89,7 +89,7 @@ function mapUntilCant( ): b[] { let result: b[] = []; >result : b[] ->[] : never[] +>[] : b[] for (let index = 0, length = values.length; index < length; index++) { >index : number diff --git a/tests/baselines/reference/controlFlowOptionalChain.types b/tests/baselines/reference/controlFlowOptionalChain.types index 4e335fca6d287..a44ec9bfe024f 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.types +++ b/tests/baselines/reference/controlFlowOptionalChain.types @@ -1955,7 +1955,7 @@ function extractCoordinates(f: Feature): number[] { >'test' : "test" return []; ->[] : never[] +>[] : number[] } return f.geometry.coordinates; >f.geometry.coordinates : number[] diff --git a/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types b/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types index 9237416d0dee7..dd1682cf8bb42 100644 --- a/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types +++ b/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types @@ -30,5 +30,5 @@ var a: D = foo("hi", []); >foo("hi", []) : (x: "hi", items: string[]) => typeof foo >foo : (x: "hi", items: string[]) => typeof foo >"hi" : "hi" ->[] : undefined[] +>[] : string[] diff --git a/tests/baselines/reference/declFileGenericType2.types b/tests/baselines/reference/declFileGenericType2.types index e56824bb98fec..d83627fcd3d6b 100644 --- a/tests/baselines/reference/declFileGenericType2.types +++ b/tests/baselines/reference/declFileGenericType2.types @@ -95,11 +95,11 @@ module templa.dom.mvc.composite { >super : typeof AbstractElementController this._controllers = []; ->this._controllers = [] : undefined[] +>this._controllers = [] : templa.mvc.IController[] >this._controllers : templa.mvc.IController[] >this : this >_controllers : templa.mvc.IController[] ->[] : undefined[] +>[] : templa.mvc.IController[] } } } diff --git a/tests/baselines/reference/destructuringParameterProperties1.types b/tests/baselines/reference/destructuringParameterProperties1.types index 38174445dcac2..87742f0f9f21d 100644 --- a/tests/baselines/reference/destructuringParameterProperties1.types +++ b/tests/baselines/reference/destructuringParameterProperties1.types @@ -42,7 +42,7 @@ var c1 = new C1([]); >c1 : C1 >new C1([]) : C1 >C1 : typeof C1 ->[] : undefined[] +>[] : string[] c1 = new C1(["larry", "{curly}", "moe"]); >c1 = new C1(["larry", "{curly}", "moe"]) : C1 diff --git a/tests/baselines/reference/destructuringTuple.types b/tests/baselines/reference/destructuringTuple.types index 0227d82572ddc..36d326e4f0019 100644 --- a/tests/baselines/reference/destructuringTuple.types +++ b/tests/baselines/reference/destructuringTuple.types @@ -58,5 +58,5 @@ const [oops2] = [1, 2, 3].reduce((acc: number[], e) => acc.concat(e), []); >acc : number[] >concat : { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; } >e : number ->[] : never[] +>[] : number[] diff --git a/tests/baselines/reference/directDependenceBetweenTypeAliases.types b/tests/baselines/reference/directDependenceBetweenTypeAliases.types index e1d6784b327f8..788d92de8b994 100644 --- a/tests/baselines/reference/directDependenceBetweenTypeAliases.types +++ b/tests/baselines/reference/directDependenceBetweenTypeAliases.types @@ -40,7 +40,7 @@ type T4 = [number, T4] // A type query directly depends on the type of the referenced entity. var x: T5[] = [] >x : any ->[] : undefined[] +>[] : any[] type T5 = typeof x >T5 : any diff --git a/tests/baselines/reference/duplicateLocalVariable1.types b/tests/baselines/reference/duplicateLocalVariable1.types index 8fe3534944f5e..53e39334996b9 100644 --- a/tests/baselines/reference/duplicateLocalVariable1.types +++ b/tests/baselines/reference/duplicateLocalVariable1.types @@ -26,7 +26,7 @@ export class TestRunner { private tests: TestCase[] = []; >tests : TestCase[] ->[] : undefined[] +>[] : TestCase[] static arrayCompare(arg1: any[], arg2: any[]): boolean { >arrayCompare : (arg1: any[], arg2: any[]) => boolean diff --git a/tests/baselines/reference/elementAccessChain.3.types b/tests/baselines/reference/elementAccessChain.3.types index b1f1e431a614b..99eca5eb6238e 100644 --- a/tests/baselines/reference/elementAccessChain.3.types +++ b/tests/baselines/reference/elementAccessChain.3.types @@ -169,16 +169,16 @@ for (obj?.a["b"] of []); >1 : 1 [...obj?.["a"]] = []; ->[...obj?.["a"]] = [] : never[] +>[...obj?.["a"]] = [] : any[] >[...obj?.["a"]] : any[] >...obj?.["a"] : any >obj?.["a"] : any >obj : any >"a" : "a" ->[] : never[] +>[] : any[] [...obj?.a["b"]] = []; ->[...obj?.a["b"]] = [] : never[] +>[...obj?.a["b"]] = [] : any[] >[...obj?.a["b"]] : any[] >...obj?.a["b"] : any >obj?.a["b"] : any @@ -186,5 +186,5 @@ for (obj?.a["b"] of []); >obj : any >a : any >"b" : "b" ->[] : never[] +>[] : any[] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types index 7db78f298293d..368e47fc42190 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types @@ -86,7 +86,7 @@ const ns: number[][] = []; >ns : number[][] ->[] : undefined[] +>[] : number[][] for (var {} of ns) { >ns : number[][] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types index d5559047aba72..22b5bf06a2ca0 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types @@ -86,7 +86,7 @@ const ns: number[][] = []; >ns : number[][] ->[] : undefined[] +>[] : number[][] for (var {} of ns) { >ns : number[][] diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types index 535562296a3c5..87f72d148fdc8 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types @@ -86,7 +86,7 @@ const ns: number[][] = []; >ns : number[][] ->[] : undefined[] +>[] : number[][] for (var {} of ns) { >ns : number[][] diff --git a/tests/baselines/reference/enumLiteralUnionNotWidened.types b/tests/baselines/reference/enumLiteralUnionNotWidened.types index 87443fbd54906..9e0de3e6371ba 100644 --- a/tests/baselines/reference/enumLiteralUnionNotWidened.types +++ b/tests/baselines/reference/enumLiteralUnionNotWidened.types @@ -26,7 +26,7 @@ class List { private readonly items: T[] = []; >items : T[] ->[] : undefined[] +>[] : T[] } function asList(arg: T): List { return new List(); } diff --git a/tests/baselines/reference/exportDefaultWithJSDoc1.types b/tests/baselines/reference/exportDefaultWithJSDoc1.types index 64668e2b3cc6a..0b371bf2fb005 100644 --- a/tests/baselines/reference/exportDefaultWithJSDoc1.types +++ b/tests/baselines/reference/exportDefaultWithJSDoc1.types @@ -6,7 +6,7 @@ /** @type {NumberLike[]} */export default ([ ]); >([ ]) : NumberLike[] ->[ ] : undefined[] +>[ ] : NumberLike[] === tests/cases/compiler/b.ts === import A from './a' diff --git a/tests/baselines/reference/exportDefaultWithJSDoc2.types b/tests/baselines/reference/exportDefaultWithJSDoc2.types index 52a1a103810de..dea14b629fd1f 100644 --- a/tests/baselines/reference/exportDefaultWithJSDoc2.types +++ b/tests/baselines/reference/exportDefaultWithJSDoc2.types @@ -6,7 +6,7 @@ export default /** @type {NumberLike[]} */([ ]); >([ ]) : NumberLike[] ->[ ] : undefined[] +>[ ] : NumberLike[] === tests/cases/compiler/b.ts === import A from './a' diff --git a/tests/baselines/reference/exportStarNotElided.types b/tests/baselines/reference/exportStarNotElided.types index 36ed247b215ff..89a0d41da40dc 100644 --- a/tests/baselines/reference/exportStarNotElided.types +++ b/tests/baselines/reference/exportStarNotElided.types @@ -1,7 +1,7 @@ === tests/cases/compiler/register.ts === const r: any[] = []; >r : any[] ->[] : undefined[] +>[] : any[] export function register(data: any) { >register : (data: any) => void diff --git a/tests/baselines/reference/extendGenericArray.types b/tests/baselines/reference/extendGenericArray.types index 310fbfe4a7d33..79947cf8d589d 100644 --- a/tests/baselines/reference/extendGenericArray.types +++ b/tests/baselines/reference/extendGenericArray.types @@ -6,7 +6,7 @@ interface Array { var arr: string[] = []; >arr : string[] ->[] : undefined[] +>[] : string[] var x: number = arr.foo(); >x : number diff --git a/tests/baselines/reference/extendGenericArray2.types b/tests/baselines/reference/extendGenericArray2.types index 6d57179ea5578..4b64f708f6d43 100644 --- a/tests/baselines/reference/extendGenericArray2.types +++ b/tests/baselines/reference/extendGenericArray2.types @@ -8,7 +8,7 @@ interface Array extends IFoo { } var arr: string[] = []; >arr : string[] ->[] : undefined[] +>[] : string[] var y: number = arr.x; >y : number diff --git a/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types b/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types index 0eb27f0484e94..6e1e3c40b8d38 100644 --- a/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types +++ b/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types @@ -18,7 +18,7 @@ (...arg:number [] = []) => 104; >(...arg:number [] = []) => 104 : (...arg?: number[]) => number >arg : number[] ->[] : undefined[] +>[] : number[] >104 : 104 // Uninitialized parameter makes the initialized one required diff --git a/tests/baselines/reference/forStatementsMultipleValidDecl.types b/tests/baselines/reference/forStatementsMultipleValidDecl.types index d8cba0a8b2ef3..f952780c7a247 100644 --- a/tests/baselines/reference/forStatementsMultipleValidDecl.types +++ b/tests/baselines/reference/forStatementsMultipleValidDecl.types @@ -120,11 +120,11 @@ for (var a = ['a', 'b']; ;) { } for (var a = []; ;) { } >a : string[] >[] : string[] ->[] : undefined[] +>[] : string[] for (var a: string[] = []; ;) { } >a : string[] ->[] : undefined[] +>[] : string[] for (var a = new Array(); ;) { } >a : string[] diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs2.types b/tests/baselines/reference/functionSubtypingOfVarArgs2.types index 3aa5b7a7a0025..5313cc8400a29 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs2.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs2.types @@ -5,7 +5,7 @@ class EventBase { private _listeners: { (...args: any[]): void; }[] = []; >_listeners : ((...args: any[]) => void)[] >args : any[] ->[] : undefined[] +>[] : ((...args: any[]) => void)[] add(listener: (...args: any[]) => void): void { >add : (listener: (...args: any[]) => void) => void diff --git a/tests/baselines/reference/functionTypeArgumentArrayAssignment.types b/tests/baselines/reference/functionTypeArgumentArrayAssignment.types index b3eafd7194a89..a8110db72760e 100644 --- a/tests/baselines/reference/functionTypeArgumentArrayAssignment.types +++ b/tests/baselines/reference/functionTypeArgumentArrayAssignment.types @@ -15,7 +15,7 @@ module test { var ys: U[] = []; >ys : U[] ->[] : undefined[] +>[] : U[] } } diff --git a/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types b/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types index 00f645e4560c8..98635528cbb01 100644 --- a/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types +++ b/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types @@ -11,8 +11,8 @@ var g : { () : S[]; } = () => []; ->() => [] : () => any[] ->[] : undefined[] +>() => [] : () => S[] +>[] : S[] f = g; >f = g : () => S[] diff --git a/tests/baselines/reference/genericArray0.types b/tests/baselines/reference/genericArray0.types index d9c847af96d5e..0045334df58ab 100644 --- a/tests/baselines/reference/genericArray0.types +++ b/tests/baselines/reference/genericArray0.types @@ -13,6 +13,6 @@ function map() { var ys: U[] = []; >ys : U[] ->[] : undefined[] +>[] : U[] } diff --git a/tests/baselines/reference/genericCallWithArrayLiteralArgs.types b/tests/baselines/reference/genericCallWithArrayLiteralArgs.types index a7b81335b466f..f1c36c2342409 100644 --- a/tests/baselines/reference/genericCallWithArrayLiteralArgs.types +++ b/tests/baselines/reference/genericCallWithArrayLiteralArgs.types @@ -35,13 +35,13 @@ var r2 = foo([]); // any[] >r2 : any[] >foo([]) : any[] >foo : (t: T) => T ->[] : undefined[] +>[] : any[] var r3 = foo([]); // number[] >r3 : number[] >foo([]) : number[] >foo : (t: T) => T ->[] : undefined[] +>[] : number[] var r4 = foo([1, '']); // {}[] >r4 : (string | number)[] diff --git a/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types b/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types index 5a417fd478058..f1c133ec54d23 100644 --- a/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types +++ b/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types @@ -13,7 +13,7 @@ class Foo { static c: T[] = []; >c : T[] ->[] : undefined[] +>[] : T[] static d = false || ((x: T) => x || undefined)(null) >d : any diff --git a/tests/baselines/reference/genericFunctionInference1.types b/tests/baselines/reference/genericFunctionInference1.types index 9ce0b1b2b24bb..1c4ce35bc53df 100644 --- a/tests/baselines/reference/genericFunctionInference1.types +++ b/tests/baselines/reference/genericFunctionInference1.types @@ -640,7 +640,7 @@ export interface Data { var data: Data[] = []; >data : Data[] ->[] : never[] +>[] : Data[] declare function toKeys(values: a[], toKey: (value: a) => string): string[]; >toKeys : (values: a[], toKey: (value: a) => string) => string[] diff --git a/tests/baselines/reference/genericTypeArgumentInference1.types b/tests/baselines/reference/genericTypeArgumentInference1.types index dd3ab70adac30..44d20dbe6658e 100644 --- a/tests/baselines/reference/genericTypeArgumentInference1.types +++ b/tests/baselines/reference/genericTypeArgumentInference1.types @@ -55,7 +55,7 @@ var r3 = _.all([], _.identity); >_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T >_ : Underscore.Static >all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T ->[] : undefined[] +>[] : any[] >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T diff --git a/tests/baselines/reference/heterogeneousArrayAndOverloads.types b/tests/baselines/reference/heterogeneousArrayAndOverloads.types index beb59c9eab8a0..b9eb697a99571 100644 --- a/tests/baselines/reference/heterogeneousArrayAndOverloads.types +++ b/tests/baselines/reference/heterogeneousArrayAndOverloads.types @@ -41,7 +41,7 @@ class arrTest { >this.test : { (arg1: number[]): any; (arg1: string[]): any; } >this : this >test : { (arg1: number[]): any; (arg1: string[]): any; } ->[] : undefined[] +>[] : number[] this.test([1, 2, "hi", 5]); // Error >this.test([1, 2, "hi", 5]) : any diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.types b/tests/baselines/reference/heterogeneousArrayLiterals.types index b9a556de82a70..ab766a1c532f9 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.types +++ b/tests/baselines/reference/heterogeneousArrayLiterals.types @@ -250,7 +250,7 @@ module WithContextualType { var c: Derived[] = []; >c : Derived[] ->[] : undefined[] +>[] : Derived[] var d: { (): Base }[] = [() => derived, () => derived2]; >d : (() => Base)[] diff --git a/tests/baselines/reference/implicitAnyWidenToAny.types b/tests/baselines/reference/implicitAnyWidenToAny.types index f8aa582469f5a..b00a2b2c28a51 100644 --- a/tests/baselines/reference/implicitAnyWidenToAny.types +++ b/tests/baselines/reference/implicitAnyWidenToAny.types @@ -59,7 +59,7 @@ var array1 = ["Bob",2]; var array2: any[] = []; >array2 : any[] ->[] : undefined[] +>[] : any[] var array3: any[] = [null, undefined]; >array3 : any[] diff --git a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types index bd2164e99e1d6..81392f2de83e8 100644 --- a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types +++ b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types @@ -102,7 +102,7 @@ interface FolderContentItem { let a: FolderContentItem[] = []; >a : FolderContentItem[] ->[] : never[] +>[] : FolderContentItem[] a = [1, 2, 3, 4, 5].map(v => ({ type: 'folder' })); >a = [1, 2, 3, 4, 5].map(v => ({ type: 'folder' })) : { type: "folder"; }[] @@ -193,7 +193,7 @@ function bug(): Diagnostic[] { let values: any[] = []; >values : any[] ->[] : never[] +>[] : any[] return values.map((value) => { >values.map((value) => { return { severity: DiagnosticSeverity.Error, message: 'message' } }) : { severity: 1; message: string; }[] diff --git a/tests/baselines/reference/inferenceLimit.types b/tests/baselines/reference/inferenceLimit.types index aa49bdd73b77a..302cfd39e1c37 100644 --- a/tests/baselines/reference/inferenceLimit.types +++ b/tests/baselines/reference/inferenceLimit.types @@ -26,7 +26,7 @@ export class BrokenClass { let result: Array = []; >result : MyModule.MyModel[] >MyModule : any ->[] : undefined[] +>[] : MyModule.MyModel[] let populateItems = (order) => { >populateItems : (order: any) => Promise diff --git a/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types b/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types index 293f4946e91d0..0aecfdf320521 100644 --- a/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types +++ b/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types @@ -22,6 +22,6 @@ foo([]).bar; >foo([]).bar : any >foo([]) : any >foo : (arr: T[]) => T ->[] : undefined[] +>[] : any[] >bar : any diff --git a/tests/baselines/reference/interfaceAssignmentCompat.types b/tests/baselines/reference/interfaceAssignmentCompat.types index b1135f1d27ae3..d41220297991b 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.types +++ b/tests/baselines/reference/interfaceAssignmentCompat.types @@ -60,7 +60,7 @@ module M { var x:IEye[]= []; >x : IEye[] ->[] : undefined[] +>[] : IEye[] var result=""; >result : string @@ -150,7 +150,7 @@ module M { var eeks:IFrenchEye[] = []; >eeks : IFrenchEye[] ->[] : undefined[] +>[] : IFrenchEye[] for (var j=z.length=1;j>=0;j--) { >j : number diff --git a/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types b/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types index f86bca410ef66..9d20ce0ef75c0 100644 --- a/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types +++ b/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types @@ -38,7 +38,7 @@ /** @type {array} */const i = []; >i : any[] ->[] : never[] +>[] : any[] /** @type {promise} */const j = Promise.resolve(0); >j : Promise diff --git a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types index 5b90275da04c5..5de70f69b25c6 100644 --- a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types +++ b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types @@ -64,11 +64,11 @@ class Render { * @type {Rectangle[]} */ this.objects = []; ->this.objects = [] : undefined[] +>this.objects = [] : Rectangle[] >this.objects : Rectangle[] >this : this >objects : Rectangle[] ->[] : undefined[] +>[] : Rectangle[] } /** * Adds a rectangle diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types index fc514b7a0bc58..e5c12f4d6ccc1 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types @@ -13,7 +13,7 @@ export = items; /** @type {typeof import("/some-mod")} */ const items = []; >items : Item[] ->[] : undefined[] +>[] : Item[] module.exports = items; >module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } diff --git a/tests/baselines/reference/jsFileClassPropertyType2.types b/tests/baselines/reference/jsFileClassPropertyType2.types index be99637574161..65a9423ff08bc 100644 --- a/tests/baselines/reference/jsFileClassPropertyType2.types +++ b/tests/baselines/reference/jsFileClassPropertyType2.types @@ -5,11 +5,11 @@ class C { constructor() { /** @type {number[]}*/ this.p = []; ->this.p = [] : undefined[] +>this.p = [] : number[] >this.p : number[] >this : this >p : number[] ->[] : undefined[] +>[] : number[] } } diff --git a/tests/baselines/reference/lambdaArgCrash.types b/tests/baselines/reference/lambdaArgCrash.types index 534d2838a3999..b439051b0c851 100644 --- a/tests/baselines/reference/lambdaArgCrash.types +++ b/tests/baselines/reference/lambdaArgCrash.types @@ -4,18 +4,18 @@ class Event { private _listeners: any[] = []; >_listeners : any[] ->[] : undefined[] +>[] : any[] constructor () { // TODO: remove this._listeners = []; ->this._listeners = [] : undefined[] +>this._listeners = [] : any[] >this._listeners : any[] >this : this >_listeners : any[] ->[] : undefined[] +>[] : any[] } diff --git a/tests/baselines/reference/mappedTypeOverlappingStringEnumKeys.types b/tests/baselines/reference/mappedTypeOverlappingStringEnumKeys.types index ae58d3f12ddc3..15d5129babed9 100644 --- a/tests/baselines/reference/mappedTypeOverlappingStringEnumKeys.types +++ b/tests/baselines/reference/mappedTypeOverlappingStringEnumKeys.types @@ -85,7 +85,7 @@ const catMap: CatMap = { dog: [] as never[] >dog : never[] >[] as never[] : never[] ->[] : undefined[] +>[] : never[] }; diff --git a/tests/baselines/reference/memberVariableDeclarations1.types b/tests/baselines/reference/memberVariableDeclarations1.types index 6d768f9705576..7785fbbe5c70a 100644 --- a/tests/baselines/reference/memberVariableDeclarations1.types +++ b/tests/baselines/reference/memberVariableDeclarations1.types @@ -20,7 +20,7 @@ class Employee { public reports: Employee[] = []; >reports : Employee[] ->[] : undefined[] +>[] : Employee[] } class Employee2 { @@ -57,11 +57,11 @@ class Employee2 { >null : null this.reports = []; ->this.reports = [] : undefined[] +>this.reports = [] : Employee[] >this.reports : Employee[] >this : this >reports : Employee[] ->[] : undefined[] +>[] : Employee[] } } diff --git a/tests/baselines/reference/mismatchedExplicitTypeParameterAndArgumentType.types b/tests/baselines/reference/mismatchedExplicitTypeParameterAndArgumentType.types index 6adf391870603..a29cd8fc77f2d 100644 --- a/tests/baselines/reference/mismatchedExplicitTypeParameterAndArgumentType.types +++ b/tests/baselines/reference/mismatchedExplicitTypeParameterAndArgumentType.types @@ -7,7 +7,7 @@ function map(xs: T[], f: (x: T) => U) { var ys: U[] = []; >ys : U[] ->[] : undefined[] +>[] : U[] xs.forEach(x => ys.push(f(x))); >xs.forEach(x => ys.push(f(x))) : void diff --git a/tests/baselines/reference/moduleClassArrayCodeGenTest.types b/tests/baselines/reference/moduleClassArrayCodeGenTest.types index 4a3c09853a343..9a5bd89a0064b 100644 --- a/tests/baselines/reference/moduleClassArrayCodeGenTest.types +++ b/tests/baselines/reference/moduleClassArrayCodeGenTest.types @@ -14,10 +14,10 @@ module M var t: M.A[] = []; >t : M.A[] >M : any ->[] : undefined[] +>[] : M.A[] var t2: M.B[] = []; >t2 : M.B[] >M : any ->[] : undefined[] +>[] : M.B[] diff --git a/tests/baselines/reference/multiline.types b/tests/baselines/reference/multiline.types index b83f82571c232..68f590552c0b2 100644 --- a/tests/baselines/reference/multiline.types +++ b/tests/baselines/reference/multiline.types @@ -1,7 +1,7 @@ === tests/cases/conformance/directives/a.ts === export const texts: string[] = []; >texts : string[] ->[] : undefined[] +>[] : string[] /** @ts-ignore */ diff --git a/tests/baselines/reference/neverInference.types b/tests/baselines/reference/neverInference.types index d6b0da3c3d6e9..e4869c7c0666c 100644 --- a/tests/baselines/reference/neverInference.types +++ b/tests/baselines/reference/neverInference.types @@ -54,7 +54,7 @@ const list: LinkedList = mkList([], compareNumbers); >list : LinkedList >mkList([], compareNumbers) : LinkedList >mkList : (items: T[], comparator: Comparator) => LinkedList ->[] : never[] +>[] : number[] >compareNumbers : (x: number, y: number) => number // Repro from #19858 @@ -76,7 +76,7 @@ f2(Array.from([0]), [], (a1, a2) => a1 - a2); >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } >[0] : number[] >0 : 0 ->[] : never[] +>[] : number[] >(a1, a2) => a1 - a2 : (a1: number, a2: number) => number >a1 : number >a2 : number diff --git a/tests/baselines/reference/noAsConstNameLookup.types b/tests/baselines/reference/noAsConstNameLookup.types index 42a06c8530fb2..7e9b0979e5316 100644 --- a/tests/baselines/reference/noAsConstNameLookup.types +++ b/tests/baselines/reference/noAsConstNameLookup.types @@ -14,7 +14,7 @@ export class FeatureRunner { private readonly cleaners: Cleaner[] = [] >cleaners : Cleaner[] ->[] : never[] +>[] : Cleaner[] async runFeature(): Promise { >runFeature : () => Promise diff --git a/tests/baselines/reference/noImplicitAnyForIn.types b/tests/baselines/reference/noImplicitAnyForIn.types index bd8cb1c8c200c..0a9e025e0aa62 100644 --- a/tests/baselines/reference/noImplicitAnyForIn.types +++ b/tests/baselines/reference/noImplicitAnyForIn.types @@ -84,7 +84,7 @@ var n = [[]] || []; >[[]] || [] : undefined[][] >[[]] : undefined[][] >[] : undefined[] ->[] : undefined[] +>[] : undefined[][] for (n[idx++] in m); >n[idx++] : any[] diff --git a/tests/baselines/reference/nullishCoalescingOperator12.types b/tests/baselines/reference/nullishCoalescingOperator12.types index d0b52b7afbfa2..93d7728afddcd 100644 --- a/tests/baselines/reference/nullishCoalescingOperator12.types +++ b/tests/baselines/reference/nullishCoalescingOperator12.types @@ -2,9 +2,9 @@ const obj: { arr: any[] } = { arr: [] }; >obj : { arr: any[]; } >arr : any[] ->{ arr: [] } : { arr: never[]; } ->arr : never[] ->[] : never[] +>{ arr: [] } : { arr: any[]; } +>arr : any[] +>[] : any[] for (const i of obj?.arr ?? []) { } >i : any @@ -12,5 +12,5 @@ for (const i of obj?.arr ?? []) { } >obj?.arr : any[] >obj : { arr: any[]; } >arr : any[] ->[] : never[] +>[] : any[] diff --git a/tests/baselines/reference/optionalParamArgsTest.types b/tests/baselines/reference/optionalParamArgsTest.types index c80ef5f165c44..af8502046c16d 100644 --- a/tests/baselines/reference/optionalParamArgsTest.types +++ b/tests/baselines/reference/optionalParamArgsTest.types @@ -489,9 +489,9 @@ function fnOpt1(id: number, children: number[] = [], expectedPath: number[] = [] >fnOpt1 : (id: number, children?: number[], expectedPath?: number[], isRoot?: boolean) => void >id : number >children : number[] ->[] : undefined[] +>[] : number[] >expectedPath : number[] ->[] : undefined[] +>[] : number[] >isRoot : boolean function fnOpt2(id: number, children?: number[], expectedPath?: number[], isRoot?: boolean): void {} diff --git a/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types b/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types index 96065c676e213..9f8370510e17c 100644 --- a/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types +++ b/tests/baselines/reference/overloadResolutionOverNonCTObjectLit.types @@ -29,7 +29,7 @@ module Bugs { var tokens:IToken[]= []; >tokens : IToken[] ->[] : undefined[] +>[] : IToken[] tokens.push({ startIndex: 1, type: '', bracket: 3 }); >tokens.push({ startIndex: 1, type: '', bracket: 3 }) : number diff --git a/tests/baselines/reference/overloadingOnConstants2.types b/tests/baselines/reference/overloadingOnConstants2.types index 4c2dfe0204562..a6262dbd08df1 100644 --- a/tests/baselines/reference/overloadingOnConstants2.types +++ b/tests/baselines/reference/overloadingOnConstants2.types @@ -40,21 +40,21 @@ var a: D = foo("hi", []); // D >foo("hi", []) : D >foo : { (x: "hi", items: string[]): D; (x: "bye", items: string[]): E; } >"hi" : "hi" ->[] : undefined[] +>[] : string[] var b: E = foo("bye", []); // E >b : E >foo("bye", []) : E >foo : { (x: "hi", items: string[]): D; (x: "bye", items: string[]): E; } >"bye" : "bye" ->[] : undefined[] +>[] : string[] var c = foo("um", []); // error >c : D & E >foo("um", []) : D & E >foo : { (x: "hi", items: string[]): D; (x: "bye", items: string[]): E; } >"um" : "um" ->[] : undefined[] +>[] : string[] //function bar(x: "hi", items: string[]): D; @@ -82,19 +82,19 @@ var d: D = bar("hi", []); // D >bar("hi", []) : C >bar : { (x: "bye", items: string[]): E; (x: string, items: string[]): C; } >"hi" : "hi" ->[] : undefined[] +>[] : string[] var e: E = bar("bye", []); // E >e : E >bar("bye", []) : E >bar : { (x: "bye", items: string[]): E; (x: string, items: string[]): C; } >"bye" : "bye" ->[] : undefined[] +>[] : string[] var f: C = bar("um", []); // C >f : C >bar("um", []) : C >bar : { (x: "bye", items: string[]): E; (x: string, items: string[]): C; } >"um" : "um" ->[] : undefined[] +>[] : string[] diff --git a/tests/baselines/reference/parserRealSource11.types b/tests/baselines/reference/parserRealSource11.types index be7f8b2f6015c..c928d5bae6b7c 100644 --- a/tests/baselines/reference/parserRealSource11.types +++ b/tests/baselines/reference/parserRealSource11.types @@ -4356,7 +4356,7 @@ module TypeScript { public freeVariables: Symbol[] = []; >freeVariables : Symbol[] ->[] : undefined[] +>[] : Symbol[] public unitIndex = -1; >unitIndex : number @@ -4377,7 +4377,7 @@ module TypeScript { public innerStaticFuncs: FuncDecl[] = []; >innerStaticFuncs : FuncDecl[] ->[] : undefined[] +>[] : FuncDecl[] public isTargetTypedAsMethod = false; >isTargetTypedAsMethod : boolean @@ -4401,7 +4401,7 @@ module TypeScript { public returnStatementsWithExpressions: ReturnStatement[] = []; >returnStatementsWithExpressions : ReturnStatement[] ->[] : undefined[] +>[] : ReturnStatement[] public scopeType: Type = null; // Type of the FuncDecl, before target typing >scopeType : Type @@ -5048,7 +5048,7 @@ module TypeScript { public referencedFiles: IFileReference[] = []; >referencedFiles : IFileReference[] ->[] : undefined[] +>[] : IFileReference[] public requiresGlobal = false; >requiresGlobal : boolean @@ -5437,7 +5437,7 @@ module TypeScript { public amdDependencies: string[] = []; >amdDependencies : string[] ->[] : undefined[] +>[] : string[] public vars: ASTList; >vars : ASTList diff --git a/tests/baselines/reference/parserRealSource12.types b/tests/baselines/reference/parserRealSource12.types index 0f7b67d91217d..f4b1a0259fbc9 100644 --- a/tests/baselines/reference/parserRealSource12.types +++ b/tests/baselines/reference/parserRealSource12.types @@ -215,7 +215,7 @@ module TypeScript { private childrenWalkers: IAstWalkChildren[] = []; >childrenWalkers : IAstWalkChildren[] ->[] : undefined[] +>[] : IAstWalkChildren[] constructor () { this.initChildrenWalkers(); diff --git a/tests/baselines/reference/parserRealSource14.types b/tests/baselines/reference/parserRealSource14.types index 6bff1f2cd6f5f..da217a9a86634 100644 --- a/tests/baselines/reference/parserRealSource14.types +++ b/tests/baselines/reference/parserRealSource14.types @@ -71,7 +71,7 @@ module TypeScript { public asts: TypeScript.AST[] = []; >asts : TypeScript.AST[] >TypeScript : any ->[] : undefined[] +>[] : TypeScript.AST[] public top: number = -1; >top : number diff --git a/tests/baselines/reference/parserRealSource4.types b/tests/baselines/reference/parserRealSource4.types index f46c6835aaad6..79dfa3bcc5dfa 100644 --- a/tests/baselines/reference/parserRealSource4.types +++ b/tests/baselines/reference/parserRealSource4.types @@ -115,7 +115,7 @@ module TypeScript { var result: string[] = []; >result : string[] ->[] : undefined[] +>[] : string[] for (var k in this.table) { >k : string diff --git a/tests/baselines/reference/parserRealSource5.types b/tests/baselines/reference/parserRealSource5.types index fcce9a438cb38..5fcb13ca919c5 100644 --- a/tests/baselines/reference/parserRealSource5.types +++ b/tests/baselines/reference/parserRealSource5.types @@ -21,7 +21,7 @@ module TypeScript { public indentStrings: string[] = []; >indentStrings : string[] ->[] : undefined[] +>[] : string[] public indentAmt = 0; >indentAmt : number diff --git a/tests/baselines/reference/parserharness.types b/tests/baselines/reference/parserharness.types index 498e9bf7ea7ce..ef3b00b9fe9f1 100644 --- a/tests/baselines/reference/parserharness.types +++ b/tests/baselines/reference/parserharness.types @@ -236,7 +236,7 @@ module Harness { export var bugIds: string[] = []; >bugIds : string[] ->[] : undefined[] +>[] : string[] export var throwAssertError = (error: Error) => { >throwAssertError : (error: Error) => never @@ -967,7 +967,7 @@ module Harness { // Logger-related functions var loggers: ILogger[] = []; >loggers : ILogger[] ->[] : undefined[] +>[] : ILogger[] export function registerLogger(logger: ILogger) { >registerLogger : (logger: ILogger) => void @@ -1038,7 +1038,7 @@ module Harness { // The current stack of Runnable objects static currentStack: Runnable[] = []; >currentStack : Runnable[] ->[] : undefined[] +>[] : Runnable[] // The error, if any, that occurred when running 'block' public error: Error = null; @@ -1053,12 +1053,12 @@ module Harness { // A list of bugs impacting this object public bugs: string[] = []; >bugs : string[] ->[] : undefined[] +>[] : string[] // A list of all our child Runnables public children: Runnable[] = []; >children : Runnable[] ->[] : undefined[] +>[] : Runnable[] public addChild(child: Runnable): void { >addChild : (child: Runnable) => void @@ -1205,7 +1205,7 @@ module Harness { static errorHandlerStack: { (e: Error): void; }[] = []; >errorHandlerStack : ((e: Error) => void)[] >e : Error ->[] : undefined[] +>[] : ((e: Error) => void)[] static pushGlobalErrorHandler(done: IDone) { >pushGlobalErrorHandler : (done: IDone) => void @@ -1973,7 +1973,7 @@ module Harness { public data: number[] = []; >data : number[] ->[] : undefined[] +>[] : number[] public add(value: number) { >add : (value: number) => void @@ -2255,7 +2255,7 @@ module Harness { export var benchmarks: { new (): Benchmark; }[] = []; >benchmarks : (new () => Benchmark)[] ->[] : undefined[] +>[] : (new () => Benchmark)[] var timeFunction: ( >timeFunction : (benchmark: Benchmark, description?: string, name?: string, f?: (bench?: { (): void;}) => void) => void @@ -2550,7 +2550,7 @@ module Harness { public lines: string[] = []; >lines : string[] ->[] : undefined[] +>[] : string[] public currentLine = ""; >currentLine : string @@ -2626,11 +2626,11 @@ module Harness { >reset : () => void this.lines = []; ->this.lines = [] : undefined[] +>this.lines = [] : string[] >this.lines : string[] >this : this >lines : string[] ->[] : undefined[] +>[] : string[] this.currentLine = ""; >this.currentLine = "" : "" @@ -2733,7 +2733,7 @@ module Harness { >result : { filename: string; file: WriterAggregator; }[] >filename : string >file : WriterAggregator ->[] : undefined[] +>[] : { filename: string; file: WriterAggregator; }[] for (var p in this.fileCollection) { >p : string @@ -3751,7 +3751,7 @@ module Harness { var matchingIdentifiers: Type[] = []; >matchingIdentifiers : Type[] ->[] : undefined[] +>[] : Type[] if (!usePull) { >!usePull : boolean @@ -4796,11 +4796,11 @@ module Harness { >"\n" : "\n" this.errors = []; ->this.errors = [] : undefined[] +>this.errors = [] : CompilerError[] >this.errors : CompilerError[] >this : this >errors : CompilerError[] ->[] : undefined[] +>[] : CompilerError[] for (var i = 0; i < errorLines.length; i++) { >i : number @@ -5544,7 +5544,7 @@ module Harness { var scripts: TypeScript.Script[] = []; >scripts : TypeScript.Script[] >TypeScript : any ->[] : undefined[] +>[] : TypeScript.Script[] reset(); >reset() : void @@ -5892,7 +5892,7 @@ module Harness { // List of all the subfiles we've parsed out var files: TestUnitData[] = []; >files : TestUnitData[] ->[] : undefined[] +>[] : TestUnitData[] var lines = splitContentByNewlines(code); >lines : string[] @@ -5916,7 +5916,7 @@ module Harness { var refs: TypeScript.IFileReference[] = []; >refs : TypeScript.IFileReference[] >TypeScript : any ->[] : undefined[] +>[] : TypeScript.IFileReference[] for (var i = 0; i < lines.length; i++) { >i : number @@ -6129,9 +6129,9 @@ module Harness { >2 : 2 refs = []; ->refs = [] : undefined[] +>refs = [] : TypeScript.IFileReference[] >refs : TypeScript.IFileReference[] ->[] : undefined[] +>[] : TypeScript.IFileReference[] } else { // First metadata marker in the file @@ -6241,7 +6241,7 @@ module Harness { >length : number >editRange : TypeScript.ScriptEditRange >TypeScript : any ->[] : undefined[] +>[] : { length: number; editRange: TypeScript.ScriptEditRange; }[] constructor(public name: string, public content: string, public isResident: boolean, public maxScriptVersions: number) { >name : string @@ -6263,11 +6263,11 @@ module Harness { >isResident : boolean this.editRanges = []; ->this.editRanges = [] : undefined[] +>this.editRanges = [] : { length: number; editRange: TypeScript.ScriptEditRange; }[] >this.editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] >this : this >editRanges : { length: number; editRange: TypeScript.ScriptEditRange; }[] ->[] : undefined[] +>[] : { length: number; editRange: TypeScript.ScriptEditRange; }[] this.content = content; >this.content = content : string @@ -6580,7 +6580,7 @@ module Harness { public scripts: ScriptInfo[] = []; >scripts : ScriptInfo[] ->[] : undefined[] +>[] : ScriptInfo[] public maxScriptVersions = 100; >maxScriptVersions : number @@ -7339,7 +7339,7 @@ module Harness { var result: Services.TextEdit[] = []; >result : Services.TextEdit[] >Services : any ->[] : undefined[] +>[] : Services.TextEdit[] function mapEdits(edits: Services.TextEdit[]): { edit: Services.TextEdit; index: number; }[] { >mapEdits : (edits: Services.TextEdit[]) => { edit: Services.TextEdit; index: number;}[] diff --git a/tests/baselines/reference/partialDiscriminatedUnionMemberHasGoodError.types b/tests/baselines/reference/partialDiscriminatedUnionMemberHasGoodError.types index 5b1277374e464..0f1342dfa2345 100644 --- a/tests/baselines/reference/partialDiscriminatedUnionMemberHasGoodError.types +++ b/tests/baselines/reference/partialDiscriminatedUnionMemberHasGoodError.types @@ -25,7 +25,7 @@ interface Wrapper { const foo: Wrapper[] = []; >foo : Wrapper[] ->[] : undefined[] +>[] : Wrapper[] foo.push({ >foo.push({ types: [{ type: "A" }]}) : number diff --git a/tests/baselines/reference/propertyAccessChain.3.types b/tests/baselines/reference/propertyAccessChain.3.types index ef31d61de9070..a9b73e8cfba66 100644 --- a/tests/baselines/reference/propertyAccessChain.3.types +++ b/tests/baselines/reference/propertyAccessChain.3.types @@ -169,16 +169,16 @@ for (obj?.a.b of []); >1 : 1 [...obj?.a] = []; ->[...obj?.a] = [] : never[] +>[...obj?.a] = [] : any[] >[...obj?.a] : any[] >...obj?.a : any >obj?.a : any >obj : any >a : any ->[] : never[] +>[] : any[] [...obj?.a.b] = []; ->[...obj?.a.b] = [] : never[] +>[...obj?.a.b] = [] : any[] >[...obj?.a.b] : any[] >...obj?.a.b : any >obj?.a.b : any @@ -186,5 +186,5 @@ for (obj?.a.b of []); >obj : any >a : any >b : any ->[] : never[] +>[] : any[] diff --git a/tests/baselines/reference/propertyAssignmentUseParentType3.types b/tests/baselines/reference/propertyAssignmentUseParentType3.types index 8bd4476324014..183760473c79a 100644 --- a/tests/baselines/reference/propertyAssignmentUseParentType3.types +++ b/tests/baselines/reference/propertyAssignmentUseParentType3.types @@ -18,7 +18,7 @@ function foo2(): any[] { >foo2 : typeof foo2 return []; ->[] : undefined[] +>[] : any[] } foo2.join = ""; >foo2.join = "" : "" diff --git a/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM.types b/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM.types index badbee67f736e..518044ef86cbf 100644 --- a/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM.types +++ b/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM.types @@ -18,7 +18,7 @@ const rest: {} = {}; const children: any[] = []; >children : any[] ->[] : never[] +>[] : any[] >{children} : JSX.Element diff --git a/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM2.types b/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM2.types index 5d82838481b82..18ab56ca9f4c9 100644 --- a/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM2.types +++ b/tests/baselines/reference/reactTagNameComponentWithPropsNoOOM2.types @@ -19,7 +19,7 @@ const rest: React.HTMLAttributes = {}; const children: any[] = []; >children : any[] ->[] : never[] +>[] : any[] >{children} : JSX.Element diff --git a/tests/baselines/reference/readonlyArraysAndTuples2.types b/tests/baselines/reference/readonlyArraysAndTuples2.types index 21872ad63d221..0f42a2b6423d2 100644 --- a/tests/baselines/reference/readonlyArraysAndTuples2.types +++ b/tests/baselines/reference/readonlyArraysAndTuples2.types @@ -35,7 +35,7 @@ class A { j: readonly string[] = []; >j : readonly string[] ->[] : never[] +>[] : string[] @someDec >someDec : any diff --git a/tests/baselines/reference/recursiveClassBaseType.types b/tests/baselines/reference/recursiveClassBaseType.types index 46ca8433eddb5..91a890ae08e21 100644 --- a/tests/baselines/reference/recursiveClassBaseType.types +++ b/tests/baselines/reference/recursiveClassBaseType.types @@ -18,7 +18,7 @@ class C extends Base({ x: p(() => []) }) { } >p(() => []) : C[] >p : (fn: () => T) => T >() => [] : () => never[] ->[] : never[] +>[] : C[] // Repro from #44359 diff --git a/tests/baselines/reference/recursiveExcessPropertyChecks.types b/tests/baselines/reference/recursiveExcessPropertyChecks.types index 04b78367460b5..1b9c180a889df 100644 --- a/tests/baselines/reference/recursiveExcessPropertyChecks.types +++ b/tests/baselines/reference/recursiveExcessPropertyChecks.types @@ -18,7 +18,7 @@ function getMaxId(items: NodeWithId[]) { const nodes = [] as ITreeItem[]; >nodes : ITreeItem[] >[] as ITreeItem[] : ITreeItem[] ->[] : never[] +>[] : ITreeItem[] getMaxId(nodes); >getMaxId(nodes) : void diff --git a/tests/baselines/reference/recursiveTypeReferences1.types b/tests/baselines/reference/recursiveTypeReferences1.types index 8259f392c5ba8..98e1dfd6d058d 100644 --- a/tests/baselines/reference/recursiveTypeReferences1.types +++ b/tests/baselines/reference/recursiveTypeReferences1.types @@ -409,7 +409,7 @@ function parse(node: Tree, index: number[] = []): HTMLUListElement { >parse : (node: Tree, index?: number[]) => HTMLUListElement >node : Tree >index : number[] ->[] : never[] +>[] : number[] return html('ul', node.map(([el, children], i) => { >html('ul', node.map(([el, children], i) => { const idx = [...index, i + 1]; return html('li', [ html('a', { href: `#${el.id}`, rel: 'noopener', 'data-index': idx.join('.') }, el.textContent!), children.length > 0 ? parse(children, idx) : frag() ]); })) : any @@ -544,8 +544,8 @@ function cons(hs: HTMLHeadingElement[]): Tree { >h : HTMLHeadingElement }, [[]]) ->[[]] : never[][] ->[] : never[] +>[[]] : HTMLHeadingElement[][] +>[] : HTMLHeadingElement[] .reduce((node, hs) => >reduce : { (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[], initialValue: HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => U, initialValue: U): U; } @@ -580,7 +580,7 @@ function cons(hs: HTMLHeadingElement[]): Tree { >hs : HTMLHeadingElement[] , []); ->[] : never[] +>[] : [HTMLHeadingElement, Tree][] } function level(h: HTMLHeadingElement): number { diff --git a/tests/baselines/reference/restElementWithNullInitializer.types b/tests/baselines/reference/restElementWithNullInitializer.types index c6eebb23d4988..85464cd6f8189 100644 --- a/tests/baselines/reference/restElementWithNullInitializer.types +++ b/tests/baselines/reference/restElementWithNullInitializer.types @@ -20,6 +20,6 @@ function foo3([...r] = {}) { function foo4([...r] = []) { >foo4 : ([...r]?: any[]) => void >r : any[] ->[] : undefined[] +>[] : any[] } diff --git a/tests/baselines/reference/sourceMapSample.types b/tests/baselines/reference/sourceMapSample.types index 90ed347b5f63f..9fb34f5d82128 100644 --- a/tests/baselines/reference/sourceMapSample.types +++ b/tests/baselines/reference/sourceMapSample.types @@ -60,7 +60,7 @@ module Foo.Bar { var greeters: Greeter[] = []; >greeters : Greeter[] ->[] : undefined[] +>[] : Greeter[] greeters[0] = new Greeter(greeting); >greeters[0] = new Greeter(greeting) : Greeter diff --git a/tests/baselines/reference/sourceMapValidationClasses.types b/tests/baselines/reference/sourceMapValidationClasses.types index fedebdcfa3322..e41e9e9d35d58 100644 --- a/tests/baselines/reference/sourceMapValidationClasses.types +++ b/tests/baselines/reference/sourceMapValidationClasses.types @@ -58,7 +58,7 @@ module Foo.Bar { var greeters: Greeter[] = []; /* inline block comment */ >greeters : Greeter[] ->[] : undefined[] +>[] : Greeter[] greeters[0] = new Greeter(greeting); >greeters[0] = new Greeter(greeting) : Greeter diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types index eaa8c33d7c0b3..f10390578546f 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types @@ -93,30 +93,30 @@ let multiRobotAInfo: (string | string[])[]; [, multiSkillB = []] = multiRobotB; >[, multiSkillB = []] = multiRobotB : MultiSkilledRobot ->[, multiSkillB = []] : [undefined, undefined[]] +>[, multiSkillB = []] : [undefined, string[]] > : undefined ->multiSkillB = [] : undefined[] +>multiSkillB = [] : string[] >multiSkillB : string[] ->[] : undefined[] +>[] : string[] >multiRobotB : MultiSkilledRobot [, multiSkillB = []] = getMultiRobotB(); >[, multiSkillB = []] = getMultiRobotB() : MultiSkilledRobot ->[, multiSkillB = []] : [undefined, undefined[]] +>[, multiSkillB = []] : [undefined, string[]] > : undefined ->multiSkillB = [] : undefined[] +>multiSkillB = [] : string[] >multiSkillB : string[] ->[] : undefined[] +>[] : string[] >getMultiRobotB() : MultiSkilledRobot >getMultiRobotB : () => MultiSkilledRobot [, multiSkillB = []] = ["roomba", ["vacuum", "mopping"]]; >[, multiSkillB = []] = ["roomba", ["vacuum", "mopping"]] : [string, string[]] ->[, multiSkillB = []] : [undefined, undefined[]] +>[, multiSkillB = []] : [undefined, string[]] > : undefined ->multiSkillB = [] : undefined[] +>multiSkillB = [] : string[] >multiSkillB : string[] ->[] : undefined[] +>[] : string[] >["roomba", ["vacuum", "mopping"]] : [string, string[]] >"roomba" : "roomba" >["vacuum", "mopping"] : string[] diff --git a/tests/baselines/reference/staticFieldWithInterfaceContext.types b/tests/baselines/reference/staticFieldWithInterfaceContext.types index 0b109f955c1a1..595b01a7320d3 100644 --- a/tests/baselines/reference/staticFieldWithInterfaceContext.types +++ b/tests/baselines/reference/staticFieldWithInterfaceContext.types @@ -130,7 +130,7 @@ let [ c9 = class { static x = { a: "a" } } ]: I[] = []; >{ a: "a" } : { a: "a"; } >a : "a" >"a" : "a" ->[] : undefined[] +>[] : I[] let [ c10 = class { static x = { a: "a" } } ]: [I?] = [class { static x = { a: "a" } }]; >c10 : I diff --git a/tests/baselines/reference/strictFunctionTypes1.types b/tests/baselines/reference/strictFunctionTypes1.types index ac5deab52f3e7..fb40a3b375aaf 100644 --- a/tests/baselines/reference/strictFunctionTypes1.types +++ b/tests/baselines/reference/strictFunctionTypes1.types @@ -181,6 +181,6 @@ const t6: A[] = coAndContraArray([], acceptA); >t6 : A[] >coAndContraArray([], acceptA) : A[] >coAndContraArray : (value: T[], func: (t: T) => void) => T[] ->[] : never[] +>[] : A[] >acceptA : (x: A) => void diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types index 114b37d1cf2e2..f36c73b74658e 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInference.types @@ -392,7 +392,7 @@ var arr = someGenerics9 `${ [] }${ null }${ undefined }`; >someGenerics9 `${ [] }${ null }${ undefined }` : any[] >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T >`${ [] }${ null }${ undefined }` : string ->[] : undefined[] +>[] : any[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types index 1953bde609932..3ee53a7205116 100644 --- a/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types +++ b/tests/baselines/reference/taggedTemplateStringsTypeArgumentInferenceES6.types @@ -392,7 +392,7 @@ var arr = someGenerics9 `${ [] }${ null }${ undefined }`; >someGenerics9 `${ [] }${ null }${ undefined }` : any[] >someGenerics9 : (strs: TemplateStringsArray, a: T, b: T, c: T) => T >`${ [] }${ null }${ undefined }` : string ->[] : undefined[] +>[] : any[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types index d9bac7879d94d..0f0bf8eb63900 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2.types @@ -28,7 +28,7 @@ var b = foo1([], 1); >b : number >foo1([], 1) : number >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } ->[] : undefined[] +>[] : string[] >1 : 1 function foo2(strs: string[], x: number): number; @@ -60,6 +60,6 @@ var d = foo2([], 1); >d : number >foo2([], 1) : number >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } ->[] : undefined[] +>[] : string[] >1 : 1 diff --git a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types index 68180a23d8f5f..f23faf9373abe 100644 --- a/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types +++ b/tests/baselines/reference/taggedTemplateStringsWithOverloadResolution2_ES6.types @@ -28,7 +28,7 @@ var b = foo1([], 1); >b : number >foo1([], 1) : number >foo1 : { (strs: TemplateStringsArray, x: number): string; (strs: string[], x: number): number; } ->[] : undefined[] +>[] : string[] >1 : 1 function foo2(strs: string[], x: number): number; @@ -60,6 +60,6 @@ var d = foo2([], 1); >d : number >foo2([], 1) : number >foo2 : { (strs: string[], x: number): number; (strs: TemplateStringsArray, x: number): string; } ->[] : undefined[] +>[] : string[] >1 : 1 diff --git a/tests/baselines/reference/trailingCommasInBindingPatterns.types b/tests/baselines/reference/trailingCommasInBindingPatterns.types index 04754797495cd..f62e51eea9efc 100644 --- a/tests/baselines/reference/trailingCommasInBindingPatterns.types +++ b/tests/baselines/reference/trailingCommasInBindingPatterns.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es7/trailingCommasInBindingPatterns.ts === const [...a,] = []; >a : any[] ->[] : undefined[] +>[] : any[] const {...b,} = {}; >b : {} @@ -12,12 +12,12 @@ let c, d; >d : any ([...c,] = []); ->([...c,] = []) : undefined[] ->[...c,] = [] : undefined[] +>([...c,] = []) : any[] +>[...c,] = [] : any[] >[...c,] : any[] >...c : any >c : any ->[] : undefined[] +>[] : any[] ({...d,} = {}); >({...d,} = {}) : {} diff --git a/tests/baselines/reference/tupleTypeInference2.types b/tests/baselines/reference/tupleTypeInference2.types index 9983ba993efbe..946ec95b2b705 100644 --- a/tests/baselines/reference/tupleTypeInference2.types +++ b/tests/baselines/reference/tupleTypeInference2.types @@ -37,8 +37,8 @@ g([[]] as [void[]]); // U: {} >g([[]] as [void[]]) : unknown >g : (f: B) => U >[[]] as [void[]] : [void[]] ->[[]] : [never[]] ->[] : never[] +>[[]] : [void[]] +>[] : void[] type C = [R[]] | [R[], S]; >C : C @@ -51,8 +51,8 @@ h([[]] as [void[]]); // U: {} >h([[]] as [void[]]) : unknown >h : (f: C) => U >[[]] as [void[]] : [void[]] ->[[]] : [never[]] ->[] : never[] +>[[]] : [void[]] +>[] : void[] // Repro from #22562 @@ -74,6 +74,6 @@ h2([[]] as [void[]]); // T: void >h2([[]] as [void[]]) : void >h2 : (f: C2) => T >[[]] as [void[]] : [void[]] ->[[]] : [never[]] ->[] : never[] +>[[]] : [void[]] +>[] : void[] diff --git a/tests/baselines/reference/typeArgumentInference.types b/tests/baselines/reference/typeArgumentInference.types index 12fa09f616e21..f6c481d06209a 100644 --- a/tests/baselines/reference/typeArgumentInference.types +++ b/tests/baselines/reference/typeArgumentInference.types @@ -448,7 +448,7 @@ var arr = someGenerics9([], null, undefined); >arr : any[] >someGenerics9([], null, undefined) : any[] >someGenerics9 : (a: T, b: T, c: T) => T ->[] : undefined[] +>[] : any[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.types b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.types index 70ee543c1f772..fd52e7de298cc 100644 --- a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.types +++ b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.types @@ -513,7 +513,7 @@ var arr = new someGenerics9([], null, undefined); >arr : any[] >new someGenerics9([], null, undefined) : any[] >someGenerics9 : someGenerics9 ->[] : undefined[] +>[] : any[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/typeArgumentInferenceWithConstraints.types b/tests/baselines/reference/typeArgumentInferenceWithConstraints.types index 332d463ad72d5..db81508f7de98 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithConstraints.types +++ b/tests/baselines/reference/typeArgumentInferenceWithConstraints.types @@ -487,7 +487,7 @@ var arr = someGenerics9([], null, undefined); >arr : any[] >someGenerics9([], null, undefined) : any[] >someGenerics9 : (a: T, b: T, c: T) => T ->[] : undefined[] +>[] : any[] >null : null >undefined : undefined diff --git a/tests/baselines/reference/typeGuardsTypeParameters.types b/tests/baselines/reference/typeGuardsTypeParameters.types index e6db4e578e866..5d72a94fc191a 100644 --- a/tests/baselines/reference/typeGuardsTypeParameters.types +++ b/tests/baselines/reference/typeGuardsTypeParameters.types @@ -65,7 +65,7 @@ function fun(item: { [P in keyof T]: T[P] }) { const strings: string[] = []; >strings : string[] ->[] : never[] +>[] : string[] for (const key in item) { >key : Extract diff --git a/tests/baselines/reference/typeInferenceFBoundedTypeParams.types b/tests/baselines/reference/typeInferenceFBoundedTypeParams.types index a6e9b45a01e38..0e2792d5ed4fe 100644 --- a/tests/baselines/reference/typeInferenceFBoundedTypeParams.types +++ b/tests/baselines/reference/typeInferenceFBoundedTypeParams.types @@ -53,7 +53,7 @@ fold( [] as [string, string][], >[] as [string, string][] : [string, string][] ->[] : undefined[] +>[] : [string, string][] (result, value) => append( >(result, value) => append( result, ["", ""] ) : (result: [string, string][], value: number) => [string, string][] diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types index a68ae4f673b90..34acd1611eed5 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types @@ -91,7 +91,7 @@ foo2(1, []); >foo2(1, []) : any[] >foo2 : (x: T, y: U) => U >1 : 1 ->[] : undefined[] +>[] : any[] foo2(1, ['']); >foo2(1, ['']) : string[] diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types index 9dafa8925f0b1..2851049f4978a 100644 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types @@ -60,7 +60,7 @@ foo2(1, { length: {} }); foo2([], ['']); >foo2([], ['']) : { length: any[]; } >foo2 : (x: T, y: U) => U ->[] : undefined[] +>[] : any[] >[''] : string[] >'' : "" diff --git a/tests/baselines/reference/typePredicateStructuralMatch.types b/tests/baselines/reference/typePredicateStructuralMatch.types index 4d0b371b1071d..dea8a0ede8871 100644 --- a/tests/baselines/reference/typePredicateStructuralMatch.types +++ b/tests/baselines/reference/typePredicateStructuralMatch.types @@ -9,9 +9,9 @@ getResults1([]); getResults1({data: []}); >getResults1({data: []}) : Results >getResults1 : (value: Results | { data: Results; }) => Results ->{data: []} : { data: undefined[]; } ->data : undefined[] ->[] : undefined[] +>{data: []} : { data: Result[]; } +>data : Result[] +>[] : Result[] getResults2([]); >getResults2([]) : Results @@ -21,9 +21,9 @@ getResults2([]); getResults2({data: []}); >getResults2({data: []}) : Results >getResults2 : (value: Results | { data: Results; }) => Results ->{data: []} : { data: undefined[]; } ->data : undefined[] ->[] : undefined[] +>{data: []} : { data: Result[]; } +>data : Result[] +>[] : Result[] type Result = { value: string }; >Result : Result diff --git a/tests/baselines/reference/undefinedInferentialTyping.types b/tests/baselines/reference/undefinedInferentialTyping.types index be64a5ccca998..e9d533258c981 100644 --- a/tests/baselines/reference/undefinedInferentialTyping.types +++ b/tests/baselines/reference/undefinedInferentialTyping.types @@ -12,6 +12,6 @@ var a = f([], 3); // should be number >a : number >f([], 3) : 3 >f : (arr: T[], elemnt: T) => T ->[] : undefined[] +>[] : 3[] >3 : 3 diff --git a/tests/baselines/reference/underscoreTest1.types b/tests/baselines/reference/underscoreTest1.types index 27b7ed5cc19d3..8b2224eb43efc 100644 --- a/tests/baselines/reference/underscoreTest1.types +++ b/tests/baselines/reference/underscoreTest1.types @@ -128,7 +128,7 @@ var flat = _.reduceRight(list, (a, b) => a.concat(b), []); >a : number[] >concat : { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; } >b : number[] ->[] : undefined[] +>[] : number[] var even = _.find([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >even : number diff --git a/tests/baselines/reference/unionOfClassCalls.types b/tests/baselines/reference/unionOfClassCalls.types index 7edd1c7f02ac2..cfd942a3ebae8 100644 --- a/tests/baselines/reference/unionOfClassCalls.types +++ b/tests/baselines/reference/unionOfClassCalls.types @@ -42,11 +42,11 @@ const arr: number[] | string[] = []; // Works with Array const arr1: number[] = []; >arr1 : number[] ->[] : never[] +>[] : number[] const arr2: string[] = []; >arr2 : string[] ->[] : never[] +>[] : string[] arr.map((a: number | string, index: number) => { >arr.map((a: number | string, index: number) => { return index}) : number[] @@ -122,7 +122,7 @@ arr1.reduce((acc: number[], a: number, index: number) => { >a : number }, []) ->[] : never[] +>[] : number[] arr1.forEach((a: number, index: number) => { >arr1.forEach((a: number, index: number) => { return index}) : void diff --git a/tests/baselines/reference/unspecializedConstraints.types b/tests/baselines/reference/unspecializedConstraints.types index d46bf23287a3c..4d7208b71b708 100644 --- a/tests/baselines/reference/unspecializedConstraints.types +++ b/tests/baselines/reference/unspecializedConstraints.types @@ -156,7 +156,7 @@ module ts { >getProperties : () => Property[] return []; ->[] : undefined[] +>[] : Property[] } getProperty(index: number): Property { >getProperty : (index: number) => Property @@ -195,7 +195,7 @@ module ts { >getSignatures : () => Signature[] return []; ->[] : undefined[] +>[] : Signature[] } isPrimitive(): boolean { >isPrimitive : () => boolean diff --git a/tests/baselines/reference/validMultipleVariableDeclarations.types b/tests/baselines/reference/validMultipleVariableDeclarations.types index 25bf8486b963d..82695168c27de 100644 --- a/tests/baselines/reference/validMultipleVariableDeclarations.types +++ b/tests/baselines/reference/validMultipleVariableDeclarations.types @@ -132,11 +132,11 @@ var a = ['a', 'b'] var a = []; >a : string[] >[] : string[] ->[] : undefined[] +>[] : string[] var a: string[] = []; >a : string[] ->[] : undefined[] +>[] : string[] var a = new Array(); >a : string[] diff --git a/tests/baselines/reference/variance.types b/tests/baselines/reference/variance.types index 2f7267aca5de0..1c8178adf8dc2 100644 --- a/tests/baselines/reference/variance.types +++ b/tests/baselines/reference/variance.types @@ -37,7 +37,7 @@ class Bar { private static instance: Bar[] = []; >instance : Bar[] ->[] : never[] +>[] : Bar[] cast(_name: ([T] extends [string] ? string : string)) { } >cast : (_name: ([T] extends [string] ? string : string)) => void From 6c8f3082ffc073cacb8da72f5a6bdcb43a6d4ae1 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 14 Feb 2022 15:52:54 -0800 Subject: [PATCH 2/2] Add baseline from merge --- tests/baselines/reference/neverTypeErrors1.types | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/baselines/reference/neverTypeErrors1.types b/tests/baselines/reference/neverTypeErrors1.types index f577b4457e1f0..ea58631b67de7 100644 --- a/tests/baselines/reference/neverTypeErrors1.types +++ b/tests/baselines/reference/neverTypeErrors1.types @@ -72,7 +72,7 @@ function f5() { let x: never[] = []; // Ok >x : never[] ->[] : undefined[] +>[] : never[] } // Repro from #46032 @@ -95,11 +95,11 @@ function func(): { value: Union[] } { >value : never[] return { ->{ value: [], } : { value: undefined[]; } +>{ value: [], } : { value: never[]; } value: [], ->value : undefined[] ->[] : undefined[] +>value : never[] +>[] : never[] }; }