Revert contextual type check

This commit is contained in:
Anders Hejlsberg
2024-03-02 16:07:13 -08:00
parent b71f242e59
commit 39489ffb4d
2 changed files with 11 additions and 13 deletions

View File

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

View File

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