OLD | NEW |
1 part of dart.async; | 1 part of dart.async; |
2 typedef dynamic _FutureOnValue<T>(T value); | 2 typedef dynamic _FutureOnValue<T>(T value); |
3 typedef bool _FutureErrorTest(var error); | 3 typedef bool _FutureErrorTest(var error); |
4 typedef _FutureAction(); | 4 typedef _FutureAction(); |
5 abstract class _Completer<T> implements Completer<T> {final _Future<T> future =
new _Future<T>(); | 5 abstract class _Completer<T> implements Completer<T> {final _Future<T> future =
new _Future<T>(); |
6 void complete([value]); | 6 void complete([value]); |
7 void completeError(Object error, [StackTrace stackTrace]) { | 7 void completeError(Object error, [StackTrace stackTrace]) { |
8 error = _nonNullError(error); | 8 error = _nonNullError(error); |
9 if (!future._mayComplete) throw new StateError("Future already completed"); | 9 if (!future._mayComplete) throw new StateError("Future already completed"); |
10 AsyncError replacement = Zone.current.errorCallback(error, stackTrace); | 10 AsyncError replacement = Zone.current.errorCallback(error, stackTrace); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 _FutureListener.then(this.result, _FutureOnValue onValue, Function errorCallbac
k) : callback = onValue, errorCallback = errorCallback, state = (errorCallback =
= null) ? STATE_THEN : STATE_THEN_ONERROR; | 51 _FutureListener.then(this.result, _FutureOnValue onValue, Function errorCallbac
k) : callback = onValue, errorCallback = errorCallback, state = (errorCallback =
= null) ? STATE_THEN : STATE_THEN_ONERROR; |
52 _FutureListener.catchError(this.result, this.errorCallback, _FutureErrorTest te
st) : callback = test, state = (test == null) ? STATE_CATCHERROR : STATE_CATCHER
ROR_TEST; | 52 _FutureListener.catchError(this.result, this.errorCallback, _FutureErrorTest te
st) : callback = test, state = (test == null) ? STATE_CATCHERROR : STATE_CATCHER
ROR_TEST; |
53 _FutureListener.whenComplete(this.result, _FutureAction onComplete) : callback
= onComplete, errorCallback = null, state = STATE_WHENCOMPLETE; | 53 _FutureListener.whenComplete(this.result, _FutureAction onComplete) : callback
= onComplete, errorCallback = null, state = STATE_WHENCOMPLETE; |
54 _FutureListener.chain(this.result) : callback = null, errorCallback = null, sta
te = STATE_CHAIN; | 54 _FutureListener.chain(this.result) : callback = null, errorCallback = null, sta
te = STATE_CHAIN; |
55 Zone get _zone => result._zone; | 55 Zone get _zone => result._zone; |
56 bool get handlesValue => (state & MASK_VALUE != 0); | 56 bool get handlesValue => (state & MASK_VALUE != 0); |
57 bool get handlesError => (state & MASK_ERROR != 0); | 57 bool get handlesError => (state & MASK_ERROR != 0); |
58 bool get hasErrorTest => (state == STATE_CATCHERROR_TEST); | 58 bool get hasErrorTest => (state == STATE_CATCHERROR_TEST); |
59 bool get handlesComplete => (state == STATE_WHENCOMPLETE); | 59 bool get handlesComplete => (state == STATE_WHENCOMPLETE); |
60 _FutureOnValue get _onValue { | 60 _FutureOnValue get _onValue { |
61 assert (handlesValue); return DEVC$RT.cast(callback, Function, __t14, "CastGener
al", """line 112, column 12 of dart:async/future_impl.dart: """, callback is __t
14, true); | 61 assert (handlesValue); return DEVC$RT.cast(callback, Function, __t14, "ImplicitC
ast", """line 112, column 12 of dart:async/future_impl.dart: """, callback is __
t14, true); |
62 } | 62 } |
63 Function get _onError => errorCallback; | 63 Function get _onError => errorCallback; |
64 _FutureErrorTest get _errorTest { | 64 _FutureErrorTest get _errorTest { |
65 assert (hasErrorTest); return DEVC$RT.cast(callback, Function, __t16, "CastGener
al", """line 117, column 12 of dart:async/future_impl.dart: """, callback is __t
16, false); | 65 assert (hasErrorTest); return DEVC$RT.cast(callback, Function, __t16, "Composite
Cast", """line 117, column 12 of dart:async/future_impl.dart: """, callback is _
_t16, false); |
66 } | 66 } |
67 _FutureAction get _whenCompleteAction { | 67 _FutureAction get _whenCompleteAction { |
68 assert (handlesComplete); return DEVC$RT.cast(callback, Function, __t18, "CastGe
neral", """line 121, column 12 of dart:async/future_impl.dart: """, callback is
__t18, true); | 68 assert (handlesComplete); return DEVC$RT.cast(callback, Function, __t18, "Implic
itCast", """line 121, column 12 of dart:async/future_impl.dart: """, callback is
__t18, true); |
69 } | 69 } |
70 } | 70 } |
71 class _Future<T> implements Future<T> {static const int _INCOMPLETE = 0; | 71 class _Future<T> implements Future<T> {static const int _INCOMPLETE = 0; |
72 static const int _PENDING_COMPLETE = 1; | 72 static const int _PENDING_COMPLETE = 1; |
73 static const int _CHAINED = 2; | 73 static const int _CHAINED = 2; |
74 static const int _VALUE = 4; | 74 static const int _VALUE = 4; |
75 static const int _ERROR = 8; | 75 static const int _ERROR = 8; |
76 int _state = _INCOMPLETE; | 76 int _state = _INCOMPLETE; |
77 final Zone _zone = Zone.current; | 77 final Zone _zone = Zone.current; |
78 var _resultOrListeners; | 78 var _resultOrListeners; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 Future<T> whenComplete(action()) { | 133 Future<T> whenComplete(action()) { |
134 _Future result = new _Future<T>(); | 134 _Future result = new _Future<T>(); |
135 if (!identical(result._zone, _ROOT_ZONE)) { | 135 if (!identical(result._zone, _ROOT_ZONE)) { |
136 action = result._zone.registerCallback(action); | 136 action = result._zone.registerCallback(action); |
137 } | 137 } |
138 _addListener(new _FutureListener.whenComplete(result, action)); | 138 _addListener(new _FutureListener.whenComplete(result, action)); |
139 return DEVC$RT.cast(result, DEVC$RT.type((_Future<dynamic> _) { | 139 return DEVC$RT.cast(result, DEVC$RT.type((_Future<dynamic> _) { |
140 } | 140 } |
141 ), DEVC$RT.type((Future<T> _) { | 141 ), DEVC$RT.type((Future<T> _) { |
142 } | 142 } |
143 ), "CastDynamic", """line 233, column 12 of dart:async/future_impl.dart: """, re
sult is Future<T>, false); | 143 ), "CompositeCast", """line 233, column 12 of dart:async/future_impl.dart: """,
result is Future<T>, false); |
144 } | 144 } |
145 Stream<T> asStream() => ((__x26) => DEVC$RT.cast(__x26, DEVC$RT.type((Stream<dy
namic> _) { | 145 Stream<T> asStream() => ((__x26) => DEVC$RT.cast(__x26, DEVC$RT.type((Stream<dy
namic> _) { |
146 } | 146 } |
147 ), DEVC$RT.type((Stream<T> _) { | 147 ), DEVC$RT.type((Stream<T> _) { |
148 } | 148 } |
149 ), "CastExact", """line 236, column 27 of dart:async/future_impl.dart: """, __x2
6 is Stream<T>, false))(new Stream.fromFuture(this)); | 149 ), "InferableAllocation", """line 236, column 27 of dart:async/future_impl.dart:
""", __x26 is Stream<T>, false))(new Stream.fromFuture(this)); |
150 void _markPendingCompletion() { | 150 void _markPendingCompletion() { |
151 if (!_mayComplete) throw new StateError("Future already completed"); | 151 if (!_mayComplete) throw new StateError("Future already completed"); |
152 _state = _PENDING_COMPLETE; | 152 _state = _PENDING_COMPLETE; |
153 } | 153 } |
154 T get _value { | 154 T get _value { |
155 assert (_isComplete && _hasValue); return DEVC$RT.cast(_resultOrListeners, dynam
ic, T, "CastGeneral", """line 245, column 12 of dart:async/future_impl.dart: """
, _resultOrListeners is T, false); | 155 assert (_isComplete && _hasValue); return DEVC$RT.cast(_resultOrListeners, dynam
ic, T, "CompositeCast", """line 245, column 12 of dart:async/future_impl.dart: "
"", _resultOrListeners is T, false); |
156 } | 156 } |
157 AsyncError get _error { | 157 AsyncError get _error { |
158 assert (_isComplete && _hasError); return DEVC$RT.cast(_resultOrListeners, dynam
ic, AsyncError, "CastGeneral", """line 250, column 12 of dart:async/future_impl.
dart: """, _resultOrListeners is AsyncError, true); | 158 assert (_isComplete && _hasError); return DEVC$RT.cast(_resultOrListeners, dynam
ic, AsyncError, "DynamicCast", """line 250, column 12 of dart:async/future_impl.
dart: """, _resultOrListeners is AsyncError, true); |
159 } | 159 } |
160 void _setValue(T value) { | 160 void _setValue(T value) { |
161 assert (!_isComplete); _state = _VALUE; | 161 assert (!_isComplete); _state = _VALUE; |
162 _resultOrListeners = value; | 162 _resultOrListeners = value; |
163 } | 163 } |
164 void _setErrorObject(AsyncError error) { | 164 void _setErrorObject(AsyncError error) { |
165 assert (!_isComplete); _state = _ERROR; | 165 assert (!_isComplete); _state = _ERROR; |
166 _resultOrListeners = error; | 166 _resultOrListeners = error; |
167 } | 167 } |
168 void _setError(Object error, StackTrace stackTrace) { | 168 void _setError(Object error, StackTrace stackTrace) { |
169 _setErrorObject(new AsyncError(error, stackTrace)); | 169 _setErrorObject(new AsyncError(error, stackTrace)); |
170 } | 170 } |
171 void _addListener(_FutureListener listener) { | 171 void _addListener(_FutureListener listener) { |
172 assert (listener._nextListener == null); if (_isComplete) { | 172 assert (listener._nextListener == null); if (_isComplete) { |
173 _zone.scheduleMicrotask(() { | 173 _zone.scheduleMicrotask(() { |
174 _propagateToListeners(this, listener); | 174 _propagateToListeners(this, listener); |
175 } | 175 } |
176 ); | 176 ); |
177 } | 177 } |
178 else { | 178 else { |
179 listener._nextListener = DEVC$RT.cast(_resultOrListeners, dynamic, _FutureListen
er, "CastGeneral", """line 277, column 32 of dart:async/future_impl.dart: """, _
resultOrListeners is _FutureListener, true); | 179 listener._nextListener = DEVC$RT.cast(_resultOrListeners, dynamic, _FutureListen
er, "DynamicCast", """line 277, column 32 of dart:async/future_impl.dart: """, _
resultOrListeners is _FutureListener, true); |
180 _resultOrListeners = listener; | 180 _resultOrListeners = listener; |
181 } | 181 } |
182 } | 182 } |
183 _FutureListener _removeListeners() { | 183 _FutureListener _removeListeners() { |
184 assert (!_isComplete); _FutureListener current = DEVC$RT.cast(_resultOrListeners
, dynamic, _FutureListener, "CastGeneral", """line 286, column 31 of dart:async/
future_impl.dart: """, _resultOrListeners is _FutureListener, true); | 184 assert (!_isComplete); _FutureListener current = DEVC$RT.cast(_resultOrListeners
, dynamic, _FutureListener, "DynamicCast", """line 286, column 31 of dart:async/
future_impl.dart: """, _resultOrListeners is _FutureListener, true); |
185 _resultOrListeners = null; | 185 _resultOrListeners = null; |
186 _FutureListener prev = null; | 186 _FutureListener prev = null; |
187 while (current != null) { | 187 while (current != null) { |
188 _FutureListener next = current._nextListener; | 188 _FutureListener next = current._nextListener; |
189 current._nextListener = prev; | 189 current._nextListener = prev; |
190 prev = current; | 190 prev = current; |
191 current = next; | 191 current = next; |
192 } | 192 } |
193 return prev; | 193 return prev; |
194 } | 194 } |
195 static void _chainForeignFuture(Future source, _Future target) { | 195 static void _chainForeignFuture(Future source, _Future target) { |
196 assert (!target._isComplete); assert (source is! _Future); target._isChained = t
rue; | 196 assert (!target._isComplete); assert (source is! _Future); target._isChained = t
rue; |
197 source.then((value) { | 197 source.then((value) { |
198 assert (target._isChained); target._completeWithValue(value); | 198 assert (target._isChained); target._completeWithValue(value); |
199 } | 199 } |
200 , onError: (error, [stackTrace]) { | 200 , onError: (error, [stackTrace]) { |
201 assert (target._isChained); target._completeError(error, DEVC$RT.cast(stackTrace
, dynamic, StackTrace, "CastGeneral", """line 317, column 38 of dart:async/futur
e_impl.dart: """, stackTrace is StackTrace, true)); | 201 assert (target._isChained); target._completeError(error, DEVC$RT.cast(stackTrace
, dynamic, StackTrace, "DynamicCast", """line 317, column 38 of dart:async/futur
e_impl.dart: """, stackTrace is StackTrace, true)); |
202 } | 202 } |
203 ); | 203 ); |
204 } | 204 } |
205 static void _chainCoreFuture(_Future source, _Future target) { | 205 static void _chainCoreFuture(_Future source, _Future target) { |
206 assert (!target._isComplete); assert (source is _Future); target._isChained = tr
ue; | 206 assert (!target._isComplete); assert (source is _Future); target._isChained = tr
ue; |
207 _FutureListener listener = new _FutureListener.chain(target); | 207 _FutureListener listener = new _FutureListener.chain(target); |
208 if (source._isComplete) { | 208 if (source._isComplete) { |
209 _propagateToListeners(source, listener); | 209 _propagateToListeners(source, listener); |
210 } | 210 } |
211 else { | 211 else { |
212 source._addListener(listener); | 212 source._addListener(listener); |
213 } | 213 } |
214 } | 214 } |
215 void _complete(value) { | 215 void _complete(value) { |
216 assert (!_isComplete); if (value is Future) { | 216 assert (!_isComplete); if (value is Future) { |
217 if (value is _Future) { | 217 if (value is _Future) { |
218 _chainCoreFuture(DEVC$RT.cast(value, dynamic, DEVC$RT.type((_Future<dynamic> _)
{ | 218 _chainCoreFuture(DEVC$RT.cast(value, dynamic, DEVC$RT.type((_Future<dynamic> _)
{ |
219 } | 219 } |
220 ), "CastGeneral", """line 341, column 26 of dart:async/future_impl.dart: """, va
lue is _Future<dynamic>, true), this); | 220 ), "DynamicCast", """line 341, column 26 of dart:async/future_impl.dart: """, va
lue is _Future<dynamic>, true), this); |
221 } | 221 } |
222 else { | 222 else { |
223 _chainForeignFuture(DEVC$RT.cast(value, dynamic, DEVC$RT.type((Future<dynamic> _
) { | 223 _chainForeignFuture(DEVC$RT.cast(value, dynamic, DEVC$RT.type((Future<dynamic> _
) { |
224 } | 224 } |
225 ), "CastGeneral", """line 343, column 29 of dart:async/future_impl.dart: """, va
lue is Future<dynamic>, true), this); | 225 ), "DynamicCast", """line 343, column 29 of dart:async/future_impl.dart: """, va
lue is Future<dynamic>, true), this); |
226 } | 226 } |
227 } | 227 } |
228 else { | 228 else { |
229 _FutureListener listeners = _removeListeners(); | 229 _FutureListener listeners = _removeListeners(); |
230 _setValue(DEVC$RT.cast(value, dynamic, T, "CastGeneral", """line 347, column 17
of dart:async/future_impl.dart: """, value is T, false)); | 230 _setValue(DEVC$RT.cast(value, dynamic, T, "CompositeCast", """line 347, column
17 of dart:async/future_impl.dart: """, value is T, false)); |
231 _propagateToListeners(this, listeners); | 231 _propagateToListeners(this, listeners); |
232 } | 232 } |
233 } | 233 } |
234 void _completeWithValue(value) { | 234 void _completeWithValue(value) { |
235 assert (!_isComplete); assert (value is! Future); _FutureListener listeners = _r
emoveListeners(); | 235 assert (!_isComplete); assert (value is! Future); _FutureListener listeners = _r
emoveListeners(); |
236 _setValue(DEVC$RT.cast(value, dynamic, T, "CastGeneral", """line 357, column 15
of dart:async/future_impl.dart: """, value is T, false)); | 236 _setValue(DEVC$RT.cast(value, dynamic, T, "CompositeCast", """line 357, column
15 of dart:async/future_impl.dart: """, value is T, false)); |
237 _propagateToListeners(this, listeners); | 237 _propagateToListeners(this, listeners); |
238 } | 238 } |
239 void _completeError(error, [StackTrace stackTrace]) { | 239 void _completeError(error, [StackTrace stackTrace]) { |
240 assert (!_isComplete); _FutureListener listeners = _removeListeners(); | 240 assert (!_isComplete); _FutureListener listeners = _removeListeners(); |
241 _setError(error, stackTrace); | 241 _setError(error, stackTrace); |
242 _propagateToListeners(this, listeners); | 242 _propagateToListeners(this, listeners); |
243 } | 243 } |
244 void _asyncComplete(value) { | 244 void _asyncComplete(value) { |
245 assert (!_isComplete); if (value == null) { | 245 assert (!_isComplete); if (value == null) { |
246 } | 246 } |
247 else if (value is Future) { | 247 else if (value is Future) { |
248 Future<T> typedFuture = DEVC$RT.cast(value, dynamic, DEVC$RT.type((Future<T> _)
{ | 248 Future<T> typedFuture = DEVC$RT.cast(value, dynamic, DEVC$RT.type((Future<T> _)
{ |
249 } | 249 } |
250 ), "CastGeneral", """line 386, column 31 of dart:async/future_impl.dart: """, va
lue is Future<T>, false); | 250 ), "CompositeCast", """line 386, column 31 of dart:async/future_impl.dart: """,
value is Future<T>, false); |
251 if (typedFuture is _Future) { | 251 if (typedFuture is _Future) { |
252 _Future<T> coreFuture = DEVC$RT.cast(typedFuture, DEVC$RT.type((Future<T> _) { | 252 _Future<T> coreFuture = DEVC$RT.cast(typedFuture, DEVC$RT.type((Future<T> _) { |
253 } | 253 } |
254 ), DEVC$RT.type((_Future<T> _) { | 254 ), DEVC$RT.type((_Future<T> _) { |
255 } | 255 } |
256 ), "CastGeneral", """line 388, column 33 of dart:async/future_impl.dart: """, ty
pedFuture is _Future<T>, false); | 256 ), "CompositeCast", """line 388, column 33 of dart:async/future_impl.dart: """,
typedFuture is _Future<T>, false); |
257 if (coreFuture._isComplete && coreFuture._hasError) { | 257 if (coreFuture._isComplete && coreFuture._hasError) { |
258 _markPendingCompletion(); | 258 _markPendingCompletion(); |
259 _zone.scheduleMicrotask(() { | 259 _zone.scheduleMicrotask(() { |
260 _chainCoreFuture(coreFuture, this); | 260 _chainCoreFuture(coreFuture, this); |
261 } | 261 } |
262 ); | 262 ); |
263 } | 263 } |
264 else { | 264 else { |
265 _chainCoreFuture(coreFuture, this); | 265 _chainCoreFuture(coreFuture, this); |
266 } | 266 } |
267 } | 267 } |
268 else { | 268 else { |
269 _chainForeignFuture(typedFuture, this); | 269 _chainForeignFuture(typedFuture, this); |
270 } | 270 } |
271 return;} | 271 return;} |
272 else { | 272 else { |
273 T typedValue = DEVC$RT.cast(value, dynamic, T, "CastGeneral", """line 407, colum
n 22 of dart:async/future_impl.dart: """, value is T, false); | 273 T typedValue = DEVC$RT.cast(value, dynamic, T, "CompositeCast", """line 407, col
umn 22 of dart:async/future_impl.dart: """, value is T, false); |
274 } | 274 } |
275 _markPendingCompletion(); | 275 _markPendingCompletion(); |
276 _zone.scheduleMicrotask(() { | 276 _zone.scheduleMicrotask(() { |
277 _completeWithValue(value); | 277 _completeWithValue(value); |
278 } | 278 } |
279 ); | 279 ); |
280 } | 280 } |
281 void _asyncCompleteError(error, StackTrace stackTrace) { | 281 void _asyncCompleteError(error, StackTrace stackTrace) { |
282 assert (!_isComplete); _markPendingCompletion(); | 282 assert (!_isComplete); _markPendingCompletion(); |
283 _zone.scheduleMicrotask(() { | 283 _zone.scheduleMicrotask(() { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 listenerValueOrError = new AsyncError(e, s); | 324 listenerValueOrError = new AsyncError(e, s); |
325 return false; | 325 return false; |
326 } | 326 } |
327 } | 327 } |
328 void handleError() { | 328 void handleError() { |
329 AsyncError asyncError = source._error; | 329 AsyncError asyncError = source._error; |
330 bool matchesTest = true; | 330 bool matchesTest = true; |
331 if (listener.hasErrorTest) { | 331 if (listener.hasErrorTest) { |
332 _FutureErrorTest test = listener._errorTest; | 332 _FutureErrorTest test = listener._errorTest; |
333 try { | 333 try { |
334 matchesTest = ((__x27) => DEVC$RT.cast(__x27, dynamic, bool, "CastGeneral",
"""line 499, column 29 of dart:async/future_impl.dart: """, __x27 is bool, true)
)(zone.runUnary(test, asyncError.error)); | 334 matchesTest = ((__x27) => DEVC$RT.cast(__x27, dynamic, bool, "DynamicCast",
"""line 499, column 29 of dart:async/future_impl.dart: """, __x27 is bool, true)
)(zone.runUnary(test, asyncError.error)); |
335 } | 335 } |
336 catch (e, s) { | 336 catch (e, s) { |
337 listenerValueOrError = identical(asyncError.error, e) ? asyncError : new Asy
ncError(e, s); | 337 listenerValueOrError = identical(asyncError.error, e) ? asyncError : new Asy
ncError(e, s); |
338 listenerHasValue = false; | 338 listenerHasValue = false; |
339 return;} | 339 return;} |
340 } | 340 } |
341 Function errorCallback = listener._onError; | 341 Function errorCallback = listener._onError; |
342 if (matchesTest && errorCallback != null) { | 342 if (matchesTest && errorCallback != null) { |
343 try { | 343 try { |
344 if (errorCallback is ZoneBinaryCallback) { | 344 if (errorCallback is ZoneBinaryCallback) { |
345 listenerValueOrError = zone.runBinary(errorCallback, asyncError.error, asy
ncError.stackTrace); | 345 listenerValueOrError = zone.runBinary(errorCallback, asyncError.error, asy
ncError.stackTrace); |
346 } | 346 } |
347 else { | 347 else { |
348 listenerValueOrError = zone.runUnary(DEVC$RT.cast(errorCallback, Function,
__t14, "CastGeneral", """line 515, column 54 of dart:async/future_impl.dart: ""
", errorCallback is __t14, true), asyncError.error); | 348 listenerValueOrError = zone.runUnary(DEVC$RT.cast(errorCallback, Function,
__t14, "ImplicitCast", """line 515, column 54 of dart:async/future_impl.dart: "
"", errorCallback is __t14, true), asyncError.error); |
349 } | 349 } |
350 } | 350 } |
351 catch (e, s) { | 351 catch (e, s) { |
352 listenerValueOrError = identical(asyncError.error, e) ? asyncError : new Asy
ncError(e, s); | 352 listenerValueOrError = identical(asyncError.error, e) ? asyncError : new Asy
ncError(e, s); |
353 listenerHasValue = false; | 353 listenerHasValue = false; |
354 return;} | 354 return;} |
355 listenerHasValue = true; | 355 listenerHasValue = true; |
356 } | 356 } |
357 else { | 357 else { |
358 listenerValueOrError = asyncError; | 358 listenerValueOrError = asyncError; |
(...skipping 21 matching lines...) Expand all Loading... |
380 completeResult.then((ignored) { | 380 completeResult.then((ignored) { |
381 _propagateToListeners(source, new _FutureListener.chain(result)); | 381 _propagateToListeners(source, new _FutureListener.chain(result)); |
382 } | 382 } |
383 , onError: (error, [stackTrace]) { | 383 , onError: (error, [stackTrace]) { |
384 if (completeResult is! _Future) { | 384 if (completeResult is! _Future) { |
385 completeResult = new _Future(); | 385 completeResult = new _Future(); |
386 completeResult._setError(error, stackTrace); | 386 completeResult._setError(error, stackTrace); |
387 } | 387 } |
388 _propagateToListeners(DEVC$RT.cast(completeResult, dynamic, DEVC$RT.type((_
Future<dynamic> _) { | 388 _propagateToListeners(DEVC$RT.cast(completeResult, dynamic, DEVC$RT.type((_
Future<dynamic> _) { |
389 } | 389 } |
390 ), "CastGeneral", """line 559, column 37 of dart:async/future_impl.dart: """
, completeResult is _Future<dynamic>, true), new _FutureListener.chain(result)); | 390 ), "DynamicCast", """line 559, column 37 of dart:async/future_impl.dart: """
, completeResult is _Future<dynamic>, true), new _FutureListener.chain(result)); |
391 } | 391 } |
392 ); | 392 ); |
393 } | 393 } |
394 } | 394 } |
395 if (!hasError) { | 395 if (!hasError) { |
396 if (listener.handlesValue) { | 396 if (listener.handlesValue) { |
397 listenerHasValue = handleValueCallback(); | 397 listenerHasValue = handleValueCallback(); |
398 } | 398 } |
399 } | 399 } |
400 else { | 400 else { |
401 handleError(); | 401 handleError(); |
402 } | 402 } |
403 if (listener.handlesComplete) { | 403 if (listener.handlesComplete) { |
404 handleWhenCompleteCallback(); | 404 handleWhenCompleteCallback(); |
405 } | 405 } |
406 if (oldZone != null) Zone._leave(oldZone); | 406 if (oldZone != null) Zone._leave(oldZone); |
407 if (isPropagationAborted) return; if (listenerHasValue && !identical(sourceValu
e, listenerValueOrError) && listenerValueOrError is Future) { | 407 if (isPropagationAborted) return; if (listenerHasValue && !identical(sourceValu
e, listenerValueOrError) && listenerValueOrError is Future) { |
408 Future chainSource = DEVC$RT.cast(listenerValueOrError, dynamic, DEVC$RT.type((F
uture<dynamic> _) { | 408 Future chainSource = DEVC$RT.cast(listenerValueOrError, dynamic, DEVC$RT.type((F
uture<dynamic> _) { |
409 } | 409 } |
410 ), "CastGeneral", """line 585, column 32 of dart:async/future_impl.dart: """, li
stenerValueOrError is Future<dynamic>, true); | 410 ), "DynamicCast", """line 585, column 32 of dart:async/future_impl.dart: """, li
stenerValueOrError is Future<dynamic>, true); |
411 _Future result = listener.result; | 411 _Future result = listener.result; |
412 if (chainSource is _Future) { | 412 if (chainSource is _Future) { |
413 if (chainSource._isComplete) { | 413 if (chainSource._isComplete) { |
414 result._isChained = true; | 414 result._isChained = true; |
415 source = chainSource; | 415 source = chainSource; |
416 listeners = new _FutureListener.chain(result); | 416 listeners = new _FutureListener.chain(result); |
417 continue; | 417 continue; |
418 } | 418 } |
419 else { | 419 else { |
420 _chainCoreFuture(chainSource, result); | 420 _chainCoreFuture(chainSource, result); |
421 } | 421 } |
422 } | 422 } |
423 else { | 423 else { |
424 _chainForeignFuture(chainSource, result); | 424 _chainForeignFuture(chainSource, result); |
425 } | 425 } |
426 return;} | 426 return;} |
427 } | 427 } |
428 _Future result = listener.result; | 428 _Future result = listener.result; |
429 listeners = result._removeListeners(); | 429 listeners = result._removeListeners(); |
430 if (listenerHasValue) { | 430 if (listenerHasValue) { |
431 result._setValue(listenerValueOrError); | 431 result._setValue(listenerValueOrError); |
432 } | 432 } |
433 else { | 433 else { |
434 AsyncError asyncError = DEVC$RT.cast(listenerValueOrError, dynamic, AsyncError,
"CastGeneral", """line 610, column 33 of dart:async/future_impl.dart: """, liste
nerValueOrError is AsyncError, true); | 434 AsyncError asyncError = DEVC$RT.cast(listenerValueOrError, dynamic, AsyncError,
"DynamicCast", """line 610, column 33 of dart:async/future_impl.dart: """, liste
nerValueOrError is AsyncError, true); |
435 result._setErrorObject(asyncError); | 435 result._setErrorObject(asyncError); |
436 } | 436 } |
437 source = result; | 437 source = result; |
438 } | 438 } |
439 } | 439 } |
440 Future timeout(Duration timeLimit, { | 440 Future timeout(Duration timeLimit, { |
441 onTimeout()} | 441 onTimeout()} |
442 ) { | 442 ) { |
443 if (_isComplete) return new _Future.immediate(this); | 443 if (_isComplete) return new _Future.immediate(this); |
444 _Future result = new _Future(); | 444 _Future result = new _Future(); |
(...skipping 19 matching lines...) Expand all Loading... |
464 } | 464 } |
465 this.then((T v) { | 465 this.then((T v) { |
466 if (timer.isActive) { | 466 if (timer.isActive) { |
467 timer.cancel(); | 467 timer.cancel(); |
468 result._completeWithValue(v); | 468 result._completeWithValue(v); |
469 } | 469 } |
470 } | 470 } |
471 , onError: (e, s) { | 471 , onError: (e, s) { |
472 if (timer.isActive) { | 472 if (timer.isActive) { |
473 timer.cancel(); | 473 timer.cancel(); |
474 result._completeError(e, DEVC$RT.cast(s, dynamic, StackTrace, "CastGeneral", ""
"line 646, column 34 of dart:async/future_impl.dart: """, s is StackTrace, true)
); | 474 result._completeError(e, DEVC$RT.cast(s, dynamic, StackTrace, "DynamicCast", ""
"line 646, column 34 of dart:async/future_impl.dart: """, s is StackTrace, true)
); |
475 } | 475 } |
476 } | 476 } |
477 ); | 477 ); |
478 return result; | 478 return result; |
479 } | 479 } |
480 } | 480 } |
481 typedef dynamic __t14(dynamic __u15); | 481 typedef dynamic __t14(dynamic __u15); |
482 typedef bool __t16(dynamic __u17); | 482 typedef bool __t16(dynamic __u17); |
483 typedef dynamic __t18(); | 483 typedef dynamic __t18(); |
484 typedef dynamic __t20<T>(T __u21); | 484 typedef dynamic __t20<T>(T __u21); |
OLD | NEW |