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

Side by Side Diff: tool/input_sdk/lib/async/future.dart

Issue 1554683002: Update to latest analyzer (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 11 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 | « tool/analyze.sh ('k') | tool/input_sdk/lib/async/future_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.async; 5 part of dart.async;
6 6
7 /** 7 /**
8 * An object representing a delayed computation. 8 * An object representing a delayed computation.
9 * 9 *
10 * A [Future] is used to represent a potential value, or error, 10 * A [Future] is used to represent a potential value, or error,
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 * complete before the returned future is completed (still with the first 247 * complete before the returned future is completed (still with the first
248 * error to occur, the remaining errors are silently dropped). 248 * error to occur, the remaining errors are silently dropped).
249 * 249 *
250 * If [cleanUp] is provided, in the case of an error, any non-null result of 250 * If [cleanUp] is provided, in the case of an error, any non-null result of
251 * a successful future is passed to `cleanUp`, which can then release any 251 * a successful future is passed to `cleanUp`, which can then release any
252 * resources that the successful operation allocated. 252 * resources that the successful operation allocated.
253 * 253 *
254 * The call to `cleanUp` should not throw. If it does, the error will be an 254 * The call to `cleanUp` should not throw. If it does, the error will be an
255 * uncaught asynchronous error. 255 * uncaught asynchronous error.
256 */ 256 */
257 static Future<List> wait(Iterable<Future> futures, 257 static Future<List/*<T>*/> wait/*<T>*/(Iterable<Future/*<T>*/> futures,
258 {bool eagerError: false, 258 {bool eagerError: false,
259 void cleanUp(successValue)}) { 259 void cleanUp(/*=T*/ successValue)}) {
260 final _Future<List> result = new _Future<List>(); 260 final _Future<List/*<T>*/> result = new _Future<List/*<T>*/>();
261 List values; // Collects the values. Set to null on error. 261 List/*<T>*/ values; // Collects the values. Set to null on error.
262 int remaining = 0; // How many futures are we waiting for. 262 int remaining = 0; // How many futures are we waiting for.
263 var error; // The first error from a future. 263 var error; // The first error from a future.
264 StackTrace stackTrace; // The stackTrace that came with the error. 264 StackTrace stackTrace; // The stackTrace that came with the error.
265 265
266 // Handle an error from any of the futures. 266 // Handle an error from any of the futures.
267 void handleError(theError, theStackTrace) { 267 void handleError(theError, theStackTrace) {
268 remaining--; 268 remaining--;
269 if (values != null) { 269 if (values != null) {
270 if (cleanUp != null) { 270 if (cleanUp != null) {
271 for (var value2 in values) { 271 for (var value2 in values) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 } 305 }
306 if (remaining == 0 && !eagerError) { 306 if (remaining == 0 && !eagerError) {
307 result._completeError(error, stackTrace); 307 result._completeError(error, stackTrace);
308 } 308 }
309 } 309 }
310 }, onError: handleError); 310 }, onError: handleError);
311 } 311 }
312 if (remaining == 0) { 312 if (remaining == 0) {
313 return new Future.value(const []); 313 return new Future.value(const []);
314 } 314 }
315 values = new List(remaining); 315 values = new List/*<T>*/(remaining);
316 return result; 316 return result;
317 } 317 }
318 318
319 /** 319 /**
320 * Perform an async operation for each element of the iterable, in turn. 320 * Perform an async operation for each element of the iterable, in turn.
321 * 321 *
322 * Runs [f] for each element in [input] in order, moving to the next element 322 * Runs [f] for each element in [input] in order, moving to the next element
323 * only when the [Future] returned by [f] completes. Returns a [Future] that 323 * only when the [Future] returned by [f] completes. Returns a [Future] that
324 * completes when all elements have been processed. 324 * completes when all elements have been processed.
325 * 325 *
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 * the future returned by `then` will be completed with 400 * the future returned by `then` will be completed with
401 * the same result as the future returned by the callback. 401 * the same result as the future returned by the callback.
402 * 402 *
403 * If [onError] is not given, and this future completes with an error, 403 * If [onError] is not given, and this future completes with an error,
404 * the error is forwarded directly to the returned future. 404 * the error is forwarded directly to the returned future.
405 * 405 *
406 * In most cases, it is more readable to use [catchError] separately, possibly 406 * In most cases, it is more readable to use [catchError] separately, possibly
407 * with a `test` parameter, instead of handling both value and error in a 407 * with a `test` parameter, instead of handling both value and error in a
408 * single [then] call. 408 * single [then] call.
409 */ 409 */
410 Future then(onValue(T value), { Function onError }); 410 Future/*<S>*/ then/*<S>*/(/*=S*/ onValue(T value), { Function onError });
411 411
412 /** 412 /**
413 * Handles errors emitted by this [Future]. 413 * Handles errors emitted by this [Future].
414 * 414 *
415 * This is the asynchronous equivalent of a "catch" block. 415 * This is the asynchronous equivalent of a "catch" block.
416 * 416 *
417 * Returns a new [Future] that will be completed with either the result of 417 * Returns a new [Future] that will be completed with either the result of
418 * this future or the result of calling the `onError` callback. 418 * this future or the result of calling the `onError` callback.
419 * 419 *
420 * If this future completes with a value, 420 * If this future completes with a value,
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 if (replacement != null) { 720 if (replacement != null) {
721 error = _nonNullError(replacement.error); 721 error = _nonNullError(replacement.error);
722 stackTrace = replacement.stackTrace; 722 stackTrace = replacement.stackTrace;
723 } 723 }
724 result._completeError(error, stackTrace); 724 result._completeError(error, stackTrace);
725 } 725 }
726 726
727 /** Helper function that converts `null` to a [NullThrownError]. */ 727 /** Helper function that converts `null` to a [NullThrownError]. */
728 Object _nonNullError(Object error) => 728 Object _nonNullError(Object error) =>
729 (error != null) ? error : new NullThrownError(); 729 (error != null) ? error : new NullThrownError();
OLDNEW
« no previous file with comments | « tool/analyze.sh ('k') | tool/input_sdk/lib/async/future_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698