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

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

Issue 1132113003: fixes #177, FunctionDeclarationStatement and closing over `this` (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 7 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 = dart.defineLibrary(async, {}); 1 var async = dart.defineLibrary(async, {});
2 var core = dart.import(core); 2 var core = dart.import(core);
3 var _internal = dart.import(_internal); 3 var _internal = dart.import(_internal);
4 var _js_helper = dart.lazyImport(_js_helper); 4 var _js_helper = dart.lazyImport(_js_helper);
5 var _isolate_helper = dart.lazyImport(_isolate_helper); 5 var _isolate_helper = dart.lazyImport(_isolate_helper);
6 var collection = dart.import(collection); 6 var collection = dart.import(collection);
7 (function(exports, core, _internal, _js_helper, _isolate_helper, collection) { 7 (function(exports, core, _internal, _js_helper, _isolate_helper, collection) {
8 'use strict'; 8 'use strict';
9 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic 9 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic
10 function _invokeErrorHandler(errorHandler, error, stackTrace) { 10 function _invokeErrorHandler(errorHandler, error, stackTrace) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 periodic(period, computation) { 86 periodic(period, computation) {
87 if (computation === void 0) 87 if (computation === void 0)
88 computation = null; 88 computation = null;
89 if (computation == null) 89 if (computation == null)
90 computation = i => null; 90 computation = i => null;
91 let timer = null; 91 let timer = null;
92 let computationCount = 0; 92 let computationCount = 0;
93 let controller = null; 93 let controller = null;
94 let watch = new core.Stopwatch(); 94 let watch = new core.Stopwatch();
95 // Function sendEvent: () → void 95 // Function sendEvent: () → void
96 function sendEvent() { 96 let sendEvent = () => {
97 watch.reset(); 97 watch.reset();
98 let data = computation((() => { 98 let data = computation((() => {
99 let x = computationCount; 99 let x = computationCount;
100 computationCount = dart.notNull(x) + 1; 100 computationCount = dart.notNull(x) + 1;
101 return x; 101 return x;
102 })()); 102 })());
103 controller.add(data); 103 controller.add(data);
104 } 104 };
105 // Function startPeriodicTimer: () → void 105 // Function startPeriodicTimer: () → void
106 function startPeriodicTimer() { 106 let startPeriodicTimer = () => {
107 dart.assert(timer == null); 107 dart.assert(timer == null);
108 timer = new Timer.periodic(period, timer => { 108 timer = new Timer.periodic(period, timer => {
109 sendEvent(); 109 sendEvent();
110 }); 110 });
111 } 111 };
112 controller = new (StreamController$(T))({ 112 controller = new (StreamController$(T))({
113 sync: true, 113 sync: true,
114 onListen: () => { 114 onListen: () => {
115 watch.start(); 115 watch.start();
116 startPeriodicTimer(); 116 startPeriodicTimer();
117 }, 117 },
118 onPause: () => { 118 onPause: () => {
119 timer.cancel(); 119 timer.cancel();
120 timer = null; 120 timer = null;
121 watch.stop(); 121 watch.stop();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 } 157 }
158 map(convert) { 158 map(convert) {
159 dart.as(convert, dart.functionType(dart.dynamic, [T])); 159 dart.as(convert, dart.functionType(dart.dynamic, [T]));
160 return new (_MapStream$(T, dart.dynamic))(this, convert); 160 return new (_MapStream$(T, dart.dynamic))(this, convert);
161 } 161 }
162 asyncMap(convert) { 162 asyncMap(convert) {
163 dart.as(convert, dart.functionType(dart.dynamic, [T])); 163 dart.as(convert, dart.functionType(dart.dynamic, [T]));
164 let controller = null; 164 let controller = null;
165 let subscription = null; 165 let subscription = null;
166 // Function onListen: () → void 166 // Function onListen: () → void
167 function onListen() { 167 let onListen = (() => {
168 let add = controller.add.bind(controller); 168 let add = controller.add.bind(controller);
169 dart.assert(dart.is(controller, _StreamController) || dart.is(controll er, _BroadcastStreamController)); 169 dart.assert(dart.is(controller, _StreamController) || dart.is(controll er, _BroadcastStreamController));
170 let eventSink = controller; 170 let eventSink = controller;
171 let addError = eventSink[_addError]; 171 let addError = eventSink[_addError];
172 subscription = this.listen(event => { 172 subscription = this.listen(event => {
173 dart.as(event, T); 173 dart.as(event, T);
174 let newValue = null; 174 let newValue = null;
175 try { 175 try {
176 newValue = convert(event); 176 newValue = convert(event);
177 } catch (e) { 177 } catch (e) {
178 let s = dart.stackTrace(e); 178 let s = dart.stackTrace(e);
179 controller.addError(e, s); 179 controller.addError(e, s);
180 return; 180 return;
181 } 181 }
182 182
183 if (dart.is(newValue, Future)) { 183 if (dart.is(newValue, Future)) {
184 subscription.pause(); 184 subscription.pause();
185 dart.dsend(dart.dsend(newValue, 'then', add, {onError: addError}), 'whenComplete', dart.bind(subscription, 'resume')); 185 dart.dsend(dart.dsend(newValue, 'then', add, {onError: addError}), 'whenComplete', dart.bind(subscription, 'resume'));
186 } else { 186 } else {
187 controller.add(newValue); 187 controller.add(newValue);
188 } 188 }
189 }, {onError: dart.as(addError, core.Function), onDone: controller.clos e.bind(controller)}); 189 }, {onError: dart.as(addError, core.Function), onDone: controller.clos e.bind(controller)});
190 } 190 }).bind(this);
191 if (this.isBroadcast) { 191 if (this.isBroadcast) {
192 controller = new StreamController.broadcast({ 192 controller = new StreamController.broadcast({
193 onListen: onListen, 193 onListen: onListen,
194 onCancel: () => { 194 onCancel: () => {
195 subscription.cancel(); 195 subscription.cancel();
196 }, 196 },
197 sync: true 197 sync: true
198 }); 198 });
199 } else { 199 } else {
200 controller = new StreamController({ 200 controller = new StreamController({
(...skipping 10 matching lines...) Expand all
211 sync: true 211 sync: true
212 }); 212 });
213 } 213 }
214 return controller.stream; 214 return controller.stream;
215 } 215 }
216 asyncExpand(convert) { 216 asyncExpand(convert) {
217 dart.as(convert, dart.functionType(Stream, [T])); 217 dart.as(convert, dart.functionType(Stream, [T]));
218 let controller = null; 218 let controller = null;
219 let subscription = null; 219 let subscription = null;
220 // Function onListen: () → void 220 // Function onListen: () → void
221 function onListen() { 221 let onListen = (() => {
222 dart.assert(dart.is(controller, _StreamController) || dart.is(controll er, _BroadcastStreamController)); 222 dart.assert(dart.is(controller, _StreamController) || dart.is(controll er, _BroadcastStreamController));
223 let eventSink = controller; 223 let eventSink = controller;
224 subscription = this.listen(event => { 224 subscription = this.listen(event => {
225 dart.as(event, T); 225 dart.as(event, T);
226 let newStream = null; 226 let newStream = null;
227 try { 227 try {
228 newStream = convert(event); 228 newStream = convert(event);
229 } catch (e) { 229 } catch (e) {
230 let s = dart.stackTrace(e); 230 let s = dart.stackTrace(e);
231 controller.addError(e, s); 231 controller.addError(e, s);
232 return; 232 return;
233 } 233 }
234 234
235 if (newStream != null) { 235 if (newStream != null) {
236 subscription.pause(); 236 subscription.pause();
237 controller.addStream(newStream).whenComplete(dart.bind(subscriptio n, 'resume')); 237 controller.addStream(newStream).whenComplete(dart.bind(subscriptio n, 'resume'));
238 } 238 }
239 }, {onError: dart.as(eventSink[_addError], core.Function), onDone: con troller.close.bind(controller)}); 239 }, {onError: dart.as(eventSink[_addError], core.Function), onDone: con troller.close.bind(controller)});
240 } 240 }).bind(this);
241 if (this.isBroadcast) { 241 if (this.isBroadcast) {
242 controller = new StreamController.broadcast({ 242 controller = new StreamController.broadcast({
243 onListen: onListen, 243 onListen: onListen,
244 onCancel: () => { 244 onCancel: () => {
245 subscription.cancel(); 245 subscription.cancel();
246 }, 246 },
247 sync: true 247 sync: true
248 }); 248 });
249 } else { 249 } else {
250 controller = new StreamController({ 250 controller = new StreamController({
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 } 752 }
753 timeout(timeLimit, opts) { 753 timeout(timeLimit, opts) {
754 let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null; 754 let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
755 dart.as(onTimeout, dart.functionType(dart.void, [EventSink])); 755 dart.as(onTimeout, dart.functionType(dart.void, [EventSink]));
756 let controller = null; 756 let controller = null;
757 let subscription = null; 757 let subscription = null;
758 let timer = null; 758 let timer = null;
759 let zone = null; 759 let zone = null;
760 let timeout = null; 760 let timeout = null;
761 // Function onData: (T) → void 761 // Function onData: (T) → void
762 function onData(event) { 762 let onData = event => {
763 dart.as(event, T); 763 dart.as(event, T);
764 timer.cancel(); 764 timer.cancel();
765 controller.add(event); 765 controller.add(event);
766 timer = zone.createTimer(timeLimit, dart.as(timeout, __CastType17)); 766 timer = zone.createTimer(timeLimit, dart.as(timeout, __CastType17));
767 } 767 };
768 // Function onError: (dynamic, StackTrace) → void 768 // Function onError: (dynamic, StackTrace) → void
769 function onError(error, stackTrace) { 769 let onError = (error, stackTrace) => {
770 timer.cancel(); 770 timer.cancel();
771 dart.assert(dart.is(controller, _StreamController) || dart.is(controll er, _BroadcastStreamController)); 771 dart.assert(dart.is(controller, _StreamController) || dart.is(controll er, _BroadcastStreamController));
772 let eventSink = controller; 772 let eventSink = controller;
773 dart.dcall(eventSink[_addError], error, stackTrace); 773 dart.dcall(eventSink[_addError], error, stackTrace);
774 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.functionType (dart.void, []))); 774 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.functionType (dart.void, [])));
775 } 775 };
776 // Function onDone: () → void 776 // Function onDone: () → void
777 function onDone() { 777 let onDone = () => {
778 timer.cancel(); 778 timer.cancel();
779 controller.close(); 779 controller.close();
780 } 780 };
781 // Function onListen: () → void 781 // Function onListen: () → void
782 function onListen() { 782 let onListen = (() => {
783 zone = Zone.current; 783 zone = Zone.current;
784 if (onTimeout == null) { 784 if (onTimeout == null) {
785 timeout = () => { 785 timeout = () => {
786 controller.addError(new TimeoutException("No stream event", timeLi mit), null); 786 controller.addError(new TimeoutException("No stream event", timeLi mit), null);
787 }; 787 };
788 } else { 788 } else {
789 onTimeout = dart.as(zone.registerUnaryCallback(onTimeout), __CastTyp e18); 789 onTimeout = dart.as(zone.registerUnaryCallback(onTimeout), __CastTyp e18);
790 let wrapper = new _ControllerEventSinkWrapper(null); 790 let wrapper = new _ControllerEventSinkWrapper(null);
791 timeout = () => { 791 timeout = () => {
792 wrapper[_sink] = controller; 792 wrapper[_sink] = controller;
793 zone.runUnaryGuarded(onTimeout, wrapper); 793 zone.runUnaryGuarded(onTimeout, wrapper);
794 wrapper[_sink] = null; 794 wrapper[_sink] = null;
795 }; 795 };
796 } 796 }
797 subscription = this.listen(onData, {onError: onError, onDone: onDone}) ; 797 subscription = this.listen(onData, {onError: onError, onDone: onDone}) ;
798 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.functionType (dart.void, []))); 798 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.functionType (dart.void, [])));
799 } 799 }).bind(this);
800 // Function onCancel: () → Future<dynamic> 800 // Function onCancel: () → Future<dynamic>
801 function onCancel() { 801 let onCancel = () => {
802 timer.cancel(); 802 timer.cancel();
803 let result = subscription.cancel(); 803 let result = subscription.cancel();
804 subscription = null; 804 subscription = null;
805 return result; 805 return result;
806 } 806 };
807 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis ten, onCancel) : new _SyncStreamController(onListen, () => { 807 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis ten, onCancel) : new _SyncStreamController(onListen, () => {
808 timer.cancel(); 808 timer.cancel();
809 subscription.pause(); 809 subscription.pause();
810 }, () => { 810 }, () => {
811 subscription.resume(); 811 subscription.resume();
812 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.functionType (dart.void, []))); 812 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.functionType (dart.void, [])));
813 }, onCancel); 813 }, onCancel);
814 return controller.stream; 814 return controller.stream;
815 } 815 }
816 } 816 }
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 this[_zone].runUnaryGuarded(this[_onData], data); 1144 this[_zone].runUnaryGuarded(this[_onData], data);
1145 this[_state] = dart.notNull(this[_state]) & ~dart.notNull(_BufferingStre amSubscription._STATE_IN_CALLBACK); 1145 this[_state] = dart.notNull(this[_state]) & ~dart.notNull(_BufferingStre amSubscription._STATE_IN_CALLBACK);
1146 this[_checkState](wasInputPaused); 1146 this[_checkState](wasInputPaused);
1147 } 1147 }
1148 [_sendError](error, stackTrace) { 1148 [_sendError](error, stackTrace) {
1149 dart.assert(!dart.notNull(this[_isCanceled])); 1149 dart.assert(!dart.notNull(this[_isCanceled]));
1150 dart.assert(!dart.notNull(this[_isPaused])); 1150 dart.assert(!dart.notNull(this[_isPaused]));
1151 dart.assert(!dart.notNull(this[_inCallback])); 1151 dart.assert(!dart.notNull(this[_inCallback]));
1152 let wasInputPaused = this[_isInputPaused]; 1152 let wasInputPaused = this[_isInputPaused];
1153 // Function sendError: () → void 1153 // Function sendError: () → void
1154 function sendError() { 1154 let sendError = (() => {
1155 if (dart.notNull(this[_isCanceled]) && !dart.notNull(this[_waitsForCan cel])) 1155 if (dart.notNull(this[_isCanceled]) && !dart.notNull(this[_waitsForCan cel]))
1156 return; 1156 return;
1157 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStr eamSubscription._STATE_IN_CALLBACK); 1157 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStr eamSubscription._STATE_IN_CALLBACK);
1158 if (dart.is(this[_onError], ZoneBinaryCallback)) { 1158 if (dart.is(this[_onError], ZoneBinaryCallback)) {
1159 this[_zone].runBinaryGuarded(dart.as(this[_onError], __CastType22), error, stackTrace); 1159 this[_zone].runBinaryGuarded(dart.as(this[_onError], __CastType22), error, stackTrace);
1160 } else { 1160 } else {
1161 this[_zone].runUnaryGuarded(dart.as(this[_onError], __CastType25), e rror); 1161 this[_zone].runUnaryGuarded(dart.as(this[_onError], __CastType25), e rror);
1162 } 1162 }
1163 this[_state] = dart.notNull(this[_state]) & ~dart.notNull(_BufferingSt reamSubscription._STATE_IN_CALLBACK); 1163 this[_state] = dart.notNull(this[_state]) & ~dart.notNull(_BufferingSt reamSubscription._STATE_IN_CALLBACK);
1164 } 1164 }).bind(this);
1165 if (this[_cancelOnError]) { 1165 if (this[_cancelOnError]) {
1166 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStr eamSubscription._STATE_WAIT_FOR_CANCEL); 1166 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStr eamSubscription._STATE_WAIT_FOR_CANCEL);
1167 this[_cancel](); 1167 this[_cancel]();
1168 if (dart.is(this[_cancelFuture], Future)) { 1168 if (dart.is(this[_cancelFuture], Future)) {
1169 this[_cancelFuture].whenComplete(sendError); 1169 this[_cancelFuture].whenComplete(sendError);
1170 } else { 1170 } else {
1171 sendError(); 1171 sendError();
1172 } 1172 }
1173 } else { 1173 } else {
1174 sendError(); 1174 sendError();
1175 this[_checkState](wasInputPaused); 1175 this[_checkState](wasInputPaused);
1176 } 1176 }
1177 } 1177 }
1178 [_sendDone]() { 1178 [_sendDone]() {
1179 dart.assert(!dart.notNull(this[_isCanceled])); 1179 dart.assert(!dart.notNull(this[_isCanceled]));
1180 dart.assert(!dart.notNull(this[_isPaused])); 1180 dart.assert(!dart.notNull(this[_isPaused]));
1181 dart.assert(!dart.notNull(this[_inCallback])); 1181 dart.assert(!dart.notNull(this[_inCallback]));
1182 // Function sendDone: () → void 1182 // Function sendDone: () → void
1183 function sendDone() { 1183 let sendDone = (() => {
1184 if (!dart.notNull(this[_waitsForCancel])) 1184 if (!dart.notNull(this[_waitsForCancel]))
1185 return; 1185 return;
1186 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStr eamSubscription._STATE_CANCELED) | dart.notNull(_BufferingStreamSubscription._ST ATE_CLOSED) | dart.notNull(_BufferingStreamSubscription._STATE_IN_CALLBACK); 1186 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStr eamSubscription._STATE_CANCELED) | dart.notNull(_BufferingStreamSubscription._ST ATE_CLOSED) | dart.notNull(_BufferingStreamSubscription._STATE_IN_CALLBACK);
1187 this[_zone].runGuarded(this[_onDone]); 1187 this[_zone].runGuarded(this[_onDone]);
1188 this[_state] = dart.notNull(this[_state]) & ~dart.notNull(_BufferingSt reamSubscription._STATE_IN_CALLBACK); 1188 this[_state] = dart.notNull(this[_state]) & ~dart.notNull(_BufferingSt reamSubscription._STATE_IN_CALLBACK);
1189 } 1189 }).bind(this);
1190 this[_cancel](); 1190 this[_cancel]();
1191 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStrea mSubscription._STATE_WAIT_FOR_CANCEL); 1191 this[_state] = dart.notNull(this[_state]) | dart.notNull(_BufferingStrea mSubscription._STATE_WAIT_FOR_CANCEL);
1192 if (dart.is(this[_cancelFuture], Future)) { 1192 if (dart.is(this[_cancelFuture], Future)) {
1193 this[_cancelFuture].whenComplete(sendDone); 1193 this[_cancelFuture].whenComplete(sendDone);
1194 } else { 1194 } else {
1195 sendDone(); 1195 sendDone();
1196 } 1196 }
1197 } 1197 }
1198 [_guardCallback](callback) { 1198 [_guardCallback](callback) {
1199 dart.assert(!dart.notNull(this[_inCallback])); 1199 dart.assert(!dart.notNull(this[_inCallback]));
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 static wait(futures, opts) { 1822 static wait(futures, opts) {
1823 let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false; 1823 let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false;
1824 let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null; 1824 let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null;
1825 dart.as(cleanUp, dart.functionType(dart.void, [dart.dynamic])); 1825 dart.as(cleanUp, dart.functionType(dart.void, [dart.dynamic]));
1826 let result = new (_Future$(core.List))(); 1826 let result = new (_Future$(core.List))();
1827 let values = null; 1827 let values = null;
1828 let remaining = 0; 1828 let remaining = 0;
1829 let error = null; 1829 let error = null;
1830 let stackTrace = null; 1830 let stackTrace = null;
1831 // Function handleError: (dynamic, dynamic) → void 1831 // Function handleError: (dynamic, dynamic) → void
1832 function handleError(theError, theStackTrace) { 1832 let handleError = (theError, theStackTrace) => {
1833 remaining = dart.notNull(remaining) - 1; 1833 remaining = dart.notNull(remaining) - 1;
1834 if (values != null) { 1834 if (values != null) {
1835 if (cleanUp != null) { 1835 if (cleanUp != null) {
1836 for (let value of values) { 1836 for (let value of values) {
1837 if (value != null) { 1837 if (value != null) {
1838 new Future.sync(() => { 1838 new Future.sync(() => {
1839 dart.dcall(cleanUp, value); 1839 dart.dcall(cleanUp, value);
1840 }); 1840 });
1841 } 1841 }
1842 } 1842 }
1843 } 1843 }
1844 values = null; 1844 values = null;
1845 if (remaining == 0 || dart.notNull(eagerError)) { 1845 if (remaining == 0 || dart.notNull(eagerError)) {
1846 result[_completeError](theError, dart.as(theStackTrace, core.Stack Trace)); 1846 result[_completeError](theError, dart.as(theStackTrace, core.Stack Trace));
1847 } else { 1847 } else {
1848 error = theError; 1848 error = theError;
1849 stackTrace = dart.as(theStackTrace, core.StackTrace); 1849 stackTrace = dart.as(theStackTrace, core.StackTrace);
1850 } 1850 }
1851 } else if (remaining == 0 && !dart.notNull(eagerError)) { 1851 } else if (remaining == 0 && !dart.notNull(eagerError)) {
1852 result[_completeError](error, stackTrace); 1852 result[_completeError](error, stackTrace);
1853 } 1853 }
1854 } 1854 };
1855 for (let future of futures) { 1855 for (let future of futures) {
1856 let pos = remaining; 1856 let pos = remaining;
1857 remaining = dart.notNull(pos) + 1; 1857 remaining = dart.notNull(pos) + 1;
1858 future.then(value => { 1858 future.then(value => {
1859 remaining = dart.notNull(remaining) - 1; 1859 remaining = dart.notNull(remaining) - 1;
1860 if (values != null) { 1860 if (values != null) {
1861 values[core.$set](pos, value); 1861 values[core.$set](pos, value);
1862 if (remaining == 0) { 1862 if (remaining == 0) {
1863 result[_completeWithValue](values); 1863 result[_completeWithValue](values);
1864 } 1864 }
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
2373 if (dart.notNull(hasError) && !dart.notNull(source[_zone].inSameErro rZone(zone))) { 2373 if (dart.notNull(hasError) && !dart.notNull(source[_zone].inSameErro rZone(zone))) {
2374 let asyncError = source[_error]; 2374 let asyncError = source[_error];
2375 source[_zone].handleUncaughtError(asyncError.error, asyncError.sta ckTrace); 2375 source[_zone].handleUncaughtError(asyncError.error, asyncError.sta ckTrace);
2376 return; 2376 return;
2377 } 2377 }
2378 let oldZone = null; 2378 let oldZone = null;
2379 if (!dart.notNull(core.identical(Zone.current, zone))) { 2379 if (!dart.notNull(core.identical(Zone.current, zone))) {
2380 oldZone = Zone._enter(zone); 2380 oldZone = Zone._enter(zone);
2381 } 2381 }
2382 // Function handleValueCallback: () → bool 2382 // Function handleValueCallback: () → bool
2383 function handleValueCallback() { 2383 let handleValueCallback = () => {
2384 try { 2384 try {
2385 listenerValueOrError = zone.runUnary(listener[_onValue], sourceV alue); 2385 listenerValueOrError = zone.runUnary(listener[_onValue], sourceV alue);
2386 return true; 2386 return true;
2387 } catch (e) { 2387 } catch (e) {
2388 let s = dart.stackTrace(e); 2388 let s = dart.stackTrace(e);
2389 listenerValueOrError = new AsyncError(e, s); 2389 listenerValueOrError = new AsyncError(e, s);
2390 return false; 2390 return false;
2391 } 2391 }
2392 2392
2393 } 2393 };
2394 // Function handleError: () → void 2394 // Function handleError: () → void
2395 function handleError() { 2395 let handleError = () => {
2396 let asyncError = source[_error]; 2396 let asyncError = source[_error];
2397 let matchesTest = true; 2397 let matchesTest = true;
2398 if (listener.hasErrorTest) { 2398 if (listener.hasErrorTest) {
2399 let test = listener[_errorTest]; 2399 let test = listener[_errorTest];
2400 try { 2400 try {
2401 matchesTest = dart.as(zone.runUnary(test, asyncError.error), c ore.bool); 2401 matchesTest = dart.as(zone.runUnary(test, asyncError.error), c ore.bool);
2402 } catch (e) { 2402 } catch (e) {
2403 let s = dart.stackTrace(e); 2403 let s = dart.stackTrace(e);
2404 listenerValueOrError = core.identical(asyncError.error, e) ? a syncError : new AsyncError(e, s); 2404 listenerValueOrError = core.identical(asyncError.error, e) ? a syncError : new AsyncError(e, s);
2405 listenerHasValue = false; 2405 listenerHasValue = false;
(...skipping 14 matching lines...) Expand all
2420 listenerValueOrError = core.identical(asyncError.error, e) ? a syncError : new AsyncError(e, s); 2420 listenerValueOrError = core.identical(asyncError.error, e) ? a syncError : new AsyncError(e, s);
2421 listenerHasValue = false; 2421 listenerHasValue = false;
2422 return; 2422 return;
2423 } 2423 }
2424 2424
2425 listenerHasValue = true; 2425 listenerHasValue = true;
2426 } else { 2426 } else {
2427 listenerValueOrError = asyncError; 2427 listenerValueOrError = asyncError;
2428 listenerHasValue = false; 2428 listenerHasValue = false;
2429 } 2429 }
2430 } 2430 };
2431 // Function handleWhenCompleteCallback: () → void 2431 // Function handleWhenCompleteCallback: () → void
2432 function handleWhenCompleteCallback() { 2432 let handleWhenCompleteCallback = () => {
2433 let completeResult = null; 2433 let completeResult = null;
2434 try { 2434 try {
2435 completeResult = zone.run(listener[_whenCompleteAction]); 2435 completeResult = zone.run(listener[_whenCompleteAction]);
2436 } catch (e) { 2436 } catch (e) {
2437 let s = dart.stackTrace(e); 2437 let s = dart.stackTrace(e);
2438 if (dart.notNull(hasError) && dart.notNull(core.identical(source [_error].error, e))) { 2438 if (dart.notNull(hasError) && dart.notNull(core.identical(source [_error].error, e))) {
2439 listenerValueOrError = source[_error]; 2439 listenerValueOrError = source[_error];
2440 } else { 2440 } else {
2441 listenerValueOrError = new AsyncError(e, s); 2441 listenerValueOrError = new AsyncError(e, s);
2442 } 2442 }
(...skipping 12 matching lines...) Expand all
2455 if (stackTrace === void 0) 2455 if (stackTrace === void 0)
2456 stackTrace = null; 2456 stackTrace = null;
2457 if (!dart.is(completeResult, _Future)) { 2457 if (!dart.is(completeResult, _Future)) {
2458 completeResult = new _Future(); 2458 completeResult = new _Future();
2459 dart.dsend(completeResult, _setError, error, stackTrace); 2459 dart.dsend(completeResult, _setError, error, stackTrace);
2460 } 2460 }
2461 _Future._propagateToListeners(dart.as(completeResult, _Futur e), new _FutureListener.chain(result)); 2461 _Future._propagateToListeners(dart.as(completeResult, _Futur e), new _FutureListener.chain(result));
2462 } 2462 }
2463 }); 2463 });
2464 } 2464 }
2465 } 2465 };
2466 if (!dart.notNull(hasError)) { 2466 if (!dart.notNull(hasError)) {
2467 if (listener.handlesValue) { 2467 if (listener.handlesValue) {
2468 listenerHasValue = handleValueCallback(); 2468 listenerHasValue = handleValueCallback();
2469 } 2469 }
2470 } else { 2470 } else {
2471 handleError(); 2471 handleError();
2472 } 2472 }
2473 if (listener.handlesComplete) { 2473 if (listener.handlesComplete) {
2474 handleWhenCompleteCallback(); 2474 handleWhenCompleteCallback();
2475 } 2475 }
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
2645 static _initializeScheduleImmediate() { 2645 static _initializeScheduleImmediate() {
2646 _js_helper.requiresPreamble(); 2646 _js_helper.requiresPreamble();
2647 if (self.scheduleImmediate != null) { 2647 if (self.scheduleImmediate != null) {
2648 return _AsyncRun._scheduleImmediateJsOverride; 2648 return _AsyncRun._scheduleImmediateJsOverride;
2649 } 2649 }
2650 if (dart.notNull(self.MutationObserver != null) && dart.notNull(self.docum ent != null)) { 2650 if (dart.notNull(self.MutationObserver != null) && dart.notNull(self.docum ent != null)) {
2651 let div = self.document.createElement("div"); 2651 let div = self.document.createElement("div");
2652 let span = self.document.createElement("span"); 2652 let span = self.document.createElement("span");
2653 let storedCallback = null; 2653 let storedCallback = null;
2654 // Function internalCallback: (dynamic) → dynamic 2654 // Function internalCallback: (dynamic) → dynamic
2655 function internalCallback(_) { 2655 let internalCallback = _ => {
2656 _isolate_helper.leaveJsAsync(); 2656 _isolate_helper.leaveJsAsync();
2657 let f = storedCallback; 2657 let f = storedCallback;
2658 storedCallback = null; 2658 storedCallback = null;
2659 dart.dcall(f); 2659 dart.dcall(f);
2660 } 2660 };
2661 ; 2661 ;
2662 let observer = new self.MutationObserver(_js_helper.convertDartClosureTo JS(internalCallback, 1)); 2662 let observer = new self.MutationObserver(_js_helper.convertDartClosureTo JS(internalCallback, 1));
2663 observer.observe(div, {childList: true}); 2663 observer.observe(div, {childList: true});
2664 return callback => { 2664 return callback => {
2665 dart.assert(storedCallback == null); 2665 dart.assert(storedCallback == null);
2666 _isolate_helper.enterJsAsync(); 2666 _isolate_helper.enterJsAsync();
2667 storedCallback = callback; 2667 storedCallback = callback;
2668 div.firstChild ? div.removeChild(span) : div.appendChild(span); 2668 div.firstChild ? div.removeChild(span) : div.appendChild(span);
2669 }; 2669 };
2670 } else if (self.setImmediate != null) { 2670 } else if (self.setImmediate != null) {
2671 return _AsyncRun._scheduleImmediateWithSetImmediate; 2671 return _AsyncRun._scheduleImmediateWithSetImmediate;
2672 } 2672 }
2673 return _AsyncRun._scheduleImmediateWithTimer; 2673 return _AsyncRun._scheduleImmediateWithTimer;
2674 } 2674 }
2675 static _scheduleImmediateJsOverride(callback) { 2675 static _scheduleImmediateJsOverride(callback) {
2676 // Function internalCallback: () → dynamic 2676 // Function internalCallback: () → dynamic
2677 function internalCallback() { 2677 let internalCallback = () => {
2678 _isolate_helper.leaveJsAsync(); 2678 _isolate_helper.leaveJsAsync();
2679 callback(); 2679 callback();
2680 } 2680 };
2681 ; 2681 ;
2682 _isolate_helper.enterJsAsync(); 2682 _isolate_helper.enterJsAsync();
2683 self.scheduleImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0)); 2683 self.scheduleImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0));
2684 } 2684 }
2685 static _scheduleImmediateWithSetImmediate(callback) { 2685 static _scheduleImmediateWithSetImmediate(callback) {
2686 // Function internalCallback: () → dynamic 2686 // Function internalCallback: () → dynamic
2687 function internalCallback() { 2687 let internalCallback = () => {
2688 _isolate_helper.leaveJsAsync(); 2688 _isolate_helper.leaveJsAsync();
2689 callback(); 2689 callback();
2690 } 2690 };
2691 ; 2691 ;
2692 _isolate_helper.enterJsAsync(); 2692 _isolate_helper.enterJsAsync();
2693 self.setImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0)); 2693 self.setImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0));
2694 } 2694 }
2695 static _scheduleImmediateWithTimer(callback) { 2695 static _scheduleImmediateWithTimer(callback) {
2696 Timer._createTimer(core.Duration.ZERO, callback); 2696 Timer._createTimer(core.Duration.ZERO, callback);
2697 } 2697 }
2698 } 2698 }
2699 dart.defineLazyProperties(_AsyncRun, { 2699 dart.defineLazyProperties(_AsyncRun, {
2700 get scheduleImmediateClosure() { 2700 get scheduleImmediateClosure() {
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
3034 let s = dart.stackTrace(e); 3034 let s = dart.stackTrace(e);
3035 result = new _Future(); 3035 result = new _Future();
3036 result[_asyncCompleteError](e, s); 3036 result[_asyncCompleteError](e, s);
3037 } 3037 }
3038 3038
3039 } else { 3039 } else {
3040 result = result.whenComplete(this[_onCancel]); 3040 result = result.whenComplete(this[_onCancel]);
3041 } 3041 }
3042 } 3042 }
3043 // Function complete: () → void 3043 // Function complete: () → void
3044 function complete() { 3044 let complete = (() => {
3045 if (dart.notNull(this[_doneFuture] != null) && dart.notNull(this[_done Future][_mayComplete])) { 3045 if (dart.notNull(this[_doneFuture] != null) && dart.notNull(this[_done Future][_mayComplete])) {
3046 this[_doneFuture][_asyncComplete](null); 3046 this[_doneFuture][_asyncComplete](null);
3047 } 3047 }
3048 } 3048 }).bind(this);
3049 if (result != null) { 3049 if (result != null) {
3050 result = result.whenComplete(complete); 3050 result = result.whenComplete(complete);
3051 } else { 3051 } else {
3052 complete(); 3052 complete();
3053 } 3053 }
3054 return result; 3054 return result;
3055 } 3055 }
3056 [_recordPause](subscription) { 3056 [_recordPause](subscription) {
3057 dart.as(subscription, StreamSubscription$(T)); 3057 dart.as(subscription, StreamSubscription$(T));
3058 if (this[_isAddingStream]) { 3058 if (this[_isAddingStream]) {
(...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after
5360 exports.ScheduleMicrotaskHandler = ScheduleMicrotaskHandler; 5360 exports.ScheduleMicrotaskHandler = ScheduleMicrotaskHandler;
5361 exports.CreateTimerHandler = CreateTimerHandler; 5361 exports.CreateTimerHandler = CreateTimerHandler;
5362 exports.CreatePeriodicTimerHandler = CreatePeriodicTimerHandler; 5362 exports.CreatePeriodicTimerHandler = CreatePeriodicTimerHandler;
5363 exports.PrintHandler = PrintHandler; 5363 exports.PrintHandler = PrintHandler;
5364 exports.ForkHandler = ForkHandler; 5364 exports.ForkHandler = ForkHandler;
5365 exports.ZoneSpecification = ZoneSpecification; 5365 exports.ZoneSpecification = ZoneSpecification;
5366 exports.ZoneDelegate = ZoneDelegate; 5366 exports.ZoneDelegate = ZoneDelegate;
5367 exports.Zone = Zone; 5367 exports.Zone = Zone;
5368 exports.runZoned = runZoned; 5368 exports.runZoned = runZoned;
5369 })(async, core, _internal, _js_helper, _isolate_helper, collection); 5369 })(async, core, _internal, _js_helper, _isolate_helper, collection);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698