Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0b5284d

Browse filesBrowse files
committed
Add tests
1 parent bea20a9 commit 0b5284d
Copy full SHA for 0b5284d

4 files changed

+258Lines changed: 258 additions & 0 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file
+45Lines 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;
Collapse file
+94Lines 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+
Collapse file
+94Lines 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+
Collapse file
+25Lines 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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.