@@ -25,195 +25,143 @@ function iteratedUnionIntersection<T, U, V>(t: T, u: U, v: V): void {
2525>result : Symbol(result, Decl(objectSpreadIntersection.ts, 3, 7))
2626>id : Symbol(id, Decl(objectSpreadIntersection.ts, 3, 32))
2727
28- let expected: ({ ...T, ...U, id: string } & { ...T, ...V, id: string }) | ({ ...U, id: string } & { ...U, ...V, id: string });
29- >expected : Symbol(expected, Decl(objectSpreadIntersection.ts, 4, 7))
30- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 0, 35))
31- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 0, 37))
32- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 4, 32))
33- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 0, 35))
34- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 0, 40))
35- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 4, 61))
36- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 0, 37))
37- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 4, 86))
38- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 0, 37))
39- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 0, 40))
40- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 4, 115))
41-
4228 let assignable: { ...(T | U), ...(U & V), id: string } = result;
43- >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 5 , 7))
29+ >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 4 , 7))
4430>T : Symbol(T, Decl(objectSpreadIntersection.ts, 0, 35))
4531>U : Symbol(U, Decl(objectSpreadIntersection.ts, 0, 37))
4632>U : Symbol(U, Decl(objectSpreadIntersection.ts, 0, 37))
4733>V : Symbol(V, Decl(objectSpreadIntersection.ts, 0, 40))
48- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 5 , 45))
34+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 4 , 45))
4935>result : Symbol(result, Decl(objectSpreadIntersection.ts, 3, 7))
5036}
5137// concrete types work
5238interface A1 { a: number }
53- >A1 : Symbol(A1, Decl(objectSpreadIntersection.ts, 6 , 1))
54- >a : Symbol(A1.a, Decl(objectSpreadIntersection.ts, 8 , 14))
39+ >A1 : Symbol(A1, Decl(objectSpreadIntersection.ts, 5 , 1))
40+ >a : Symbol(A1.a, Decl(objectSpreadIntersection.ts, 7 , 14))
5541
5642interface A2 { a: string }
57- >A2 : Symbol(A2, Decl(objectSpreadIntersection.ts, 8 , 26))
58- >a : Symbol(A2.a, Decl(objectSpreadIntersection.ts, 9 , 14))
43+ >A2 : Symbol(A2, Decl(objectSpreadIntersection.ts, 7 , 26))
44+ >a : Symbol(A2.a, Decl(objectSpreadIntersection.ts, 8 , 14))
5945
6046let a12: A1 & A2;
61- >a12 : Symbol(a12, Decl(objectSpreadIntersection.ts, 10 , 3))
62- >A1 : Symbol(A1, Decl(objectSpreadIntersection.ts, 6 , 1))
63- >A2 : Symbol(A2, Decl(objectSpreadIntersection.ts, 8 , 26))
47+ >a12 : Symbol(a12, Decl(objectSpreadIntersection.ts, 9 , 3))
48+ >A1 : Symbol(A1, Decl(objectSpreadIntersection.ts, 5 , 1))
49+ >A2 : Symbol(A2, Decl(objectSpreadIntersection.ts, 7 , 26))
6450
6551let result = { ...a12 };
66- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 11 , 3))
52+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 10 , 3))
6753
6854let sn: number & string = result.a;
69- >sn : Symbol(sn, Decl(objectSpreadIntersection.ts, 12 , 3))
70- >result.a : Symbol(a, Decl(objectSpreadIntersection.ts, 8 , 14), Decl(objectSpreadIntersection.ts, 9 , 14))
71- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 11 , 3))
72- >a : Symbol(a, Decl(objectSpreadIntersection.ts, 8 , 14), Decl(objectSpreadIntersection.ts, 9 , 14))
55+ >sn : Symbol(sn, Decl(objectSpreadIntersection.ts, 11 , 3))
56+ >result.a : Symbol(a, Decl(objectSpreadIntersection.ts, 7 , 14), Decl(objectSpreadIntersection.ts, 8 , 14))
57+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 10 , 3))
58+ >a : Symbol(a, Decl(objectSpreadIntersection.ts, 7 , 14), Decl(objectSpreadIntersection.ts, 8 , 14))
7359
7460let assignable: { ...(A1 & A2) } = result;
75- >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 13 , 3))
76- >A1 : Symbol(A1, Decl(objectSpreadIntersection.ts, 6 , 1))
77- >A2 : Symbol(A2, Decl(objectSpreadIntersection.ts, 8 , 26))
78- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 11 , 3))
61+ >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 12 , 3))
62+ >A1 : Symbol(A1, Decl(objectSpreadIntersection.ts, 5 , 1))
63+ >A2 : Symbol(A2, Decl(objectSpreadIntersection.ts, 7 , 26))
64+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 10 , 3))
7965
8066function tripleIntersection<T, U, V>(t: T, u: U, v: V): void {
81- >tripleIntersection : Symbol(tripleIntersection, Decl(objectSpreadIntersection.ts, 13 , 42))
82- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 15 , 28))
83- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 15 , 30))
84- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 15 , 33))
85- >t : Symbol(t, Decl(objectSpreadIntersection.ts, 15 , 37))
86- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 15 , 28))
87- >u : Symbol(u, Decl(objectSpreadIntersection.ts, 15 , 42))
88- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 15 , 30))
89- >v : Symbol(v, Decl(objectSpreadIntersection.ts, 15 , 48))
90- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 15 , 33))
67+ >tripleIntersection : Symbol(tripleIntersection, Decl(objectSpreadIntersection.ts, 12 , 42))
68+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 14 , 28))
69+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 14 , 30))
70+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 14 , 33))
71+ >t : Symbol(t, Decl(objectSpreadIntersection.ts, 14 , 37))
72+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 14 , 28))
73+ >u : Symbol(u, Decl(objectSpreadIntersection.ts, 14 , 42))
74+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 14 , 30))
75+ >v : Symbol(v, Decl(objectSpreadIntersection.ts, 14 , 48))
76+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 14 , 33))
9177
9278 let tuv: T & U & V;
93- >tuv : Symbol(tuv, Decl(objectSpreadIntersection.ts, 16 , 7))
94- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 15 , 28))
95- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 15 , 30))
96- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 15 , 33))
79+ >tuv : Symbol(tuv, Decl(objectSpreadIntersection.ts, 15 , 7))
80+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 14 , 28))
81+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 14 , 30))
82+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 14 , 33))
9783
9884 let result = { ...tuv, id: 'bar' };
99- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 17, 7))
100- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 17, 26))
101-
102- let expected: { ...T, id: string } & { ...U, id: string } & { ...V, id: string } = result;
103- >expected : Symbol(expected, Decl(objectSpreadIntersection.ts, 18, 7))
104- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 15, 28))
105- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 18, 25))
106- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 15, 30))
107- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 18, 48))
108- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 15, 33))
109- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 18, 71))
110- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 17, 7))
85+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 16, 7))
86+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 16, 26))
11187
11288 let assignable: { ...(T & U & V), id: string } = result;
113- >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 19 , 7))
114- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 15 , 28))
115- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 15 , 30))
116- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 15 , 33))
117- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 19 , 37))
118- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 17 , 7))
89+ >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 17 , 7))
90+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 14 , 28))
91+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 14 , 30))
92+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 14 , 33))
93+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 17 , 37))
94+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 16 , 7))
11995}
12096function iteratedDoubleIntersection<T, U, V>(t: T, u: U, v: V): void {
121- >iteratedDoubleIntersection : Symbol(iteratedDoubleIntersection, Decl(objectSpreadIntersection.ts, 20 , 1))
122- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 21 , 36))
123- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21 , 38))
124- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 21 , 41))
125- >t : Symbol(t, Decl(objectSpreadIntersection.ts, 21 , 45))
126- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 21 , 36))
127- >u : Symbol(u, Decl(objectSpreadIntersection.ts, 21 , 50))
128- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21 , 38))
129- >v : Symbol(v, Decl(objectSpreadIntersection.ts, 21 , 56))
130- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 21 , 41))
97+ >iteratedDoubleIntersection : Symbol(iteratedDoubleIntersection, Decl(objectSpreadIntersection.ts, 18 , 1))
98+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 19 , 36))
99+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 19 , 38))
100+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 19 , 41))
101+ >t : Symbol(t, Decl(objectSpreadIntersection.ts, 19 , 45))
102+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 19 , 36))
103+ >u : Symbol(u, Decl(objectSpreadIntersection.ts, 19 , 50))
104+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 19 , 38))
105+ >v : Symbol(v, Decl(objectSpreadIntersection.ts, 19 , 56))
106+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 19 , 41))
131107
132108 let tu: T & U;
133- >tu : Symbol(tu, Decl(objectSpreadIntersection.ts, 22 , 7))
134- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 21 , 36))
135- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21 , 38))
109+ >tu : Symbol(tu, Decl(objectSpreadIntersection.ts, 20 , 7))
110+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 19 , 36))
111+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 19 , 38))
136112
137113 let uv: U & V;
138- >uv : Symbol(uv, Decl(objectSpreadIntersection.ts, 23 , 7))
139- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21 , 38))
140- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 21 , 41))
114+ >uv : Symbol(uv, Decl(objectSpreadIntersection.ts, 21 , 7))
115+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 19 , 38))
116+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 19 , 41))
141117
142118 let result = { ...tu, ...uv, id: 'baz' };
143- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 24, 7))
144- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 24, 32))
145-
146- let expected: { ...T, ...U, id: string } & { ...T, ...V, id: string } & { ...U, id: string } & { ...U, ...V, id: string };
147- >expected : Symbol(expected, Decl(objectSpreadIntersection.ts, 25, 7))
148- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 21, 36))
149- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21, 38))
150- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 25, 31))
151- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 21, 36))
152- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 21, 41))
153- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 25, 60))
154- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21, 38))
155- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 25, 83))
156- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21, 38))
157- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 21, 41))
158- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 25, 112))
119+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 22, 7))
120+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 22, 32))
159121
160122 let assignable: { ...(T & U), ...(U & V), id: string } = result;
161- >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 26 , 7))
162- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 21 , 36))
163- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21 , 38))
164- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 21 , 38))
165- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 21 , 41))
166- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 26 , 45))
167- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 24 , 7))
123+ >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 23 , 7))
124+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 19 , 36))
125+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 19 , 38))
126+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 19 , 38))
127+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 19 , 41))
128+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 23 , 45))
129+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 22 , 7))
168130}
169131function iteratedIntersectionUnion<T, U, V>(t: T, u: U, v: V): void {
170- >iteratedIntersectionUnion : Symbol(iteratedIntersectionUnion, Decl(objectSpreadIntersection.ts, 27 , 1))
171- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 28 , 35))
172- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28 , 37))
173- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 28 , 40))
174- >t : Symbol(t, Decl(objectSpreadIntersection.ts, 28 , 44))
175- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 28 , 35))
176- >u : Symbol(u, Decl(objectSpreadIntersection.ts, 28 , 49))
177- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28 , 37))
178- >v : Symbol(v, Decl(objectSpreadIntersection.ts, 28 , 55))
179- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 28 , 40))
132+ >iteratedIntersectionUnion : Symbol(iteratedIntersectionUnion, Decl(objectSpreadIntersection.ts, 24 , 1))
133+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 25 , 35))
134+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 25 , 37))
135+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 25 , 40))
136+ >t : Symbol(t, Decl(objectSpreadIntersection.ts, 25 , 44))
137+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 25 , 35))
138+ >u : Symbol(u, Decl(objectSpreadIntersection.ts, 25 , 49))
139+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 25 , 37))
140+ >v : Symbol(v, Decl(objectSpreadIntersection.ts, 25 , 55))
141+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 25 , 40))
180142
181143 let tu: T & U;
182- >tu : Symbol(tu, Decl(objectSpreadIntersection.ts, 29 , 7))
183- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 28 , 35))
184- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28 , 37))
144+ >tu : Symbol(tu, Decl(objectSpreadIntersection.ts, 26 , 7))
145+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 25 , 35))
146+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 25 , 37))
185147
186148 let uv: U | V;
187- >uv : Symbol(uv, Decl(objectSpreadIntersection.ts, 30 , 7))
188- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28 , 37))
189- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 28 , 40))
149+ >uv : Symbol(uv, Decl(objectSpreadIntersection.ts, 27 , 7))
150+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 25 , 37))
151+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 25 , 40))
190152
191153 let result = { ...tu, ...uv, id: 'qux' };
192- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 31, 7))
193- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 31, 32))
194-
195- let expected: ({ ...T, ...U, id: string } & { ...U, id: string }) | ({ ...T, ...V, id: string } & { ...U, ...V, id: string });
196- >expected : Symbol(expected, Decl(objectSpreadIntersection.ts, 32, 7))
197- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 28, 35))
198- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28, 37))
199- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 32, 32))
200- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28, 37))
201- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 32, 55))
202- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 28, 35))
203- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 28, 40))
204- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 32, 86))
205- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28, 37))
206- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 28, 40))
207- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 32, 115))
154+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 28, 7))
155+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 28, 32))
208156
209157 let assignable: { ...(T & U), ...(U | V), id: string } = result;
210- >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 33 , 7))
211- >T : Symbol(T, Decl(objectSpreadIntersection.ts, 28 , 35))
212- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28 , 37))
213- >U : Symbol(U, Decl(objectSpreadIntersection.ts, 28 , 37))
214- >V : Symbol(V, Decl(objectSpreadIntersection.ts, 28 , 40))
215- >id : Symbol(id, Decl(objectSpreadIntersection.ts, 33 , 45))
216- >result : Symbol(result, Decl(objectSpreadIntersection.ts, 31 , 7))
158+ >assignable : Symbol(assignable, Decl(objectSpreadIntersection.ts, 29 , 7))
159+ >T : Symbol(T, Decl(objectSpreadIntersection.ts, 25 , 35))
160+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 25 , 37))
161+ >U : Symbol(U, Decl(objectSpreadIntersection.ts, 25 , 37))
162+ >V : Symbol(V, Decl(objectSpreadIntersection.ts, 25 , 40))
163+ >id : Symbol(id, Decl(objectSpreadIntersection.ts, 29 , 45))
164+ >result : Symbol(result, Decl(objectSpreadIntersection.ts, 28 , 7))
217165}
218166
219167
0 commit comments