Skip to content

Commit 16bbb4d

Browse files
authored
Merge pull request microsoft#32077 from andrewbranch/bug/31114
Fix incorrect noImplicitAny error on contextual union function signature
2 parents 340f810 + 252840a commit 16bbb4d

File tree

5 files changed

+41
-1
lines changed

5 files changed

+41
-1
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19129,7 +19129,9 @@ namespace ts {
1912919129
}
1913019130
}
1913119131
// Result is union of signatures collected (return type is union of return types of this signature set)
19132-
return signatureList && createUnionSignature(signatureList[0], signatureList);
19132+
if (signatureList) {
19133+
return signatureList.length === 1 ? signatureList[0] : createUnionSignature(signatureList[0], signatureList);
19134+
}
1913319135
}
1913419136

1913519137
function checkSpreadExpression(node: SpreadElement, checkMode?: CheckMode): Type {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [functionExpressionContextualTyping3.ts]
2+
// #31114
3+
declare function f<T>(value: T | number): void;
4+
f((a: any) => "")
5+
6+
7+
//// [functionExpressionContextualTyping3.js]
8+
f(function (a) { return ""; });
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping3.ts ===
2+
// #31114
3+
declare function f<T>(value: T | number): void;
4+
>f : Symbol(f, Decl(functionExpressionContextualTyping3.ts, 0, 0))
5+
>T : Symbol(T, Decl(functionExpressionContextualTyping3.ts, 1, 19))
6+
>value : Symbol(value, Decl(functionExpressionContextualTyping3.ts, 1, 22))
7+
>T : Symbol(T, Decl(functionExpressionContextualTyping3.ts, 1, 19))
8+
9+
f((a: any) => "")
10+
>f : Symbol(f, Decl(functionExpressionContextualTyping3.ts, 0, 0))
11+
>a : Symbol(a, Decl(functionExpressionContextualTyping3.ts, 2, 3))
12+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
=== tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping3.ts ===
2+
// #31114
3+
declare function f<T>(value: T | number): void;
4+
>f : <T>(value: number | T) => void
5+
>value : number | T
6+
7+
f((a: any) => "")
8+
>f((a: any) => "") : void
9+
>f : <T>(value: number | T) => void
10+
>(a: any) => "" : (a: any) => ""
11+
>a : any
12+
>"" : ""
13+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// @noImplicitAny: true
2+
3+
// #31114
4+
declare function f<T>(value: T | number): void;
5+
f((a: any) => "")

0 commit comments

Comments
 (0)