Skip to content

Commit 0b5284d

Browse files
committed
Add tests
1 parent bea20a9 commit 0b5284d

File tree

4 files changed

+258
-0
lines changed

4 files changed

+258
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//// [intersectionsAndEmptyObjects.ts]
2+
// Empty object type literals are removed from intersections types
3+
// that contain other object types
4+
5+
type A = { a: number };
6+
type B = { b: string };
7+
type C = {};
8+
9+
let x01: A & B;
10+
let x02: A & C;
11+
let x03: B & C;
12+
let x04: A & B & C;
13+
let x05: string & C;
14+
let x06: C & string;
15+
let x07: C;
16+
let x08: C & {};
17+
let x09: {} & A & {} & B & {} & C & {};
18+
19+
interface D {}
20+
interface E {}
21+
22+
let x10: A & D;
23+
let x11: C & D;
24+
let x12: A & B & C & D;
25+
let x13: D & E;
26+
let x14: A & B & C & D & E;
27+
28+
29+
//// [intersectionsAndEmptyObjects.js]
30+
// Empty object type literals are removed from intersections types
31+
// that contain other object types
32+
var x01;
33+
var x02;
34+
var x03;
35+
var x04;
36+
var x05;
37+
var x06;
38+
var x07;
39+
var x08;
40+
var x09;
41+
var x10;
42+
var x11;
43+
var x12;
44+
var x13;
45+
var x14;
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
=== tests/cases/conformance/types/intersection/intersectionsAndEmptyObjects.ts ===
2+
// Empty object type literals are removed from intersections types
3+
// that contain other object types
4+
5+
type A = { a: number };
6+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
7+
>a : Symbol(a, Decl(intersectionsAndEmptyObjects.ts, 3, 10))
8+
9+
type B = { b: string };
10+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
11+
>b : Symbol(b, Decl(intersectionsAndEmptyObjects.ts, 4, 10))
12+
13+
type C = {};
14+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
15+
16+
let x01: A & B;
17+
>x01 : Symbol(x01, Decl(intersectionsAndEmptyObjects.ts, 7, 3))
18+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
19+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
20+
21+
let x02: A & C;
22+
>x02 : Symbol(x02, Decl(intersectionsAndEmptyObjects.ts, 8, 3))
23+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
24+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
25+
26+
let x03: B & C;
27+
>x03 : Symbol(x03, Decl(intersectionsAndEmptyObjects.ts, 9, 3))
28+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
29+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
30+
31+
let x04: A & B & C;
32+
>x04 : Symbol(x04, Decl(intersectionsAndEmptyObjects.ts, 10, 3))
33+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
34+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
35+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
36+
37+
let x05: string & C;
38+
>x05 : Symbol(x05, Decl(intersectionsAndEmptyObjects.ts, 11, 3))
39+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
40+
41+
let x06: C & string;
42+
>x06 : Symbol(x06, Decl(intersectionsAndEmptyObjects.ts, 12, 3))
43+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
44+
45+
let x07: C;
46+
>x07 : Symbol(x07, Decl(intersectionsAndEmptyObjects.ts, 13, 3))
47+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
48+
49+
let x08: C & {};
50+
>x08 : Symbol(x08, Decl(intersectionsAndEmptyObjects.ts, 14, 3))
51+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
52+
53+
let x09: {} & A & {} & B & {} & C & {};
54+
>x09 : Symbol(x09, Decl(intersectionsAndEmptyObjects.ts, 15, 3))
55+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
56+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
57+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
58+
59+
interface D {}
60+
>D : Symbol(D, Decl(intersectionsAndEmptyObjects.ts, 15, 39))
61+
62+
interface E {}
63+
>E : Symbol(E, Decl(intersectionsAndEmptyObjects.ts, 17, 14))
64+
65+
let x10: A & D;
66+
>x10 : Symbol(x10, Decl(intersectionsAndEmptyObjects.ts, 20, 3))
67+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
68+
>D : Symbol(D, Decl(intersectionsAndEmptyObjects.ts, 15, 39))
69+
70+
let x11: C & D;
71+
>x11 : Symbol(x11, Decl(intersectionsAndEmptyObjects.ts, 21, 3))
72+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
73+
>D : Symbol(D, Decl(intersectionsAndEmptyObjects.ts, 15, 39))
74+
75+
let x12: A & B & C & D;
76+
>x12 : Symbol(x12, Decl(intersectionsAndEmptyObjects.ts, 22, 3))
77+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
78+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
79+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
80+
>D : Symbol(D, Decl(intersectionsAndEmptyObjects.ts, 15, 39))
81+
82+
let x13: D & E;
83+
>x13 : Symbol(x13, Decl(intersectionsAndEmptyObjects.ts, 23, 3))
84+
>D : Symbol(D, Decl(intersectionsAndEmptyObjects.ts, 15, 39))
85+
>E : Symbol(E, Decl(intersectionsAndEmptyObjects.ts, 17, 14))
86+
87+
let x14: A & B & C & D & E;
88+
>x14 : Symbol(x14, Decl(intersectionsAndEmptyObjects.ts, 24, 3))
89+
>A : Symbol(A, Decl(intersectionsAndEmptyObjects.ts, 0, 0))
90+
>B : Symbol(B, Decl(intersectionsAndEmptyObjects.ts, 3, 23))
91+
>C : Symbol(C, Decl(intersectionsAndEmptyObjects.ts, 4, 23))
92+
>D : Symbol(D, Decl(intersectionsAndEmptyObjects.ts, 15, 39))
93+
>E : Symbol(E, Decl(intersectionsAndEmptyObjects.ts, 17, 14))
94+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
=== tests/cases/conformance/types/intersection/intersectionsAndEmptyObjects.ts ===
2+
// Empty object type literals are removed from intersections types
3+
// that contain other object types
4+
5+
type A = { a: number };
6+
>A : A
7+
>a : number
8+
9+
type B = { b: string };
10+
>B : B
11+
>b : string
12+
13+
type C = {};
14+
>C : C
15+
16+
let x01: A & B;
17+
>x01 : A & B
18+
>A : A
19+
>B : B
20+
21+
let x02: A & C;
22+
>x02 : A
23+
>A : A
24+
>C : C
25+
26+
let x03: B & C;
27+
>x03 : B
28+
>B : B
29+
>C : C
30+
31+
let x04: A & B & C;
32+
>x04 : A & B
33+
>A : A
34+
>B : B
35+
>C : C
36+
37+
let x05: string & C;
38+
>x05 : string & {}
39+
>C : C
40+
41+
let x06: C & string;
42+
>x06 : string & {}
43+
>C : C
44+
45+
let x07: C;
46+
>x07 : C
47+
>C : C
48+
49+
let x08: C & {};
50+
>x08 : {}
51+
>C : C
52+
53+
let x09: {} & A & {} & B & {} & C & {};
54+
>x09 : A & B
55+
>A : A
56+
>B : B
57+
>C : C
58+
59+
interface D {}
60+
>D : D
61+
62+
interface E {}
63+
>E : E
64+
65+
let x10: A & D;
66+
>x10 : A & D
67+
>A : A
68+
>D : D
69+
70+
let x11: C & D;
71+
>x11 : D
72+
>C : C
73+
>D : D
74+
75+
let x12: A & B & C & D;
76+
>x12 : A & B & D
77+
>A : A
78+
>B : B
79+
>C : C
80+
>D : D
81+
82+
let x13: D & E;
83+
>x13 : D & E
84+
>D : D
85+
>E : E
86+
87+
let x14: A & B & C & D & E;
88+
>x14 : A & B & D & E
89+
>A : A
90+
>B : B
91+
>C : C
92+
>D : D
93+
>E : E
94+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Empty object type literals are removed from intersections types
2+
// that contain other object types
3+
4+
type A = { a: number };
5+
type B = { b: string };
6+
type C = {};
7+
8+
let x01: A & B;
9+
let x02: A & C;
10+
let x03: B & C;
11+
let x04: A & B & C;
12+
let x05: string & C;
13+
let x06: C & string;
14+
let x07: C;
15+
let x08: C & {};
16+
let x09: {} & A & {} & B & {} & C & {};
17+
18+
interface D {}
19+
interface E {}
20+
21+
let x10: A & D;
22+
let x11: C & D;
23+
let x12: A & B & C & D;
24+
let x13: D & E;
25+
let x14: A & B & C & D & E;

0 commit comments

Comments
 (0)