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

Side by Side Diff: sdk/lib/_internal/pub/lib/src/utils.dart

Issue 19841002: Remove calls to [new Future] work around issue 11911. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Code review change. Created 7 years, 5 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 | Annotate | Revision Log
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 /// Generic utility functions. Stuff that should possibly be in core. 5 /// Generic utility functions. Stuff that should possibly be in core.
6 library pub.utils; 6 library pub.utils;
7 7
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:io'; 9 import 'dart:io';
10 import 'dart:isolate'; 10 import 'dart:isolate';
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 completed = true; 65 completed = true;
66 _completer.completeError(e); 66 _completer.completeError(e);
67 })); 67 }));
68 68
69 return task; 69 return task;
70 } 70 }
71 71
72 Future<List> get future => _completer.future; 72 Future<List> get future => _completer.future;
73 } 73 }
74 74
75 /// Like [new Future], but avoids around issue 11911 by using [new Future.value]
76 /// under the covers.
77 Future newFuture(callback()) => new Future.value().then((_) => callback());
78
75 // TODO(rnystrom): Move into String? 79 // TODO(rnystrom): Move into String?
76 /// Pads [source] to [length] by adding spaces at the end. 80 /// Pads [source] to [length] by adding spaces at the end.
77 String padRight(String source, int length) { 81 String padRight(String source, int length) {
78 final result = new StringBuffer(); 82 final result = new StringBuffer();
79 result.write(source); 83 result.write(source);
80 84
81 while (result.length < length) { 85 while (result.length < length) {
82 result.write(' '); 86 result.write(' ');
83 } 87 }
84 88
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 /// * Even if the former is guarded against by adding asynchronous operations, 404 /// * Even if the former is guarded against by adding asynchronous operations,
401 /// returning a value through the [Future] chain can still cause a stack 405 /// returning a value through the [Future] chain can still cause a stack
402 /// overflow. 406 /// overflow.
403 Future resetStack(fn()) { 407 Future resetStack(fn()) {
404 // Using a [Completer] breaks the [Future] chain for the return value and 408 // Using a [Completer] breaks the [Future] chain for the return value and
405 // avoids the third case described above. 409 // avoids the third case described above.
406 var completer = new Completer(); 410 var completer = new Completer();
407 411
408 // Using [new Future] adds an asynchronous operation that works around the 412 // Using [new Future] adds an asynchronous operation that works around the
409 // first and second cases described above. 413 // first and second cases described above.
410 new Future(fn).then((val) { 414 newFuture(fn).then((val) {
411 runAsync(() => completer.complete(val)); 415 runAsync(() => completer.complete(val));
412 }).catchError((err) { 416 }).catchError((err) {
413 runAsync(() => completer.completeError(err)); 417 runAsync(() => completer.completeError(err));
414 }); 418 });
415 return completer.future; 419 return completer.future;
416 } 420 }
417 421
418 /// The subset of strings that don't need quoting in YAML. This pattern does 422 /// The subset of strings that don't need quoting in YAML. This pattern does
419 /// not strictly follow the plain scalar grammar of YAML, which means some 423 /// not strictly follow the plain scalar grammar of YAML, which means some
420 /// strings may be unnecessarily quoted, but it's much simpler. 424 /// strings may be unnecessarily quoted, but it's much simpler.
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 error is DirectoryException || 505 error is DirectoryException ||
502 error is FileException || 506 error is FileException ||
503 error is HttpException || 507 error is HttpException ||
504 error is HttpException || 508 error is HttpException ||
505 error is LinkException || 509 error is LinkException ||
506 error is OSError || 510 error is OSError ||
507 error is ProcessException || 511 error is ProcessException ||
508 error is SocketException || 512 error is SocketException ||
509 error is WebSocketException; 513 error is WebSocketException;
510 } 514 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/source/hosted.dart ('k') | sdk/lib/_internal/pub/test/error_group_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698