From 39489ffb4dec953c85226c43cd771da94891fabb Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sat, 2 Mar 2024 16:07:13 -0800 Subject: [PATCH] Revert contextual type check --- src/compiler/checker.ts | 2 -- .../reference/findLast(target=esnext).types | 22 +++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index af93bb8cfb2..432083640f3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -37411,8 +37411,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // Only attempt to infer a type predicate if there's exactly one return. let singleReturn: Expression | undefined; if (func.body && func.body.kind !== SyntaxKind.Block) { - const contextualSignature = getContextualSignature(func as ArrowFunction); - if (contextualSignature && !getTypePredicateOfSignature(contextualSignature)) return undefined; singleReturn = func.body; // arrow function } else { diff --git a/tests/baselines/reference/findLast(target=esnext).types b/tests/baselines/reference/findLast(target=esnext).types index 6a608b9eb37..d010b65027b 100644 --- a/tests/baselines/reference/findLast(target=esnext).types +++ b/tests/baselines/reference/findLast(target=esnext).types @@ -170,7 +170,7 @@ const indexNumber: number = [0].findLastIndex((item) => item === 0); >[0] : number[] >0 : 0 >findLastIndex : (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -183,7 +183,7 @@ const indexString: number = ["string"].findLastIndex((item) => item === "string" >["string"] : string[] >"string" : "string" >findLastIndex : (predicate: (value: string, index: number, array: string[]) => unknown, thisArg?: any) => number ->(item) => item === "string" : (item: string) => boolean +>(item) => item === "string" : (item: string) => item is "string" >item : string >item === "string" : boolean >item : string @@ -195,7 +195,7 @@ new Int8Array().findLastIndex((item) => item === 0); >new Int8Array() : Int8Array >Int8Array : Int8ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -207,7 +207,7 @@ new Uint8Array().findLastIndex((item) => item === 0); >new Uint8Array() : Uint8Array >Uint8Array : Uint8ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -219,7 +219,7 @@ new Uint8ClampedArray().findLastIndex((item) => item === 0); >new Uint8ClampedArray() : Uint8ClampedArray >Uint8ClampedArray : Uint8ClampedArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -231,7 +231,7 @@ new Int16Array().findLastIndex((item) => item === 0); >new Int16Array() : Int16Array >Int16Array : Int16ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -243,7 +243,7 @@ new Uint16Array().findLastIndex((item) => item === 0); >new Uint16Array() : Uint16Array >Uint16Array : Uint16ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -255,7 +255,7 @@ new Int32Array().findLastIndex((item) => item === 0); >new Int32Array() : Int32Array >Int32Array : Int32ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -267,7 +267,7 @@ new Uint32Array().findLastIndex((item) => item === 0); >new Uint32Array() : Uint32Array >Uint32Array : Uint32ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -279,7 +279,7 @@ new Float32Array().findLastIndex((item) => item === 0); >new Float32Array() : Float32Array >Float32Array : Float32ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number @@ -291,7 +291,7 @@ new Float64Array().findLastIndex((item) => item === 0); >new Float64Array() : Float64Array >Float64Array : Float64ArrayConstructor >findLastIndex : (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any) => number ->(item) => item === 0 : (item: number) => boolean +>(item) => item === 0 : (item: number) => item is 0 >item : number >item === 0 : boolean >item : number