Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: lib/runtime/dart/async.js

Issue 1052693004: move => bind this workaround to js_ast (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/runtime/dart/_js_helper.js ('k') | lib/runtime/dart/collection.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 var async; 1 var async;
2 (function(exports) { 2 (function(exports) {
3 'use strict'; 3 'use strict';
4 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic 4 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic
5 function _invokeErrorHandler(errorHandler, error, stackTrace) { 5 function _invokeErrorHandler(errorHandler, error, stackTrace) {
6 if (dart.is(errorHandler, ZoneBinaryCallback)) { 6 if (dart.is(errorHandler, ZoneBinaryCallback)) {
7 return dart.dinvokef(errorHandler, error, stackTrace); 7 return dart.dinvokef(errorHandler, error, stackTrace);
8 } else { 8 } else {
9 return dart.dinvokef(errorHandler, error); 9 return dart.dinvokef(errorHandler, error);
10 } 10 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 let _addError = Symbol('_addError'); 54 let _addError = Symbol('_addError');
55 let _completeError = Symbol('_completeError'); 55 let _completeError = Symbol('_completeError');
56 let _complete = Symbol('_complete'); 56 let _complete = Symbol('_complete');
57 let _sink = Symbol('_sink'); 57 let _sink = Symbol('_sink');
58 let Stream$ = dart.generic(function(T) { 58 let Stream$ = dart.generic(function(T) {
59 class Stream extends core.Object { 59 class Stream extends core.Object {
60 Stream() { 60 Stream() {
61 } 61 }
62 fromFuture(future) { 62 fromFuture(future) {
63 let controller = new (StreamController$(T))({sync: true}); 63 let controller = new (StreamController$(T))({sync: true});
64 future.then(dart.closureWrap(((value) => { 64 future.then(dart.closureWrap((value) => {
65 controller._add(dart.as(value, T)); 65 controller._add(dart.as(value, T));
66 controller._closeUnchecked(); 66 controller._closeUnchecked();
67 }).bind(this), "(T) → dynamic"), {onError: ((error, stackTrace) => { 67 }, "(T) → dynamic"), {
68 onError: (error, stackTrace) => {
68 controller._addError(error, dart.as(stackTrace, core.StackTrace)); 69 controller._addError(error, dart.as(stackTrace, core.StackTrace));
69 controller._closeUnchecked(); 70 controller._closeUnchecked();
70 }).bind(this)}); 71 }
72 });
71 return controller.stream; 73 return controller.stream;
72 } 74 }
73 fromIterable(data) { 75 fromIterable(data) {
74 return new (_GeneratedStreamImpl$(T))(() => new (_IterablePendingEvents$ (T))(data)); 76 return new (_GeneratedStreamImpl$(T))(() => new (_IterablePendingEvents$ (T))(data));
75 } 77 }
76 periodic(period, computation) { 78 periodic(period, computation) {
77 if (computation === void 0) 79 if (computation === void 0)
78 computation = null; 80 computation = null;
79 if (computation == null) 81 if (computation == null)
80 computation = dart.closureWrap((i) => null, "(int) → T"); 82 computation = dart.closureWrap((i) => null, "(int) → T");
81 let timer = null; 83 let timer = null;
82 let computationCount = 0; 84 let computationCount = 0;
83 let controller = null; 85 let controller = null;
84 let watch = new core.Stopwatch(); 86 let watch = new core.Stopwatch();
85 // Function sendEvent: () → void 87 // Function sendEvent: () → void
86 function sendEvent() { 88 function sendEvent() {
87 watch.reset(); 89 watch.reset();
88 let data = computation(((x) => computationCount = dart.notNull(x) + 1, x)(computationCount)); 90 let data = computation(((x) => computationCount = dart.notNull(x) + 1, x)(computationCount));
89 controller.add(data); 91 controller.add(data);
90 } 92 }
91 // Function startPeriodicTimer: () → void 93 // Function startPeriodicTimer: () → void
92 function startPeriodicTimer() { 94 function startPeriodicTimer() {
93 dart.assert(timer == null); 95 dart.assert(timer == null);
94 timer = new Timer.periodic(period, (timer) => { 96 timer = new Timer.periodic(period, (timer) => {
95 sendEvent(); 97 sendEvent();
96 }); 98 });
97 } 99 }
98 controller = new (StreamController$(T))({sync: true, onListen: (() => { 100 controller = new (StreamController$(T))({
101 sync: true,
102 onListen: () => {
99 watch.start(); 103 watch.start();
100 startPeriodicTimer(); 104 startPeriodicTimer();
101 }).bind(this), onPause: (() => { 105 },
106 onPause: () => {
102 timer.cancel(); 107 timer.cancel();
103 timer = null; 108 timer = null;
104 watch.stop(); 109 watch.stop();
105 }).bind(this), onResume: (() => { 110 },
111 onResume: () => {
106 dart.assert(timer == null); 112 dart.assert(timer == null);
107 let elapsed = watch.elapsed; 113 let elapsed = watch.elapsed;
108 watch.start(); 114 watch.start();
109 timer = new Timer(period['-'](elapsed), () => { 115 timer = new Timer(period['-'](elapsed), () => {
110 timer = null; 116 timer = null;
111 startPeriodicTimer(); 117 startPeriodicTimer();
112 sendEvent(); 118 sendEvent();
113 }); 119 });
114 }).bind(this), onCancel: (() => { 120 },
121 onCancel: () => {
115 if (timer != null) 122 if (timer != null)
116 timer.cancel(); 123 timer.cancel();
117 timer = null; 124 timer = null;
118 }).bind(this)}); 125 }
126 });
119 return controller.stream; 127 return controller.stream;
120 } 128 }
121 eventTransformed(source, mapSink) { 129 eventTransformed(source, mapSink) {
122 return dart.as(new _BoundSinkStream(source, dart.closureWrap(mapSink, "( EventSink<dynamic>) → EventSink")), Stream$(T)); 130 return dart.as(new _BoundSinkStream(source, dart.closureWrap(mapSink, "( EventSink<dynamic>) → EventSink")), Stream$(T));
123 } 131 }
124 get isBroadcast() { 132 get isBroadcast() {
125 return false; 133 return false;
126 } 134 }
127 asBroadcastStream(opts) { 135 asBroadcastStream(opts) {
128 let onListen = opts && 'onListen' in opts ? opts.onListen : null; 136 let onListen = opts && 'onListen' in opts ? opts.onListen : null;
129 let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null; 137 let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
130 return new (_AsBroadcastStream$(T))(this, dart.closureWrap(onListen, "(S treamSubscription<dynamic>) → void"), dart.closureWrap(onCancel, "(StreamSubscri ption<dynamic>) → void")); 138 return new (_AsBroadcastStream$(T))(this, dart.closureWrap(onListen, "(S treamSubscription<dynamic>) → void"), dart.closureWrap(onCancel, "(StreamSubscri ption<dynamic>) → void"));
131 } 139 }
132 where(test) { 140 where(test) {
133 return new (_WhereStream$(T))(this, test); 141 return new (_WhereStream$(T))(this, test);
134 } 142 }
135 map(convert) { 143 map(convert) {
136 return new (_MapStream$(T, dynamic))(this, convert); 144 return new (_MapStream$(T, dynamic))(this, convert);
137 } 145 }
138 asyncMap(convert) { 146 asyncMap(convert) {
139 let controller = null; 147 let controller = null;
140 let subscription = null; 148 let subscription = null;
141 // Function onListen: () → void 149 // Function onListen: () → void
142 function onListen() { 150 function onListen() {
143 let add = controller.add; 151 let add = controller.add;
144 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController))); 152 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController)));
145 let eventSink = controller; 153 let eventSink = controller;
146 let addError = eventSink[_addError]; 154 let addError = eventSink[_addError];
147 subscription = this.listen(((event) => { 155 subscription = this.listen((event) => {
148 let newValue = null; 156 let newValue = null;
149 try { 157 try {
150 newValue = convert(event); 158 newValue = convert(event);
151 } catch (e) { 159 } catch (e) {
152 let s = dart.stackTrace(e); 160 let s = dart.stackTrace(e);
153 controller.addError(e, s); 161 controller.addError(e, s);
154 return; 162 return;
155 } 163 }
156 164
157 if (dart.is(newValue, Future)) { 165 if (dart.is(newValue, Future)) {
158 subscription.pause(); 166 subscription.pause();
159 dart.dinvoke(dart.dinvoke(newValue, 'then', add, {onError: addErro r}), 'whenComplete', subscription.resume); 167 dart.dinvoke(dart.dinvoke(newValue, 'then', add, {onError: addErro r}), 'whenComplete', subscription.resume);
160 } else { 168 } else {
161 controller.add(newValue); 169 controller.add(newValue);
162 } 170 }
163 }).bind(this), {onError: dart.as(addError, core.Function), onDone: con troller.close}); 171 }, {onError: dart.as(addError, core.Function), onDone: controller.clos e});
164 } 172 }
165 if (this.isBroadcast) { 173 if (this.isBroadcast) {
166 controller = new StreamController.broadcast({onListen: onListen, onCan cel: (() => { 174 controller = new StreamController.broadcast({
175 onListen: onListen,
176 onCancel: () => {
167 subscription.cancel(); 177 subscription.cancel();
168 }).bind(this), sync: true}); 178 },
179 sync: true
180 });
169 } else { 181 } else {
170 controller = new StreamController({onListen: onListen, onPause: (() => { 182 controller = new StreamController({
183 onListen: onListen,
184 onPause: () => {
171 subscription.pause(); 185 subscription.pause();
172 }).bind(this), onResume: (() => { 186 },
187 onResume: () => {
173 subscription.resume(); 188 subscription.resume();
174 }).bind(this), onCancel: (() => { 189 },
190 onCancel: () => {
175 subscription.cancel(); 191 subscription.cancel();
176 }).bind(this), sync: true}); 192 },
193 sync: true
194 });
177 } 195 }
178 return controller.stream; 196 return controller.stream;
179 } 197 }
180 asyncExpand(convert) { 198 asyncExpand(convert) {
181 let controller = null; 199 let controller = null;
182 let subscription = null; 200 let subscription = null;
183 // Function onListen: () → void 201 // Function onListen: () → void
184 function onListen() { 202 function onListen() {
185 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController))); 203 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController)));
186 let eventSink = controller; 204 let eventSink = controller;
187 subscription = this.listen(((event) => { 205 subscription = this.listen((event) => {
188 let newStream = null; 206 let newStream = null;
189 try { 207 try {
190 newStream = convert(event); 208 newStream = convert(event);
191 } catch (e) { 209 } catch (e) {
192 let s = dart.stackTrace(e); 210 let s = dart.stackTrace(e);
193 controller.addError(e, s); 211 controller.addError(e, s);
194 return; 212 return;
195 } 213 }
196 214
197 if (newStream != null) { 215 if (newStream != null) {
198 subscription.pause(); 216 subscription.pause();
199 controller.addStream(newStream).whenComplete(subscription.resume); 217 controller.addStream(newStream).whenComplete(subscription.resume);
200 } 218 }
201 }).bind(this), {onError: dart.as(eventSink[_addError], core.Function), onDone: controller.close}); 219 }, {onError: dart.as(eventSink[_addError], core.Function), onDone: con troller.close});
202 } 220 }
203 if (this.isBroadcast) { 221 if (this.isBroadcast) {
204 controller = new StreamController.broadcast({onListen: onListen, onCan cel: (() => { 222 controller = new StreamController.broadcast({
223 onListen: onListen,
224 onCancel: () => {
205 subscription.cancel(); 225 subscription.cancel();
206 }).bind(this), sync: true}); 226 },
227 sync: true
228 });
207 } else { 229 } else {
208 controller = new StreamController({onListen: onListen, onPause: (() => { 230 controller = new StreamController({
231 onListen: onListen,
232 onPause: () => {
209 subscription.pause(); 233 subscription.pause();
210 }).bind(this), onResume: (() => { 234 },
235 onResume: () => {
211 subscription.resume(); 236 subscription.resume();
212 }).bind(this), onCancel: (() => { 237 },
238 onCancel: () => {
213 subscription.cancel(); 239 subscription.cancel();
214 }).bind(this), sync: true}); 240 },
241 sync: true
242 });
215 } 243 }
216 return controller.stream; 244 return controller.stream;
217 } 245 }
218 handleError(onError, opts) { 246 handleError(onError, opts) {
219 let test = opts && 'test' in opts ? opts.test : null; 247 let test = opts && 'test' in opts ? opts.test : null;
220 return new (_HandleErrorStream$(T))(this, onError, test); 248 return new (_HandleErrorStream$(T))(this, onError, test);
221 } 249 }
222 expand(convert) { 250 expand(convert) {
223 return new (_ExpandStream$(T, dynamic))(this, convert); 251 return new (_ExpandStream$(T, dynamic))(this, convert);
224 } 252 }
225 pipe(streamConsumer) { 253 pipe(streamConsumer) {
226 return streamConsumer.addStream(this).then(((_) => streamConsumer.close( )).bind(this)); 254 return streamConsumer.addStream(this).then((_) => streamConsumer.close() );
227 } 255 }
228 transform(streamTransformer) { 256 transform(streamTransformer) {
229 return streamTransformer.bind(this); 257 return streamTransformer.bind(this);
230 } 258 }
231 reduce(combine) { 259 reduce(combine) {
232 let result = new (_Future$(T))(); 260 let result = new (_Future$(T))();
233 let seenFirst = false; 261 let seenFirst = false;
234 let value = null; 262 let value = null;
235 let subscription = null; 263 let subscription = null;
236 subscription = this.listen((element) => { 264 subscription = this.listen((element) => {
237 if (seenFirst) { 265 if (seenFirst) {
238 _runUserCode(() => combine(value, element), (newValue) => { 266 _runUserCode(() => combine(value, element), (newValue) => {
239 value = newValue; 267 value = newValue;
240 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_ ("Unimplemented type (dynamic, StackTrace) → dynamic"))); 268 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_ ("Unimplemented type (dynamic, StackTrace) → dynamic")));
241 } else { 269 } else {
242 value = element; 270 value = element;
243 seenFirst = true; 271 seenFirst = true;
244 } 272 }
245 }, {onError: result[_completeError], onDone: (() => { 273 }, {
274 onError: result[_completeError],
275 onDone: () => {
246 if (!dart.notNull(seenFirst)) { 276 if (!dart.notNull(seenFirst)) {
247 try { 277 try {
248 throw _internal.IterableElementError.noElement(); 278 throw _internal.IterableElementError.noElement();
249 } catch (e) { 279 } catch (e) {
250 let s = dart.stackTrace(e); 280 let s = dart.stackTrace(e);
251 _completeWithErrorCallback(result, e, s); 281 _completeWithErrorCallback(result, e, s);
252 } 282 }
253 283
254 } else { 284 } else {
255 result._complete(value); 285 result._complete(value);
256 } 286 }
257 }).bind(this), cancelOnError: true}); 287 },
288 cancelOnError: true
289 });
258 return result; 290 return result;
259 } 291 }
260 fold(initialValue, combine) { 292 fold(initialValue, combine) {
261 let result = new _Future(); 293 let result = new _Future();
262 let value = initialValue; 294 let value = initialValue;
263 let subscription = null; 295 let subscription = null;
264 subscription = this.listen((element) => { 296 subscription = this.listen((element) => {
265 _runUserCode(() => dart.dinvokef(combine, value, element), (newValue) => { 297 _runUserCode(() => dart.dinvokef(combine, value, element), (newValue) => {
266 value = newValue; 298 value = newValue;
267 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 299 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
268 }, {onError: ((e, st) => { 300 }, {
301 onError: (e, st) => {
269 result._completeError(e, dart.as(st, core.StackTrace)); 302 result._completeError(e, dart.as(st, core.StackTrace));
270 }).bind(this), onDone: (() => { 303 },
304 onDone: () => {
271 result._complete(value); 305 result._complete(value);
272 }).bind(this), cancelOnError: true}); 306 },
307 cancelOnError: true
308 });
273 return result; 309 return result;
274 } 310 }
275 join(separator) { 311 join(separator) {
276 if (separator === void 0) 312 if (separator === void 0)
277 separator = ""; 313 separator = "";
278 let result = new (_Future$(core.String))(); 314 let result = new (_Future$(core.String))();
279 let buffer = new core.StringBuffer(); 315 let buffer = new core.StringBuffer();
280 let subscription = null; 316 let subscription = null;
281 let first = true; 317 let first = true;
282 subscription = this.listen(((element) => { 318 subscription = this.listen((element) => {
283 if (!dart.notNull(first)) { 319 if (!dart.notNull(first)) {
284 buffer.write(separator); 320 buffer.write(separator);
285 } 321 }
286 first = false; 322 first = false;
287 try { 323 try {
288 buffer.write(element); 324 buffer.write(element);
289 } catch (e) { 325 } catch (e) {
290 let s = dart.stackTrace(e); 326 let s = dart.stackTrace(e);
291 _cancelAndErrorWithReplacement(subscription, result, e, s); 327 _cancelAndErrorWithReplacement(subscription, result, e, s);
292 } 328 }
293 329
294 }).bind(this), {onError: ((e) => { 330 }, {
331 onError: (e) => {
295 result._completeError(e); 332 result._completeError(e);
296 }).bind(this), onDone: (() => { 333 },
334 onDone: () => {
297 result._complete(buffer.toString()); 335 result._complete(buffer.toString());
298 }).bind(this), cancelOnError: true}); 336 },
337 cancelOnError: true
338 });
299 return result; 339 return result;
300 } 340 }
301 contains(needle) { 341 contains(needle) {
302 let future = new (_Future$(core.bool))(); 342 let future = new (_Future$(core.bool))();
303 let subscription = null; 343 let subscription = null;
304 subscription = this.listen((element) => { 344 subscription = this.listen((element) => {
305 _runUserCode(() => dart.equals(element, needle), (isMatch) => { 345 _runUserCode(() => dart.equals(element, needle), (isMatch) => {
306 if (isMatch) { 346 if (isMatch) {
307 _cancelAndValue(subscription, future, true); 347 _cancelAndValue(subscription, future, true);
308 } 348 }
309 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 349 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
310 }, {onError: future[_completeError], onDone: (() => { 350 }, {
351 onError: future[_completeError],
352 onDone: () => {
311 future._complete(false); 353 future._complete(false);
312 }).bind(this), cancelOnError: true}); 354 },
355 cancelOnError: true
356 });
313 return future; 357 return future;
314 } 358 }
315 forEach(action) { 359 forEach(action) {
316 let future = new _Future(); 360 let future = new _Future();
317 let subscription = null; 361 let subscription = null;
318 subscription = this.listen((element) => { 362 subscription = this.listen((element) => {
319 _runUserCode(() => action(element), (_) => { 363 _runUserCode(() => action(element), (_) => {
320 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 364 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
321 }, {onError: future[_completeError], onDone: (() => { 365 }, {
366 onError: future[_completeError],
367 onDone: () => {
322 future._complete(null); 368 future._complete(null);
323 }).bind(this), cancelOnError: true}); 369 },
370 cancelOnError: true
371 });
324 return future; 372 return future;
325 } 373 }
326 every(test) { 374 every(test) {
327 let future = new (_Future$(core.bool))(); 375 let future = new (_Future$(core.bool))();
328 let subscription = null; 376 let subscription = null;
329 subscription = this.listen((element) => { 377 subscription = this.listen((element) => {
330 _runUserCode(() => test(element), (isMatch) => { 378 _runUserCode(() => test(element), (isMatch) => {
331 if (!dart.notNull(isMatch)) { 379 if (!dart.notNull(isMatch)) {
332 _cancelAndValue(subscription, future, false); 380 _cancelAndValue(subscription, future, false);
333 } 381 }
334 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 382 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
335 }, {onError: future[_completeError], onDone: (() => { 383 }, {
384 onError: future[_completeError],
385 onDone: () => {
336 future._complete(true); 386 future._complete(true);
337 }).bind(this), cancelOnError: true}); 387 },
388 cancelOnError: true
389 });
338 return future; 390 return future;
339 } 391 }
340 any(test) { 392 any(test) {
341 let future = new (_Future$(core.bool))(); 393 let future = new (_Future$(core.bool))();
342 let subscription = null; 394 let subscription = null;
343 subscription = this.listen((element) => { 395 subscription = this.listen((element) => {
344 _runUserCode(() => test(element), (isMatch) => { 396 _runUserCode(() => test(element), (isMatch) => {
345 if (isMatch) { 397 if (isMatch) {
346 _cancelAndValue(subscription, future, true); 398 _cancelAndValue(subscription, future, true);
347 } 399 }
348 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 400 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
349 }, {onError: future[_completeError], onDone: (() => { 401 }, {
402 onError: future[_completeError],
403 onDone: () => {
350 future._complete(false); 404 future._complete(false);
351 }).bind(this), cancelOnError: true}); 405 },
406 cancelOnError: true
407 });
352 return future; 408 return future;
353 } 409 }
354 get length() { 410 get length() {
355 let future = new (_Future$(core.int))(); 411 let future = new (_Future$(core.int))();
356 let count = 0; 412 let count = 0;
357 this.listen(dart.closureWrap((_) => { 413 this.listen(dart.closureWrap((_) => {
358 count = dart.notNull(count) + 1; 414 count = dart.notNull(count) + 1;
359 }, "(T) → void"), {onError: future[_completeError], onDone: (() => { 415 }, "(T) → void"), {
416 onError: future[_completeError],
417 onDone: () => {
360 future._complete(count); 418 future._complete(count);
361 }).bind(this), cancelOnError: true}); 419 },
420 cancelOnError: true
421 });
362 return future; 422 return future;
363 } 423 }
364 get isEmpty() { 424 get isEmpty() {
365 let future = new (_Future$(core.bool))(); 425 let future = new (_Future$(core.bool))();
366 let subscription = null; 426 let subscription = null;
367 subscription = this.listen(dart.closureWrap((_) => { 427 subscription = this.listen(dart.closureWrap((_) => {
368 _cancelAndValue(subscription, future, false); 428 _cancelAndValue(subscription, future, false);
369 }, "(T) → void"), {onError: future[_completeError], onDone: (() => { 429 }, "(T) → void"), {
430 onError: future[_completeError],
431 onDone: () => {
370 future._complete(true); 432 future._complete(true);
371 }).bind(this), cancelOnError: true}); 433 },
434 cancelOnError: true
435 });
372 return future; 436 return future;
373 } 437 }
374 toList() { 438 toList() {
375 let result = new core.List$(T).from([]); 439 let result = new core.List$(T).from([]);
376 let future = new (_Future$(core.List$(T)))(); 440 let future = new (_Future$(core.List$(T)))();
377 this.listen(((data) => { 441 this.listen((data) => {
378 result.add(data); 442 result.add(data);
379 }).bind(this), {onError: future[_completeError], onDone: (() => { 443 }, {
444 onError: future[_completeError],
445 onDone: () => {
380 future._complete(result); 446 future._complete(result);
381 }).bind(this), cancelOnError: true}); 447 },
448 cancelOnError: true
449 });
382 return future; 450 return future;
383 } 451 }
384 toSet() { 452 toSet() {
385 let result = new (core.Set$(T))(); 453 let result = new (core.Set$(T))();
386 let future = new (_Future$(core.Set$(T)))(); 454 let future = new (_Future$(core.Set$(T)))();
387 this.listen(((data) => { 455 this.listen((data) => {
388 result.add(data); 456 result.add(data);
389 }).bind(this), {onError: future[_completeError], onDone: (() => { 457 }, {
458 onError: future[_completeError],
459 onDone: () => {
390 future._complete(result); 460 future._complete(result);
391 }).bind(this), cancelOnError: true}); 461 },
462 cancelOnError: true
463 });
392 return future; 464 return future;
393 } 465 }
394 drain(futureValue) { 466 drain(futureValue) {
395 if (futureValue === void 0) 467 if (futureValue === void 0)
396 futureValue = null; 468 futureValue = null;
397 return this.listen(null, {cancelOnError: true}).asFuture(futureValue); 469 return this.listen(null, {cancelOnError: true}).asFuture(futureValue);
398 } 470 }
399 take(count) { 471 take(count) {
400 return dart.as(new _TakeStream(this, count), Stream$(T)); 472 return dart.as(new _TakeStream(this, count), Stream$(T));
401 } 473 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 return future; 506 return future;
435 } 507 }
436 get last() { 508 get last() {
437 let future = new (_Future$(T))(); 509 let future = new (_Future$(T))();
438 let result = null; 510 let result = null;
439 let foundResult = false; 511 let foundResult = false;
440 let subscription = null; 512 let subscription = null;
441 subscription = this.listen((value) => { 513 subscription = this.listen((value) => {
442 foundResult = true; 514 foundResult = true;
443 result = value; 515 result = value;
444 }, {onError: future[_completeError], onDone: (() => { 516 }, {
517 onError: future[_completeError],
518 onDone: () => {
445 if (foundResult) { 519 if (foundResult) {
446 future._complete(result); 520 future._complete(result);
447 return; 521 return;
448 } 522 }
449 try { 523 try {
450 throw _internal.IterableElementError.noElement(); 524 throw _internal.IterableElementError.noElement();
451 } catch (e) { 525 } catch (e) {
452 let s = dart.stackTrace(e); 526 let s = dart.stackTrace(e);
453 _completeWithErrorCallback(future, e, s); 527 _completeWithErrorCallback(future, e, s);
454 } 528 }
455 529
456 }).bind(this), cancelOnError: true}); 530 },
531 cancelOnError: true
532 });
457 return future; 533 return future;
458 } 534 }
459 get single() { 535 get single() {
460 let future = new (_Future$(T))(); 536 let future = new (_Future$(T))();
461 let result = null; 537 let result = null;
462 let foundResult = false; 538 let foundResult = false;
463 let subscription = null; 539 let subscription = null;
464 subscription = this.listen((value) => { 540 subscription = this.listen((value) => {
465 if (foundResult) { 541 if (foundResult) {
466 try { 542 try {
467 throw _internal.IterableElementError.tooMany(); 543 throw _internal.IterableElementError.tooMany();
468 } catch (e) { 544 } catch (e) {
469 let s = dart.stackTrace(e); 545 let s = dart.stackTrace(e);
470 _cancelAndErrorWithReplacement(subscription, future, e, s); 546 _cancelAndErrorWithReplacement(subscription, future, e, s);
471 } 547 }
472 548
473 return; 549 return;
474 } 550 }
475 foundResult = true; 551 foundResult = true;
476 result = value; 552 result = value;
477 }, {onError: future[_completeError], onDone: (() => { 553 }, {
554 onError: future[_completeError],
555 onDone: () => {
478 if (foundResult) { 556 if (foundResult) {
479 future._complete(result); 557 future._complete(result);
480 return; 558 return;
481 } 559 }
482 try { 560 try {
483 throw _internal.IterableElementError.noElement(); 561 throw _internal.IterableElementError.noElement();
484 } catch (e) { 562 } catch (e) {
485 let s = dart.stackTrace(e); 563 let s = dart.stackTrace(e);
486 _completeWithErrorCallback(future, e, s); 564 _completeWithErrorCallback(future, e, s);
487 } 565 }
488 566
489 }).bind(this), cancelOnError: true}); 567 },
568 cancelOnError: true
569 });
490 return future; 570 return future;
491 } 571 }
492 firstWhere(test, opts) { 572 firstWhere(test, opts) {
493 let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null; 573 let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
494 let future = new _Future(); 574 let future = new _Future();
495 let subscription = null; 575 let subscription = null;
496 subscription = this.listen((value) => { 576 subscription = this.listen((value) => {
497 _runUserCode(() => test(value), (isMatch) => { 577 _runUserCode(() => test(value), (isMatch) => {
498 if (isMatch) { 578 if (isMatch) {
499 _cancelAndValue(subscription, future, value); 579 _cancelAndValue(subscription, future, value);
500 } 580 }
501 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 581 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
502 }, {onError: future[_completeError], onDone: (() => { 582 }, {
583 onError: future[_completeError],
584 onDone: () => {
503 if (defaultValue != null) { 585 if (defaultValue != null) {
504 _runUserCode(defaultValue, future[_complete], future[_completeErro r]); 586 _runUserCode(defaultValue, future[_complete], future[_completeErro r]);
505 return; 587 return;
506 } 588 }
507 try { 589 try {
508 throw _internal.IterableElementError.noElement(); 590 throw _internal.IterableElementError.noElement();
509 } catch (e) { 591 } catch (e) {
510 let s = dart.stackTrace(e); 592 let s = dart.stackTrace(e);
511 _completeWithErrorCallback(future, e, s); 593 _completeWithErrorCallback(future, e, s);
512 } 594 }
513 595
514 }).bind(this), cancelOnError: true}); 596 },
597 cancelOnError: true
598 });
515 return future; 599 return future;
516 } 600 }
517 lastWhere(test, opts) { 601 lastWhere(test, opts) {
518 let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null; 602 let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
519 let future = new _Future(); 603 let future = new _Future();
520 let result = null; 604 let result = null;
521 let foundResult = false; 605 let foundResult = false;
522 let subscription = null; 606 let subscription = null;
523 subscription = this.listen((value) => { 607 subscription = this.listen((value) => {
524 _runUserCode(() => true == test(value), (isMatch) => { 608 _runUserCode(() => true == test(value), (isMatch) => {
525 if (isMatch) { 609 if (isMatch) {
526 foundResult = true; 610 foundResult = true;
527 result = value; 611 result = value;
528 } 612 }
529 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 613 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
530 }, {onError: future[_completeError], onDone: (() => { 614 }, {
615 onError: future[_completeError],
616 onDone: () => {
531 if (foundResult) { 617 if (foundResult) {
532 future._complete(result); 618 future._complete(result);
533 return; 619 return;
534 } 620 }
535 if (defaultValue != null) { 621 if (defaultValue != null) {
536 _runUserCode(defaultValue, future[_complete], future[_completeErro r]); 622 _runUserCode(defaultValue, future[_complete], future[_completeErro r]);
537 return; 623 return;
538 } 624 }
539 try { 625 try {
540 throw _internal.IterableElementError.noElement(); 626 throw _internal.IterableElementError.noElement();
541 } catch (e) { 627 } catch (e) {
542 let s = dart.stackTrace(e); 628 let s = dart.stackTrace(e);
543 _completeWithErrorCallback(future, e, s); 629 _completeWithErrorCallback(future, e, s);
544 } 630 }
545 631
546 }).bind(this), cancelOnError: true}); 632 },
633 cancelOnError: true
634 });
547 return future; 635 return future;
548 } 636 }
549 singleWhere(test) { 637 singleWhere(test) {
550 let future = new (_Future$(T))(); 638 let future = new (_Future$(T))();
551 let result = null; 639 let result = null;
552 let foundResult = false; 640 let foundResult = false;
553 let subscription = null; 641 let subscription = null;
554 subscription = this.listen((value) => { 642 subscription = this.listen((value) => {
555 _runUserCode(() => true == test(value), (isMatch) => { 643 _runUserCode(() => true == test(value), (isMatch) => {
556 if (isMatch) { 644 if (isMatch) {
557 if (foundResult) { 645 if (foundResult) {
558 try { 646 try {
559 throw _internal.IterableElementError.tooMany(); 647 throw _internal.IterableElementError.tooMany();
560 } catch (e) { 648 } catch (e) {
561 let s = dart.stackTrace(e); 649 let s = dart.stackTrace(e);
562 _cancelAndErrorWithReplacement(subscription, future, e, s); 650 _cancelAndErrorWithReplacement(subscription, future, e, s);
563 } 651 }
564 652
565 return; 653 return;
566 } 654 }
567 foundResult = true; 655 foundResult = true;
568 result = value; 656 result = value;
569 } 657 }
570 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic"))); 658 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
571 }, {onError: future[_completeError], onDone: (() => { 659 }, {
660 onError: future[_completeError],
661 onDone: () => {
572 if (foundResult) { 662 if (foundResult) {
573 future._complete(result); 663 future._complete(result);
574 return; 664 return;
575 } 665 }
576 try { 666 try {
577 throw _internal.IterableElementError.noElement(); 667 throw _internal.IterableElementError.noElement();
578 } catch (e) { 668 } catch (e) {
579 let s = dart.stackTrace(e); 669 let s = dart.stackTrace(e);
580 _completeWithErrorCallback(future, e, s); 670 _completeWithErrorCallback(future, e, s);
581 } 671 }
582 672
583 }).bind(this), cancelOnError: true}); 673 },
674 cancelOnError: true
675 });
584 return future; 676 return future;
585 } 677 }
586 elementAt(index) { 678 elementAt(index) {
587 if (dart.notNull(!(typeof index == 'number')) || dart.notNull(index) < 0 ) 679 if (dart.notNull(!(typeof index == 'number')) || dart.notNull(index) < 0 )
588 throw new core.ArgumentError(index); 680 throw new core.ArgumentError(index);
589 let future = new (_Future$(T))(); 681 let future = new (_Future$(T))();
590 let subscription = null; 682 let subscription = null;
591 let elementIndex = 0; 683 let elementIndex = 0;
592 subscription = this.listen((value) => { 684 subscription = this.listen((value) => {
593 if (index == elementIndex) { 685 if (index == elementIndex) {
594 _cancelAndValue(subscription, future, value); 686 _cancelAndValue(subscription, future, value);
595 return; 687 return;
596 } 688 }
597 elementIndex = 1; 689 elementIndex = 1;
598 }, {onError: future[_completeError], onDone: (() => { 690 }, {
691 onError: future[_completeError],
692 onDone: (() => {
599 future._completeError(new core.RangeError.index(index, this, "index" , null, elementIndex)); 693 future._completeError(new core.RangeError.index(index, this, "index" , null, elementIndex));
600 }).bind(this), cancelOnError: true}); 694 }).bind(this),
695 cancelOnError: true
696 });
601 return future; 697 return future;
602 } 698 }
603 timeout(timeLimit, opts) { 699 timeout(timeLimit, opts) {
604 let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null; 700 let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
605 let controller = null; 701 let controller = null;
606 let subscription = null; 702 let subscription = null;
607 let timer = null; 703 let timer = null;
608 let zone = null; 704 let zone = null;
609 let timeout = null; 705 let timeout = null;
610 // Function onData: (T) → void 706 // Function onData: (T) → void
(...skipping 12 matching lines...) Expand all
623 } 719 }
624 // Function onDone: () → void 720 // Function onDone: () → void
625 function onDone() { 721 function onDone() {
626 timer.cancel(); 722 timer.cancel();
627 controller.close(); 723 controller.close();
628 } 724 }
629 // Function onListen: () → void 725 // Function onListen: () → void
630 function onListen() { 726 function onListen() {
631 zone = Zone.current; 727 zone = Zone.current;
632 if (onTimeout == null) { 728 if (onTimeout == null) {
633 timeout = (() => { 729 timeout = () => {
634 controller.addError(new TimeoutException("No stream event", timeLi mit), null); 730 controller.addError(new TimeoutException("No stream event", timeLi mit), null);
635 }).bind(this); 731 };
636 } else { 732 } else {
637 onTimeout = dart.closureWrap(zone.registerUnaryCallback(onTimeout), "(EventSink<dynamic>) → void"); 733 onTimeout = dart.closureWrap(zone.registerUnaryCallback(onTimeout), "(EventSink<dynamic>) → void");
638 let wrapper = new _ControllerEventSinkWrapper(null); 734 let wrapper = new _ControllerEventSinkWrapper(null);
639 timeout = (() => { 735 timeout = () => {
640 wrapper[_sink] = controller; 736 wrapper[_sink] = controller;
641 zone.runUnaryGuarded(onTimeout, wrapper); 737 zone.runUnaryGuarded(onTimeout, wrapper);
642 wrapper[_sink] = null; 738 wrapper[_sink] = null;
643 }).bind(this); 739 };
644 } 740 }
645 subscription = this.listen(onData, {onError: onError, onDone: onDone}) ; 741 subscription = this.listen(onData, {onError: onError, onDone: onDone}) ;
646 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void"))); 742 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void")));
647 } 743 }
648 // Function onCancel: () → Future<dynamic> 744 // Function onCancel: () → Future<dynamic>
649 function onCancel() { 745 function onCancel() {
650 timer.cancel(); 746 timer.cancel();
651 let result = subscription.cancel(); 747 let result = subscription.cancel();
652 subscription = null; 748 subscription = null;
653 return result; 749 return result;
654 } 750 }
655 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis ten, onCancel) : new _SyncStreamController(onListen, (() => { 751 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis ten, onCancel) : new _SyncStreamController(onListen, () => {
656 timer.cancel(); 752 timer.cancel();
657 subscription.pause(); 753 subscription.pause();
658 }).bind(this), (() => { 754 }, () => {
659 subscription.resume(); 755 subscription.resume();
660 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void"))); 756 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void")));
661 }).bind(this), onCancel); 757 }, onCancel);
662 return controller.stream; 758 return controller.stream;
663 } 759 }
664 } 760 }
665 dart.defineNamedConstructor(Stream, 'fromFuture'); 761 dart.defineNamedConstructor(Stream, 'fromFuture');
666 dart.defineNamedConstructor(Stream, 'fromIterable'); 762 dart.defineNamedConstructor(Stream, 'fromIterable');
667 dart.defineNamedConstructor(Stream, 'periodic'); 763 dart.defineNamedConstructor(Stream, 'periodic');
668 dart.defineNamedConstructor(Stream, 'eventTransformed'); 764 dart.defineNamedConstructor(Stream, 'eventTransformed');
669 return Stream; 765 return Stream;
670 }); 766 });
671 let Stream = Stream$(dart.dynamic); 767 let Stream = Stream$(dart.dynamic);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_WAIT_FO R_CANCEL]); 959 this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_WAIT_FO R_CANCEL]);
864 if (this[_isCanceled]) 960 if (this[_isCanceled])
865 return this[_cancelFuture]; 961 return this[_cancelFuture];
866 this[_cancel](); 962 this[_cancel]();
867 return this[_cancelFuture]; 963 return this[_cancelFuture];
868 } 964 }
869 asFuture(futureValue) { 965 asFuture(futureValue) {
870 if (futureValue === void 0) 966 if (futureValue === void 0)
871 futureValue = null; 967 futureValue = null;
872 let result = new (_Future$(T))(); 968 let result = new (_Future$(T))();
873 this[_onDone] = (() => { 969 this[_onDone] = () => {
874 result._complete(futureValue); 970 result._complete(futureValue);
875 }).bind(this); 971 };
876 this[_onError] = ((error, stackTrace) => { 972 this[_onError] = ((error, stackTrace) => {
877 this.cancel(); 973 this.cancel();
878 result._completeError(error, dart.as(stackTrace, core.StackTrace)); 974 result._completeError(error, dart.as(stackTrace, core.StackTrace));
879 }).bind(this); 975 }).bind(this);
880 return result; 976 return result;
881 } 977 }
882 get [_isInputPaused]() { 978 get [_isInputPaused]() {
883 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption[_STATE_INPUT_PAUSED])) != 0; 979 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption[_STATE_INPUT_PAUSED])) != 0;
884 } 980 }
885 get [_isClosed]() { 981 get [_isClosed]() {
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 if (this[_hasOneListener]) { 1476 if (this[_hasOneListener]) {
1381 this[_state] = _BroadcastStreamController[_STATE_FIRING]; 1477 this[_state] = _BroadcastStreamController[_STATE_FIRING];
1382 let subscription = dart.as(this[_next], _BroadcastSubscription); 1478 let subscription = dart.as(this[_next], _BroadcastSubscription);
1383 subscription._add(data); 1479 subscription._add(data);
1384 this[_state] = ~dart.notNull(_BroadcastStreamController[_STATE_FIRING] ); 1480 this[_state] = ~dart.notNull(_BroadcastStreamController[_STATE_FIRING] );
1385 if (this[_isEmpty]) { 1481 if (this[_isEmpty]) {
1386 this[_callOnCancel](); 1482 this[_callOnCancel]();
1387 } 1483 }
1388 return; 1484 return;
1389 } 1485 }
1390 this[_forEachListener](((subscription) => { 1486 this[_forEachListener]((subscription) => {
1391 subscription._add(data); 1487 subscription._add(data);
1392 }).bind(this)); 1488 });
1393 } 1489 }
1394 [_sendError](error, stackTrace) { 1490 [_sendError](error, stackTrace) {
1395 if (this[_isEmpty]) 1491 if (this[_isEmpty])
1396 return; 1492 return;
1397 this[_forEachListener](((subscription) => { 1493 this[_forEachListener]((subscription) => {
1398 subscription._addError(error, stackTrace); 1494 subscription._addError(error, stackTrace);
1399 }).bind(this)); 1495 });
1400 } 1496 }
1401 [_sendDone]() { 1497 [_sendDone]() {
1402 if (!dart.notNull(this[_isEmpty])) { 1498 if (!dart.notNull(this[_isEmpty])) {
1403 this[_forEachListener](dart.closureWrap(((subscription) => { 1499 this[_forEachListener](dart.closureWrap((subscription) => {
1404 subscription._close(); 1500 subscription._close();
1405 }).bind(this), "(_BufferingStreamSubscription<T>) → void")); 1501 }, "(_BufferingStreamSubscription<T>) → void"));
1406 } else { 1502 } else {
1407 dart.assert(this[_doneFuture] != null); 1503 dart.assert(this[_doneFuture] != null);
1408 dart.assert(this[_doneFuture][_mayComplete]); 1504 dart.assert(this[_doneFuture][_mayComplete]);
1409 this[_doneFuture]._asyncComplete(null); 1505 this[_doneFuture]._asyncComplete(null);
1410 } 1506 }
1411 } 1507 }
1412 } 1508 }
1413 return _SyncBroadcastStreamController; 1509 return _SyncBroadcastStreamController;
1414 }); 1510 });
1415 let _SyncBroadcastStreamController = _SyncBroadcastStreamController$(dart.dyna mic); 1511 let _SyncBroadcastStreamController = _SyncBroadcastStreamController$(dart.dyna mic);
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1565 } 1661 }
1566 toString() { 1662 toString() {
1567 return `DeferredLoadException: '${this[_s]}'`; 1663 return `DeferredLoadException: '${this[_s]}'`;
1568 } 1664 }
1569 } 1665 }
1570 DeferredLoadException[dart.implements] = () => [core.Exception]; 1666 DeferredLoadException[dart.implements] = () => [core.Exception];
1571 let Future$ = dart.generic(function(T) { 1667 let Future$ = dart.generic(function(T) {
1572 class Future extends core.Object { 1668 class Future extends core.Object {
1573 Future(computation) { 1669 Future(computation) {
1574 let result = new (_Future$(T))(); 1670 let result = new (_Future$(T))();
1575 Timer.run((() => { 1671 Timer.run(() => {
1576 try { 1672 try {
1577 result._complete(computation()); 1673 result._complete(computation());
1578 } catch (e) { 1674 } catch (e) {
1579 let s = dart.stackTrace(e); 1675 let s = dart.stackTrace(e);
1580 _completeWithErrorCallback(result, e, s); 1676 _completeWithErrorCallback(result, e, s);
1581 } 1677 }
1582 1678
1583 }).bind(this)); 1679 });
1584 return dart.as(result, Future$(T)); 1680 return dart.as(result, Future$(T));
1585 } 1681 }
1586 microtask(computation) { 1682 microtask(computation) {
1587 let result = new (_Future$(T))(); 1683 let result = new (_Future$(T))();
1588 scheduleMicrotask((() => { 1684 scheduleMicrotask(() => {
1589 try { 1685 try {
1590 result._complete(computation()); 1686 result._complete(computation());
1591 } catch (e) { 1687 } catch (e) {
1592 let s = dart.stackTrace(e); 1688 let s = dart.stackTrace(e);
1593 _completeWithErrorCallback(result, e, s); 1689 _completeWithErrorCallback(result, e, s);
1594 } 1690 }
1595 1691
1596 }).bind(this)); 1692 });
1597 return dart.as(result, Future$(T)); 1693 return dart.as(result, Future$(T));
1598 } 1694 }
1599 sync(computation) { 1695 sync(computation) {
1600 try { 1696 try {
1601 let result = computation(); 1697 let result = computation();
1602 return new Future$(T).value(result); 1698 return new Future$(T).value(result);
1603 } catch (error) { 1699 } catch (error) {
1604 let stackTrace = dart.stackTrace(error); 1700 let stackTrace = dart.stackTrace(error);
1605 return new Future$(T).error(error, stackTrace); 1701 return new Future$(T).error(error, stackTrace);
1606 } 1702 }
(...skipping 14 matching lines...) Expand all
1621 error = _nonNullError(replacement.error); 1717 error = _nonNullError(replacement.error);
1622 stackTrace = replacement.stackTrace; 1718 stackTrace = replacement.stackTrace;
1623 } 1719 }
1624 } 1720 }
1625 return new _Future$(T).immediateError(error, stackTrace); 1721 return new _Future$(T).immediateError(error, stackTrace);
1626 } 1722 }
1627 delayed(duration, computation) { 1723 delayed(duration, computation) {
1628 if (computation === void 0) 1724 if (computation === void 0)
1629 computation = null; 1725 computation = null;
1630 let result = new (_Future$(T))(); 1726 let result = new (_Future$(T))();
1631 new Timer(duration, (() => { 1727 new Timer(duration, () => {
1632 try { 1728 try {
1633 result._complete(computation == null ? null : computation()); 1729 result._complete(computation == null ? null : computation());
1634 } catch (e) { 1730 } catch (e) {
1635 let s = dart.stackTrace(e); 1731 let s = dart.stackTrace(e);
1636 _completeWithErrorCallback(result, e, s); 1732 _completeWithErrorCallback(result, e, s);
1637 } 1733 }
1638 1734
1639 }).bind(this)); 1735 });
1640 return dart.as(result, Future$(T)); 1736 return dart.as(result, Future$(T));
1641 } 1737 }
1642 static wait(futures, opts) { 1738 static wait(futures, opts) {
1643 let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false; 1739 let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false;
1644 let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null; 1740 let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null;
1645 let result = new (_Future$(core.List))(); 1741 let result = new (_Future$(core.List))();
1646 let values = null; 1742 let values = null;
1647 let remaining = 0; 1743 let remaining = 0;
1648 let error = null; 1744 let error = null;
1649 let stackTrace = null; 1745 let stackTrace = null;
(...skipping 16 matching lines...) Expand all
1666 } else { 1762 } else {
1667 error = theError; 1763 error = theError;
1668 stackTrace = dart.as(theStackTrace, core.StackTrace); 1764 stackTrace = dart.as(theStackTrace, core.StackTrace);
1669 } 1765 }
1670 } else if (remaining == 0 && !dart.notNull(eagerError)) { 1766 } else if (remaining == 0 && !dart.notNull(eagerError)) {
1671 result._completeError(error, stackTrace); 1767 result._completeError(error, stackTrace);
1672 } 1768 }
1673 } 1769 }
1674 for (let future of futures) { 1770 for (let future of futures) {
1675 let pos = ((x) => remaining = dart.notNull(x) + 1, x)(remaining); 1771 let pos = ((x) => remaining = dart.notNull(x) + 1, x)(remaining);
1676 future.then(((value) => { 1772 future.then((value) => {
1677 remaining = dart.notNull(remaining) - 1; 1773 remaining = dart.notNull(remaining) - 1;
1678 if (values != null) { 1774 if (values != null) {
1679 values.set(pos, value); 1775 values.set(pos, value);
1680 if (remaining == 0) { 1776 if (remaining == 0) {
1681 result._completeWithValue(values); 1777 result._completeWithValue(values);
1682 } 1778 }
1683 } else { 1779 } else {
1684 if (dart.notNull(cleanUp != null) && dart.notNull(value != null)) { 1780 if (dart.notNull(cleanUp != null) && dart.notNull(value != null)) {
1685 new Future.sync(() => { 1781 new Future.sync(() => {
1686 dart.dinvokef(cleanUp, value); 1782 dart.dinvokef(cleanUp, value);
1687 }); 1783 });
1688 } 1784 }
1689 if (remaining == 0 && !dart.notNull(eagerError)) { 1785 if (remaining == 0 && !dart.notNull(eagerError)) {
1690 result._completeError(error, stackTrace); 1786 result._completeError(error, stackTrace);
1691 } 1787 }
1692 } 1788 }
1693 }).bind(this), {onError: handleError}); 1789 }, {onError: handleError});
1694 } 1790 }
1695 if (remaining == 0) { 1791 if (remaining == 0) {
1696 return dart.as(new Future.value(/* Unimplemented const */new core.List .from([])), Future$(core.List)); 1792 return dart.as(new Future.value(/* Unimplemented const */new core.List .from([])), Future$(core.List));
1697 } 1793 }
1698 values = new core.List(remaining); 1794 values = new core.List(remaining);
1699 return result; 1795 return result;
1700 } 1796 }
1701 static forEach(input, f) { 1797 static forEach(input, f) {
1702 let iterator = input.iterator; 1798 let iterator = input.iterator;
1703 return Future.doWhile((() => { 1799 return Future.doWhile(() => {
1704 if (!dart.notNull(iterator.moveNext())) 1800 if (!dart.notNull(iterator.moveNext()))
1705 return false; 1801 return false;
1706 return new Future.sync((() => dart.dinvokef(f, iterator.current)).bind (this)).then((_) => true); 1802 return new Future.sync(() => dart.dinvokef(f, iterator.current)).then( (_) => true);
1707 }).bind(this)); 1803 });
1708 } 1804 }
1709 static doWhile(f) { 1805 static doWhile(f) {
1710 let doneSignal = new _Future(); 1806 let doneSignal = new _Future();
1711 let nextIteration = null; 1807 let nextIteration = null;
1712 nextIteration = Zone.current.bindUnaryCallback(((keepGoing) => { 1808 nextIteration = Zone.current.bindUnaryCallback((keepGoing) => {
1713 if (keepGoing) { 1809 if (keepGoing) {
1714 new Future.sync(f).then(dart.as(nextIteration, dart.throw_("Unimplem ented type (dynamic) → dynamic")), {onError: doneSignal[_completeError]}); 1810 new Future.sync(f).then(dart.as(nextIteration, dart.throw_("Unimplem ented type (dynamic) → dynamic")), {onError: doneSignal[_completeError]});
1715 } else { 1811 } else {
1716 doneSignal._complete(null); 1812 doneSignal._complete(null);
1717 } 1813 }
1718 }).bind(this), {runGuarded: true}); 1814 }, {runGuarded: true});
1719 dart.dinvokef(nextIteration, true); 1815 dart.dinvokef(nextIteration, true);
1720 return doneSignal; 1816 return doneSignal;
1721 } 1817 }
1722 } 1818 }
1723 dart.defineNamedConstructor(Future, 'microtask'); 1819 dart.defineNamedConstructor(Future, 'microtask');
1724 dart.defineNamedConstructor(Future, 'sync'); 1820 dart.defineNamedConstructor(Future, 'sync');
1725 dart.defineNamedConstructor(Future, 'value'); 1821 dart.defineNamedConstructor(Future, 'value');
1726 dart.defineNamedConstructor(Future, 'error'); 1822 dart.defineNamedConstructor(Future, 'error');
1727 dart.defineNamedConstructor(Future, 'delayed'); 1823 dart.defineNamedConstructor(Future, 'delayed');
1728 dart.defineLazyProperties(Future, { 1824 dart.defineLazyProperties(Future, {
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
2061 current[_nextListener] = prev; 2157 current[_nextListener] = prev;
2062 prev = current; 2158 prev = current;
2063 current = next; 2159 current = next;
2064 } 2160 }
2065 return prev; 2161 return prev;
2066 } 2162 }
2067 static [_chainForeignFuture](source, target) { 2163 static [_chainForeignFuture](source, target) {
2068 dart.assert(!dart.notNull(target[_isComplete])); 2164 dart.assert(!dart.notNull(target[_isComplete]));
2069 dart.assert(!dart.is(source, _Future)); 2165 dart.assert(!dart.is(source, _Future));
2070 target[_isChained] = true; 2166 target[_isChained] = true;
2071 source.then(((value) => { 2167 source.then((value) => {
2072 dart.assert(target[_isChained]); 2168 dart.assert(target[_isChained]);
2073 target._completeWithValue(value); 2169 target._completeWithValue(value);
2074 }).bind(this), {onError: ((error, stackTrace) => { 2170 }, {
2171 onError: (error, stackTrace) => {
2075 if (stackTrace === void 0) 2172 if (stackTrace === void 0)
2076 stackTrace = null; 2173 stackTrace = null;
2077 dart.assert(target[_isChained]); 2174 dart.assert(target[_isChained]);
2078 target._completeError(error, dart.as(stackTrace, core.StackTrace)); 2175 target._completeError(error, dart.as(stackTrace, core.StackTrace));
2079 }).bind(this)}); 2176 }
2177 });
2080 } 2178 }
2081 static [_chainCoreFuture](source, target) { 2179 static [_chainCoreFuture](source, target) {
2082 dart.assert(!dart.notNull(target[_isComplete])); 2180 dart.assert(!dart.notNull(target[_isComplete]));
2083 dart.assert(dart.is(source, _Future)); 2181 dart.assert(dart.is(source, _Future));
2084 target[_isChained] = true; 2182 target[_isChained] = true;
2085 let listener = new _FutureListener.chain(target); 2183 let listener = new _FutureListener.chain(target);
2086 if (source[_isComplete]) { 2184 if (source[_isComplete]) {
2087 _Future[_propagateToListeners](source, listener); 2185 _Future[_propagateToListeners](source, listener);
2088 } else { 2186 } else {
2089 source._addListener(listener); 2187 source._addListener(listener);
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 source = result; 2410 source = result;
2313 } 2411 }
2314 } 2412 }
2315 timeout(timeLimit, opts) { 2413 timeout(timeLimit, opts) {
2316 let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null; 2414 let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
2317 if (this[_isComplete]) 2415 if (this[_isComplete])
2318 return new _Future.immediate(this); 2416 return new _Future.immediate(this);
2319 let result = new _Future(); 2417 let result = new _Future();
2320 let timer = null; 2418 let timer = null;
2321 if (onTimeout == null) { 2419 if (onTimeout == null) {
2322 timer = new Timer(timeLimit, (() => { 2420 timer = new Timer(timeLimit, () => {
2323 result._completeError(new TimeoutException("Future not completed", t imeLimit)); 2421 result._completeError(new TimeoutException("Future not completed", t imeLimit));
2324 }).bind(this)); 2422 });
2325 } else { 2423 } else {
2326 let zone = Zone.current; 2424 let zone = Zone.current;
2327 onTimeout = zone.registerCallback(onTimeout); 2425 onTimeout = zone.registerCallback(onTimeout);
2328 timer = new Timer(timeLimit, (() => { 2426 timer = new Timer(timeLimit, () => {
2329 try { 2427 try {
2330 result._complete(zone.run(onTimeout)); 2428 result._complete(zone.run(onTimeout));
2331 } catch (e) { 2429 } catch (e) {
2332 let s = dart.stackTrace(e); 2430 let s = dart.stackTrace(e);
2333 result._completeError(e, s); 2431 result._completeError(e, s);
2334 } 2432 }
2335 2433
2336 }).bind(this)); 2434 });
2337 } 2435 }
2338 this.then(((v) => { 2436 this.then((v) => {
2339 if (timer.isActive) { 2437 if (timer.isActive) {
2340 timer.cancel(); 2438 timer.cancel();
2341 result._completeWithValue(v); 2439 result._completeWithValue(v);
2342 } 2440 }
2343 }).bind(this), {onError: ((e, s) => { 2441 }, {
2442 onError: (e, s) => {
2344 if (timer.isActive) { 2443 if (timer.isActive) {
2345 timer.cancel(); 2444 timer.cancel();
2346 result._completeError(e, dart.as(s, core.StackTrace)); 2445 result._completeError(e, dart.as(s, core.StackTrace));
2347 } 2446 }
2348 }).bind(this)}); 2447 }
2448 });
2349 return result; 2449 return result;
2350 } 2450 }
2351 } 2451 }
2352 _Future[dart.implements] = () => [Future$(T)]; 2452 _Future[dart.implements] = () => [Future$(T)];
2353 dart.defineNamedConstructor(_Future, 'immediate'); 2453 dart.defineNamedConstructor(_Future, 'immediate');
2354 dart.defineNamedConstructor(_Future, 'immediateError'); 2454 dart.defineNamedConstructor(_Future, 'immediateError');
2355 _Future._INCOMPLETE = 0; 2455 _Future._INCOMPLETE = 0;
2356 _Future._PENDING_COMPLETE = 1; 2456 _Future._PENDING_COMPLETE = 1;
2357 _Future._CHAINED = 2; 2457 _Future._CHAINED = 2;
2358 _Future._VALUE = 4; 2458 _Future._VALUE = 4;
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
2815 this[_state] = dart.notNull(this[_state]) & ~(dart.notNull(_StreamContro ller[_STATE_SUBSCRIBED]) | dart.notNull(_StreamController[_STATE_ADDSTREAM])) | dart.notNull(_StreamController[_STATE_CANCELED]); 2915 this[_state] = dart.notNull(this[_state]) & ~(dart.notNull(_StreamContro ller[_STATE_SUBSCRIBED]) | dart.notNull(_StreamController[_STATE_ADDSTREAM])) | dart.notNull(_StreamController[_STATE_CANCELED]);
2816 if (this[_onCancel] != null) { 2916 if (this[_onCancel] != null) {
2817 if (result == null) { 2917 if (result == null) {
2818 try { 2918 try {
2819 result = dart.as(this[_onCancel](), Future); 2919 result = dart.as(this[_onCancel](), Future);
2820 } catch (e) { 2920 } catch (e) {
2821 let s = dart.stackTrace(e); 2921 let s = dart.stackTrace(e);
2822 result = ((_$) => { 2922 result = ((_$) => {
2823 _$._asyncCompleteError(e, s); 2923 _$._asyncCompleteError(e, s);
2824 return _$; 2924 return _$;
2825 }).bind(this)(new _Future()); 2925 })(new _Future());
2826 } 2926 }
2827 2927
2828 } else { 2928 } else {
2829 result = result.whenComplete(this[_onCancel]); 2929 result = result.whenComplete(this[_onCancel]);
2830 } 2930 }
2831 } 2931 }
2832 // Function complete: () → void 2932 // Function complete: () → void
2833 function complete() { 2933 function complete() {
2834 if (dart.notNull(this[_doneFuture] != null) && dart.notNull(this[_done Future][_mayComplete])) { 2934 if (dart.notNull(this[_doneFuture] != null) && dart.notNull(this[_done Future][_mayComplete])) {
2835 this[_doneFuture]._asyncComplete(null); 2935 this[_doneFuture]._asyncComplete(null);
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
2987 return _StreamSinkWrapper; 3087 return _StreamSinkWrapper;
2988 }); 3088 });
2989 let _StreamSinkWrapper = _StreamSinkWrapper$(dart.dynamic); 3089 let _StreamSinkWrapper = _StreamSinkWrapper$(dart.dynamic);
2990 let _AddStreamState$ = dart.generic(function(T) { 3090 let _AddStreamState$ = dart.generic(function(T) {
2991 class _AddStreamState extends core.Object { 3091 class _AddStreamState extends core.Object {
2992 _AddStreamState(controller, source, cancelOnError) { 3092 _AddStreamState(controller, source, cancelOnError) {
2993 this.addStreamFuture = new _Future(); 3093 this.addStreamFuture = new _Future();
2994 this.addSubscription = source.listen(controller[_add], {onError: dart.as (cancelOnError ? _AddStreamState.makeErrorHandler(controller) : controller[_addE rror], core.Function), onDone: controller[_close], cancelOnError: cancelOnError} ); 3094 this.addSubscription = source.listen(controller[_add], {onError: dart.as (cancelOnError ? _AddStreamState.makeErrorHandler(controller) : controller[_addE rror], core.Function), onDone: controller[_close], cancelOnError: cancelOnError} );
2995 } 3095 }
2996 static makeErrorHandler(controller) { 3096 static makeErrorHandler(controller) {
2997 return ((e, s) => { 3097 return (e, s) => {
2998 controller._addError(e, s); 3098 controller._addError(e, s);
2999 controller._close(); 3099 controller._close();
3000 }).bind(this); 3100 };
3001 } 3101 }
3002 pause() { 3102 pause() {
3003 this.addSubscription.pause(); 3103 this.addSubscription.pause();
3004 } 3104 }
3005 resume() { 3105 resume() {
3006 this.addSubscription.resume(); 3106 this.addSubscription.resume();
3007 } 3107 }
3008 cancel() { 3108 cancel() {
3009 let cancel = this.addSubscription.cancel(); 3109 let cancel = this.addSubscription.cancel();
3010 if (cancel == null) { 3110 if (cancel == null) {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
3301 } 3401 }
3302 } 3402 }
3303 } 3403 }
3304 cancel() { 3404 cancel() {
3305 return null; 3405 return null;
3306 } 3406 }
3307 asFuture(futureValue) { 3407 asFuture(futureValue) {
3308 if (futureValue === void 0) 3408 if (futureValue === void 0)
3309 futureValue = null; 3409 futureValue = null;
3310 let result = new _Future(); 3410 let result = new _Future();
3311 this[_onDone] = (() => { 3411 this[_onDone] = () => {
3312 result._completeWithValue(null); 3412 result._completeWithValue(null);
3313 }).bind(this); 3413 };
3314 return result; 3414 return result;
3315 } 3415 }
3316 [_sendDone]() { 3416 [_sendDone]() {
3317 this[_state] = ~dart.notNull(_DoneStreamSubscription[_SCHEDULED]); 3417 this[_state] = ~dart.notNull(_DoneStreamSubscription[_SCHEDULED]);
3318 if (this.isPaused) 3418 if (this.isPaused)
3319 return; 3419 return;
3320 this[_state] = _DoneStreamSubscription[_DONE_SENT]; 3420 this[_state] = _DoneStreamSubscription[_DONE_SENT];
3321 if (this[_onDone] != null) 3421 if (this[_onDone] != null)
3322 this[_zone].runGuarded(this[_onDone]); 3422 this[_zone].runGuarded(this[_onDone]);
3323 } 3423 }
(...skipping 1688 matching lines...) Expand 10 before | Expand all | Expand 10 after
5012 exports.StreamIterator = StreamIterator; 5112 exports.StreamIterator = StreamIterator;
5013 exports.StreamIterator$ = StreamIterator$; 5113 exports.StreamIterator$ = StreamIterator$;
5014 exports.StreamController = StreamController; 5114 exports.StreamController = StreamController;
5015 exports.StreamController$ = StreamController$; 5115 exports.StreamController$ = StreamController$;
5016 exports.Timer = Timer; 5116 exports.Timer = Timer;
5017 exports.ZoneSpecification = ZoneSpecification; 5117 exports.ZoneSpecification = ZoneSpecification;
5018 exports.ZoneDelegate = ZoneDelegate; 5118 exports.ZoneDelegate = ZoneDelegate;
5019 exports.Zone = Zone; 5119 exports.Zone = Zone;
5020 exports.runZoned = runZoned; 5120 exports.runZoned = runZoned;
5021 })(async || (async = {})); 5121 })(async || (async = {}));
OLDNEW
« no previous file with comments | « lib/runtime/dart/_js_helper.js ('k') | lib/runtime/dart/collection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698