File tree 2 files changed +22
-12
lines changed
tests/cases/conformance/types/typeRelationships/typeInference 2 files changed +22
-12
lines changed Original file line number Diff line number Diff line change @@ -4073,8 +4073,7 @@ module ts {
4073
4073
inferFromTypes ( source , t ) ;
4074
4074
}
4075
4075
}
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
4078
4077
if ( typeParameterCount === 1 ) {
4079
4078
inferiority ++ ;
4080
4079
inferFromTypes ( source , typeParameter ) ;
Original file line number Diff line number Diff line change 4
4
function f < T > ( x : T , y : string | T ) : T {
5
5
return x ;
6
6
}
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
+
7
17
function g < T > ( value : [ string , T ] ) : T {
8
18
return value [ 1 ] ;
9
19
}
10
20
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" ) ;
You can’t perform that action at this time.
0 commit comments