Skip to content

Commit b288657

Browse files
committed
Rename and revamp test
1 parent 6c2e62b commit b288657

10 files changed

+298
-174
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
tests/cases/compiler/inferenceOfNullableObjectTypesWithCommonBase.ts(10,15): error TS2345: Argument of type 'D | undefined' is not assignable to parameter of type 'B'.
2+
Type 'undefined' is not assignable to type 'B'.
3+
tests/cases/compiler/inferenceOfNullableObjectTypesWithCommonBase.ts(11,27): error TS2345: Argument of type 'B' is not assignable to parameter of type 'D'.
4+
Property 'bar' is missing in type 'B' but required in type 'D'.
5+
6+
7+
==== tests/cases/compiler/inferenceOfNullableObjectTypesWithCommonBase.ts (2 errors) ====
8+
function equal<T>(a: T, b: T) { }
9+
10+
let v = null!;
11+
12+
// Object types with common base types
13+
14+
type B = { foo: string }
15+
type D = { foo: string; bar: number }
16+
17+
equal(v as B, v as undefined | D)
18+
~~~~~~~~~~~~~~~~~~
19+
!!! error TS2345: Argument of type 'D | undefined' is not assignable to parameter of type 'B'.
20+
!!! error TS2345: Type 'undefined' is not assignable to type 'B'.
21+
equal(v as undefined | D, v as B)
22+
~~~~~~
23+
!!! error TS2345: Argument of type 'B' is not assignable to parameter of type 'D'.
24+
!!! error TS2345: Property 'bar' is missing in type 'B' but required in type 'D'.
25+
!!! related TS2728 tests/cases/compiler/inferenceOfNullableObjectTypesWithCommonBase.ts:8:25: 'bar' is declared here.
26+
27+
equal<undefined | B>(v as B, v as undefined | D)
28+
equal<undefined | B>(v as undefined | D, v as B)
29+
30+
equal(v as B, v as undefined)
31+
equal(v as undefined, v as B)
32+
33+
equal(v as B, v as D)
34+
equal(v as D, v as B)
35+
36+
equal(v as B, v as B | undefined)
37+
equal(v as B | undefined, v as B)
38+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//// [inferenceOfNullableObjectTypesWithCommonBase.ts]
2+
function equal<T>(a: T, b: T) { }
3+
4+
let v = null!;
5+
6+
// Object types with common base types
7+
8+
type B = { foo: string }
9+
type D = { foo: string; bar: number }
10+
11+
equal(v as B, v as undefined | D)
12+
equal(v as undefined | D, v as B)
13+
14+
equal<undefined | B>(v as B, v as undefined | D)
15+
equal<undefined | B>(v as undefined | D, v as B)
16+
17+
equal(v as B, v as undefined)
18+
equal(v as undefined, v as B)
19+
20+
equal(v as B, v as D)
21+
equal(v as D, v as B)
22+
23+
equal(v as B, v as B | undefined)
24+
equal(v as B | undefined, v as B)
25+
26+
27+
//// [inferenceOfNullableObjectTypesWithCommonBase.js]
28+
"use strict";
29+
function equal(a, b) { }
30+
var v = null;
31+
equal(v, v);
32+
equal(v, v);
33+
equal(v, v);
34+
equal(v, v);
35+
equal(v, v);
36+
equal(v, v);
37+
equal(v, v);
38+
equal(v, v);
39+
equal(v, v);
40+
equal(v, v);
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
=== tests/cases/compiler/inferenceOfNullableObjectTypesWithCommonBase.ts ===
2+
function equal<T>(a: T, b: T) { }
3+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
4+
>T : Symbol(T, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 15))
5+
>a : Symbol(a, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 18))
6+
>T : Symbol(T, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 15))
7+
>b : Symbol(b, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 23))
8+
>T : Symbol(T, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 15))
9+
10+
let v = null!;
11+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
12+
13+
// Object types with common base types
14+
15+
type B = { foo: string }
16+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
17+
>foo : Symbol(foo, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 10))
18+
19+
type D = { foo: string; bar: number }
20+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
21+
>foo : Symbol(foo, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 7, 10))
22+
>bar : Symbol(bar, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 7, 23))
23+
24+
equal(v as B, v as undefined | D)
25+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
26+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
27+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
28+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
29+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
30+
31+
equal(v as undefined | D, v as B)
32+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
33+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
34+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
35+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
36+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
37+
38+
equal<undefined | B>(v as B, v as undefined | D)
39+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
40+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
41+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
42+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
43+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
44+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
45+
46+
equal<undefined | B>(v as undefined | D, v as B)
47+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
48+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
49+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
50+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
51+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
52+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
53+
54+
equal(v as B, v as undefined)
55+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
56+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
57+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
58+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
59+
60+
equal(v as undefined, v as B)
61+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
62+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
63+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
64+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
65+
66+
equal(v as B, v as D)
67+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
68+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
69+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
70+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
71+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
72+
73+
equal(v as D, v as B)
74+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
75+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
76+
>D : Symbol(D, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 6, 24))
77+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
78+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
79+
80+
equal(v as B, v as B | undefined)
81+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
82+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
83+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
84+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
85+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
86+
87+
equal(v as B | undefined, v as B)
88+
>equal : Symbol(equal, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 0, 0))
89+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
90+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
91+
>v : Symbol(v, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 3))
92+
>B : Symbol(B, Decl(inferenceOfNullableObjectTypesWithCommonBase.ts, 2, 14))
93+
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
=== tests/cases/compiler/inferenceOfNullableObjectTypesWithCommonBase.ts ===
2+
function equal<T>(a: T, b: T) { }
3+
>equal : <T>(a: T, b: T) => void
4+
>a : T
5+
>b : T
6+
7+
let v = null!;
8+
>v : never
9+
>null! : never
10+
>null : null
11+
12+
// Object types with common base types
13+
14+
type B = { foo: string }
15+
>B : { foo: string; }
16+
>foo : string
17+
18+
type D = { foo: string; bar: number }
19+
>D : { foo: string; bar: number; }
20+
>foo : string
21+
>bar : number
22+
23+
equal(v as B, v as undefined | D)
24+
>equal(v as B, v as undefined | D) : void
25+
>equal : <T>(a: T, b: T) => void
26+
>v as B : B
27+
>v : never
28+
>v as undefined | D : D | undefined
29+
>v : never
30+
31+
equal(v as undefined | D, v as B)
32+
>equal(v as undefined | D, v as B) : void
33+
>equal : <T>(a: T, b: T) => void
34+
>v as undefined | D : D | undefined
35+
>v : never
36+
>v as B : B
37+
>v : never
38+
39+
equal<undefined | B>(v as B, v as undefined | D)
40+
>equal<undefined | B>(v as B, v as undefined | D) : void
41+
>equal : <T>(a: T, b: T) => void
42+
>v as B : B
43+
>v : never
44+
>v as undefined | D : D | undefined
45+
>v : never
46+
47+
equal<undefined | B>(v as undefined | D, v as B)
48+
>equal<undefined | B>(v as undefined | D, v as B) : void
49+
>equal : <T>(a: T, b: T) => void
50+
>v as undefined | D : D | undefined
51+
>v : never
52+
>v as B : B
53+
>v : never
54+
55+
equal(v as B, v as undefined)
56+
>equal(v as B, v as undefined) : void
57+
>equal : <T>(a: T, b: T) => void
58+
>v as B : B
59+
>v : never
60+
>v as undefined : undefined
61+
>v : never
62+
63+
equal(v as undefined, v as B)
64+
>equal(v as undefined, v as B) : void
65+
>equal : <T>(a: T, b: T) => void
66+
>v as undefined : undefined
67+
>v : never
68+
>v as B : B
69+
>v : never
70+
71+
equal(v as B, v as D)
72+
>equal(v as B, v as D) : void
73+
>equal : <T>(a: T, b: T) => void
74+
>v as B : B
75+
>v : never
76+
>v as D : D
77+
>v : never
78+
79+
equal(v as D, v as B)
80+
>equal(v as D, v as B) : void
81+
>equal : <T>(a: T, b: T) => void
82+
>v as D : D
83+
>v : never
84+
>v as B : B
85+
>v : never
86+
87+
equal(v as B, v as B | undefined)
88+
>equal(v as B, v as B | undefined) : void
89+
>equal : <T>(a: T, b: T) => void
90+
>v as B : B
91+
>v : never
92+
>v as B | undefined : B | undefined
93+
>v : never
94+
95+
equal(v as B | undefined, v as B)
96+
>equal(v as B | undefined, v as B) : void
97+
>equal : <T>(a: T, b: T) => void
98+
>v as B | undefined : B | undefined
99+
>v : never
100+
>v as B : B
101+
>v : never
102+

tests/baselines/reference/issue49938.errors.txt

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/baselines/reference/issue49938.js

Lines changed: 0 additions & 31 deletions
This file was deleted.

tests/baselines/reference/issue49938.symbols

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)