@@ -26,3 +26,162 @@ export const yThen = y.map(item => item.length);
2626>item : Symbol(item, Decl(two.ts, 1, 27))
2727>length : Symbol(length, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
2828
29+ === tests/cases/compiler/three.ts ===
30+ // #42504
31+ interface ResizeObserverCallback {
32+ >ResizeObserverCallback : Symbol(ResizeObserverCallback, Decl(three.ts, 0, 0), Decl(three.ts, 3, 1))
33+
34+ (entries: ResizeObserverEntry[], observer: ResizeObserver): void;
35+ >entries : Symbol(entries, Decl(three.ts, 2, 5))
36+ >ResizeObserverEntry : Symbol(ResizeObserverEntry, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
37+ >observer : Symbol(observer, Decl(three.ts, 2, 36))
38+ >ResizeObserver : Symbol(ResizeObserver, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
39+ }
40+ interface ResizeObserverCallback { // duplicate for effect
41+ >ResizeObserverCallback : Symbol(ResizeObserverCallback, Decl(three.ts, 0, 0), Decl(three.ts, 3, 1))
42+
43+ (entries: ResizeObserverEntry[], observer: ResizeObserver): void;
44+ >entries : Symbol(entries, Decl(three.ts, 5, 5))
45+ >ResizeObserverEntry : Symbol(ResizeObserverEntry, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
46+ >observer : Symbol(observer, Decl(three.ts, 5, 36))
47+ >ResizeObserver : Symbol(ResizeObserver, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
48+ }
49+
50+ const resizeObserver = new ResizeObserver(([entry]) => {
51+ >resizeObserver : Symbol(resizeObserver, Decl(three.ts, 8, 5))
52+ >ResizeObserver : Symbol(ResizeObserver, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
53+ >entry : Symbol(entry, Decl(three.ts, 8, 44))
54+
55+ entry
56+ >entry : Symbol(entry, Decl(three.ts, 8, 44))
57+
58+ });
59+ // comment in #35501
60+ interface Callback<T> {
61+ >Callback : Symbol(Callback, Decl(three.ts, 10, 3))
62+ >T : Symbol(T, Decl(three.ts, 12, 19))
63+
64+ (error: null, result: T): unknown
65+ >error : Symbol(error, Decl(three.ts, 13, 5))
66+ >result : Symbol(result, Decl(three.ts, 13, 17))
67+ >T : Symbol(T, Decl(three.ts, 12, 19))
68+
69+ (error: Error, result: null): unknown
70+ >error : Symbol(error, Decl(three.ts, 14, 5))
71+ >Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
72+ >result : Symbol(result, Decl(three.ts, 14, 18))
73+ }
74+
75+ interface Task<T> {
76+ >Task : Symbol(Task, Decl(three.ts, 15, 1))
77+ >T : Symbol(T, Decl(three.ts, 17, 15))
78+
79+ (callback: Callback<T>): unknown
80+ >callback : Symbol(callback, Decl(three.ts, 18, 5))
81+ >Callback : Symbol(Callback, Decl(three.ts, 10, 3))
82+ >T : Symbol(T, Decl(three.ts, 17, 15))
83+ }
84+
85+ export function series<T>(tasks: Task<T>[], callback: Callback<T[]>): void {
86+ >series : Symbol(series, Decl(three.ts, 19, 1))
87+ >T : Symbol(T, Decl(three.ts, 21, 23))
88+ >tasks : Symbol(tasks, Decl(three.ts, 21, 26))
89+ >Task : Symbol(Task, Decl(three.ts, 15, 1))
90+ >T : Symbol(T, Decl(three.ts, 21, 23))
91+ >callback : Symbol(callback, Decl(three.ts, 21, 43))
92+ >Callback : Symbol(Callback, Decl(three.ts, 10, 3))
93+ >T : Symbol(T, Decl(three.ts, 21, 23))
94+
95+ let index = 0
96+ >index : Symbol(index, Decl(three.ts, 22, 7))
97+
98+ let results: T[] = []
99+ >results : Symbol(results, Decl(three.ts, 23, 7))
100+ >T : Symbol(T, Decl(three.ts, 21, 23))
101+
102+ function next() {
103+ >next : Symbol(next, Decl(three.ts, 23, 25))
104+
105+ let task = tasks[index]
106+ >task : Symbol(task, Decl(three.ts, 26, 11))
107+ >tasks : Symbol(tasks, Decl(three.ts, 21, 26))
108+ >index : Symbol(index, Decl(three.ts, 22, 7))
109+
110+ if (!task) {
111+ >task : Symbol(task, Decl(three.ts, 26, 11))
112+
113+ callback(null, results)
114+ >callback : Symbol(callback, Decl(three.ts, 21, 43))
115+ >results : Symbol(results, Decl(three.ts, 23, 7))
116+
117+ } else {
118+ task((error, result) => {
119+ >task : Symbol(task, Decl(three.ts, 26, 11))
120+ >error : Symbol(error, Decl(three.ts, 30, 18))
121+ >result : Symbol(result, Decl(three.ts, 30, 24))
122+
123+ if (error) {
124+ >error : Symbol(error, Decl(three.ts, 30, 18))
125+
126+ callback(error, null)
127+ >callback : Symbol(callback, Decl(three.ts, 21, 43))
128+ >error : Symbol(error, Decl(three.ts, 30, 18))
129+
130+ } else {
131+ // must use postfix-!, since `error` and `result` don't have a
132+ // causal relationship when the overloads are combined
133+ results.push(result!)
134+ >results.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --))
135+ >results : Symbol(results, Decl(three.ts, 23, 7))
136+ >push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --))
137+ >result : Symbol(result, Decl(three.ts, 30, 24))
138+
139+ next()
140+ >next : Symbol(next, Decl(three.ts, 23, 25))
141+ }
142+ })
143+ }
144+ }
145+ next()
146+ >next : Symbol(next, Decl(three.ts, 23, 25))
147+ }
148+
149+ series([
150+ >series : Symbol(series, Decl(three.ts, 19, 1))
151+
152+ cb => setTimeout(() => cb(null, 1), 300),
153+ >cb : Symbol(cb, Decl(three.ts, 45, 8))
154+ >setTimeout : Symbol(setTimeout, Decl(lib.dom.d.ts, --, --))
155+ >cb : Symbol(cb, Decl(three.ts, 45, 8))
156+
157+ cb => setTimeout(() => cb(null, 2), 200),
158+ >cb : Symbol(cb, Decl(three.ts, 46, 45))
159+ >setTimeout : Symbol(setTimeout, Decl(lib.dom.d.ts, --, --))
160+ >cb : Symbol(cb, Decl(three.ts, 46, 45))
161+
162+ cb => setTimeout(() => cb(null, 3), 100),
163+ >cb : Symbol(cb, Decl(three.ts, 47, 45))
164+ >setTimeout : Symbol(setTimeout, Decl(lib.dom.d.ts, --, --))
165+ >cb : Symbol(cb, Decl(three.ts, 47, 45))
166+
167+ ], (error, results) => {
168+ >error : Symbol(error, Decl(three.ts, 49, 4))
169+ >results : Symbol(results, Decl(three.ts, 49, 10))
170+
171+ if (error) {
172+ >error : Symbol(error, Decl(three.ts, 49, 4))
173+
174+ console.error(error)
175+ >console.error : Symbol(Console.error, Decl(lib.dom.d.ts, --, --))
176+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
177+ >error : Symbol(Console.error, Decl(lib.dom.d.ts, --, --))
178+ >error : Symbol(error, Decl(three.ts, 49, 4))
179+
180+ } else {
181+ console.log(results)
182+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
183+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
184+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
185+ >results : Symbol(results, Decl(three.ts, 49, 10))
186+ }
187+ })
0 commit comments