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

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

Issue 1059583002: Extension method support to move us closer to a valid List implementation. (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
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 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 _cancelAndValue(subscription, future, false); 368 _cancelAndValue(subscription, future, false);
369 }, "(T) → void"), {onError: future[_completeError], onDone: (() => { 369 }, "(T) → void"), {onError: future[_completeError], onDone: (() => {
370 future._complete(true); 370 future._complete(true);
371 }).bind(this), cancelOnError: true}); 371 }).bind(this), cancelOnError: true});
372 return future; 372 return future;
373 } 373 }
374 toList() { 374 toList() {
375 let result = new core.List$(T).from([]); 375 let result = new core.List$(T).from([]);
376 let future = new (_Future$(core.List$(T)))(); 376 let future = new (_Future$(core.List$(T)))();
377 this.listen(((data) => { 377 this.listen(((data) => {
378 result.add(data); 378 result[core.$add](data);
379 }).bind(this), {onError: future[_completeError], onDone: (() => { 379 }).bind(this), {onError: future[_completeError], onDone: (() => {
380 future._complete(result); 380 future._complete(result);
381 }).bind(this), cancelOnError: true}); 381 }).bind(this), cancelOnError: true});
382 return future; 382 return future;
383 } 383 }
384 toSet() { 384 toSet() {
385 let result = new (core.Set$(T))(); 385 let result = new (core.Set$(T))();
386 let future = new (_Future$(core.Set$(T)))(); 386 let future = new (_Future$(core.Set$(T)))();
387 this.listen(((data) => { 387 this.listen(((data) => {
388 result.add(data); 388 result.add(data);
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1669 } 1669 }
1670 } else if (remaining == 0 && !dart.notNull(eagerError)) { 1670 } else if (remaining == 0 && !dart.notNull(eagerError)) {
1671 result._completeError(error, stackTrace); 1671 result._completeError(error, stackTrace);
1672 } 1672 }
1673 } 1673 }
1674 for (let future of futures) { 1674 for (let future of futures) {
1675 let pos = ((x) => remaining = dart.notNull(x) + 1, x)(remaining); 1675 let pos = ((x) => remaining = dart.notNull(x) + 1, x)(remaining);
1676 future.then(((value) => { 1676 future.then(((value) => {
1677 remaining = dart.notNull(remaining) - 1; 1677 remaining = dart.notNull(remaining) - 1;
1678 if (values != null) { 1678 if (values != null) {
1679 values.set(pos, value); 1679 values[core.$set](pos, value);
1680 if (remaining == 0) { 1680 if (remaining == 0) {
1681 result._completeWithValue(values); 1681 result._completeWithValue(values);
1682 } 1682 }
1683 } else { 1683 } else {
1684 if (dart.notNull(cleanUp != null) && dart.notNull(value != null)) { 1684 if (dart.notNull(cleanUp != null) && dart.notNull(value != null)) {
1685 new Future.sync(() => { 1685 new Future.sync(() => {
1686 dart.dinvokef(cleanUp, value); 1686 dart.dinvokef(cleanUp, value);
1687 }); 1687 });
1688 } 1688 }
1689 if (remaining == 0 && !dart.notNull(eagerError)) { 1689 if (remaining == 0 && !dart.notNull(eagerError)) {
1690 result._completeError(error, stackTrace); 1690 result._completeError(error, stackTrace);
1691 } 1691 }
1692 } 1692 }
1693 }).bind(this), {onError: handleError}); 1693 }).bind(this), {onError: handleError});
1694 } 1694 }
1695 if (remaining == 0) { 1695 if (remaining == 0) {
1696 return dart.as(new Future.value(/* Unimplemented const */new core.List .from([])), Future$(core.List)); 1696 return dart.as(new Future.value(/* Unimplemented const */new core.List .from([])), Future$(core.List));
1697 } 1697 }
1698 values = new core.List(remaining); 1698 values = new core.List(remaining);
1699 return result; 1699 return result;
1700 } 1700 }
1701 static forEach(input, f) { 1701 static forEach(input, f) {
1702 let iterator = input.iterator; 1702 let iterator = input[core.$iterator];
1703 return Future.doWhile((() => { 1703 return Future.doWhile((() => {
1704 if (!dart.notNull(iterator.moveNext())) 1704 if (!dart.notNull(iterator.moveNext()))
1705 return false; 1705 return false;
1706 return new Future.sync((() => dart.dinvokef(f, iterator.current)).bind (this)).then((_) => true); 1706 return new Future.sync((() => dart.dinvokef(f, iterator.current)).bind (this)).then((_) => true);
1707 }).bind(this)); 1707 }).bind(this));
1708 } 1708 }
1709 static doWhile(f) { 1709 static doWhile(f) {
1710 let doneSignal = new _Future(); 1710 let doneSignal = new _Future();
1711 let nextIteration = null; 1711 let nextIteration = null;
1712 nextIteration = Zone.current.bindUnaryCallback(((keepGoing) => { 1712 nextIteration = Zone.current.bindUnaryCallback(((keepGoing) => {
(...skipping 1391 matching lines...) Expand 10 before | Expand all | Expand 10 after
3104 if (this.isScheduled) 3104 if (this.isScheduled)
3105 this[_state] = _PendingEvents[_STATE_CANCELED]; 3105 this[_state] = _PendingEvents[_STATE_CANCELED];
3106 } 3106 }
3107 } 3107 }
3108 _PendingEvents._STATE_UNSCHEDULED = 0; 3108 _PendingEvents._STATE_UNSCHEDULED = 0;
3109 _PendingEvents._STATE_SCHEDULED = 1; 3109 _PendingEvents._STATE_SCHEDULED = 1;
3110 _PendingEvents._STATE_CANCELED = 3; 3110 _PendingEvents._STATE_CANCELED = 3;
3111 let _IterablePendingEvents$ = dart.generic(function(T) { 3111 let _IterablePendingEvents$ = dart.generic(function(T) {
3112 class _IterablePendingEvents extends _PendingEvents { 3112 class _IterablePendingEvents extends _PendingEvents {
3113 _IterablePendingEvents(data) { 3113 _IterablePendingEvents(data) {
3114 this[_iterator] = data.iterator; 3114 this[_iterator] = data[core.$iterator];
3115 super._PendingEvents(); 3115 super._PendingEvents();
3116 } 3116 }
3117 get isEmpty() { 3117 get isEmpty() {
3118 return this[_iterator] == null; 3118 return this[_iterator] == null;
3119 } 3119 }
3120 handleNext(dispatch) { 3120 handleNext(dispatch) {
3121 if (this[_iterator] == null) { 3121 if (this[_iterator] == null) {
3122 throw new core.StateError("No events pending."); 3122 throw new core.StateError("No events pending.");
3123 } 3123 }
3124 let isDone = null; 3124 let isDone = null;
(...skipping 1887 matching lines...) Expand 10 before | Expand all | Expand 10 after
5012 exports.StreamIterator = StreamIterator; 5012 exports.StreamIterator = StreamIterator;
5013 exports.StreamIterator$ = StreamIterator$; 5013 exports.StreamIterator$ = StreamIterator$;
5014 exports.StreamController = StreamController; 5014 exports.StreamController = StreamController;
5015 exports.StreamController$ = StreamController$; 5015 exports.StreamController$ = StreamController$;
5016 exports.Timer = Timer; 5016 exports.Timer = Timer;
5017 exports.ZoneSpecification = ZoneSpecification; 5017 exports.ZoneSpecification = ZoneSpecification;
5018 exports.ZoneDelegate = ZoneDelegate; 5018 exports.ZoneDelegate = ZoneDelegate;
5019 exports.Zone = Zone; 5019 exports.Zone = Zone;
5020 exports.runZoned = runZoned; 5020 exports.runZoned = runZoned;
5021 })(async || (async = {})); 5021 })(async || (async = {}));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698