Skip to content

Commit b3ef962

Browse files
committed
Addressing CR feedback
1 parent edb6543 commit b3ef962

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4073,8 +4073,7 @@ module ts {
40734073
inferFromTypes(source, t);
40744074
}
40754075
}
4076-
// If no inferences were produced above and union contains a single naked type parameter,
4077-
// make a secondary inference to that type parameter
4076+
// If union contains a single naked type parameter, make a secondary inference to that type parameter
40784077
if (typeParameterCount === 1) {
40794078
inferiority++;
40804079
inferFromTypes(source, typeParameter);

tests/cases/conformance/types/typeRelationships/typeInference/unionTypeInference.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,28 @@
44
function f<T>(x: T, y: string|T): T {
55
return x;
66
}
7+
8+
var a1: number;
9+
var a1 = f(1, 2);
10+
var a2: number;
11+
var a2 = f(1, "hello");
12+
var a3: number;
13+
var a3 = f(1, a1 || "hello");
14+
var a4: any;
15+
var a4 = f(undefined, "abc");
16+
717
function g<T>(value: [string, T]): T {
818
return value[1];
919
}
1020

11-
var a: number;
12-
var a = f(1, 2);
13-
var b: number;
14-
var b = f(1, "hello");
15-
var c: number;
16-
var c = f(1, a || "hello");
17-
var d: any;
18-
var d = f(undefined, "abc");
19-
var e: boolean;
20-
var e = g(["string", true]);
21+
var b1: boolean;
22+
var b1 = g(["string", true]);
23+
24+
function h<T>(x: string|boolean|T): T {
25+
return typeof x === "string" || typeof x === "boolean" ? undefined : x;
26+
}
27+
28+
var c1: number;
29+
var c1 = h(5);
30+
var c2: string;
31+
var c2 = h("abc");

0 commit comments

Comments
 (0)