mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 21:20:36 +00:00
Refactor Future constructors.
BUG= Review URL: https://codereview.chromium.org//14070010 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21517 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
parent
6c6ee276eb
commit
466d6670c1
|
@ -38,7 +38,7 @@ Future<AnalysisResult> run(List<String> args) {
|
|||
|
||||
var options = new CommandLineOptions.parse(args);
|
||||
if (options == null) {
|
||||
return new Future.immediate(new AnalysisResult.forFailure());
|
||||
return new Future.value(new AnalysisResult.forFailure());
|
||||
}
|
||||
|
||||
//TODO(pquitslund): call out to analyzer...
|
||||
|
|
|
@ -164,7 +164,7 @@ Future writeStreamToSink(Stream stream, EventSink sink) {
|
|||
}
|
||||
|
||||
/// Returns a [Future] that asynchronously completes to `null`.
|
||||
Future get async => new Future.immediate(null);
|
||||
Future get async => new Future.value();
|
||||
|
||||
/// Returns a closed [Stream] with no elements.
|
||||
Stream get emptyStream => streamFromIterable([]);
|
||||
|
@ -234,7 +234,7 @@ void chainToCompleter(Future future, Completer completer) {
|
|||
Future forEachFuture(Iterable input, Future fn(element)) {
|
||||
var iterator = input.iterator;
|
||||
Future nextElement(_) {
|
||||
if (!iterator.moveNext()) return new Future.immediate(null);
|
||||
if (!iterator.moveNext()) return new Future.value();
|
||||
return fn(iterator.current).then(nextElement);
|
||||
}
|
||||
return nextElement(null);
|
||||
|
|
|
@ -19,7 +19,7 @@ import 'utils.dart';
|
|||
void main() {
|
||||
test('handles a request', () {
|
||||
var client = new MockClient((request) {
|
||||
return new Future.immediate(new http.Response(
|
||||
return new Future.value(new http.Response(
|
||||
json.stringify(request.bodyFields), 200,
|
||||
request: request, headers: {'content-type': 'application/json'}));
|
||||
});
|
||||
|
@ -57,7 +57,7 @@ void main() {
|
|||
|
||||
test('handles a request with no body', () {
|
||||
var client = new MockClient((request) {
|
||||
return new Future.immediate(new http.Response('you did it', 200));
|
||||
return new Future.value(new http.Response('you did it', 200));
|
||||
});
|
||||
|
||||
expect(client.read("http://example.com/foo"),
|
||||
|
|
|
@ -213,7 +213,7 @@ void main() {
|
|||
tearDown(() => tempDir.deleteSync(recursive: true));
|
||||
|
||||
test('with a file from disk', () {
|
||||
expect(new Future.of(() {
|
||||
expect(new Future.sync(() {
|
||||
var filePath = path.join(tempDir.path, 'test-file');
|
||||
new File(filePath).writeAsStringSync('hello');
|
||||
return http.MultipartFile.fromPath('file', filePath);
|
||||
|
|
|
@ -28,7 +28,7 @@ MessageLookupByLibrary _findExact(localeName) {
|
|||
initializeMessages(localeName) {
|
||||
initializeInternalMessageLookup(() => new CompositeMessageLookup());
|
||||
messageLookup.addLocale(localeName, _findGeneratedMessagesFor);
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
MessageLookupByLibrary _findGeneratedMessagesFor(locale) {
|
||||
|
|
|
@ -31,7 +31,7 @@ import "date_time_patterns.dart";
|
|||
Future initializeDateFormatting(String locale, String ignored) {
|
||||
initializeDateSymbols(dateTimeSymbolMap);
|
||||
initializeDatePatterns(dateTimePatternMap);
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -183,7 +183,7 @@ const closing = """
|
|||
initializeMessages(localeName) {
|
||||
initializeInternalMessageLookup(() => new CompositeMessageLookup());
|
||||
messageLookup.addLocale(localeName, _findGeneratedMessagesFor);
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
MessageLookupByLibrary _findGeneratedMessagesFor(locale) {
|
||||
|
|
|
@ -27,5 +27,5 @@ import "intl.dart";
|
|||
*/
|
||||
Future<String> findSystemLocale() {
|
||||
Intl.systemLocale = Intl.canonicalizedLocale(window.navigator.language);
|
||||
return new Future.immediate(Intl.systemLocale);
|
||||
return new Future.value(Intl.systemLocale);
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ Future<String> findSystemLocale() {
|
|||
return _getAppleDefaults();
|
||||
}
|
||||
// We can't find anything, don't set the system locale and return null.
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -83,12 +83,12 @@ Future _getAppleDefaults() {
|
|||
* then don't set the variable and return a future that completes with null.
|
||||
*/
|
||||
Future<String> _checkResult(ProcessResult result, RegExp regex) {
|
||||
if (result.exitCode != 0) return new Future.immediate(null);
|
||||
if (result.exitCode != 0) return new Future.value();
|
||||
var match = regex.firstMatch(result.stdout);
|
||||
if (match == null) return new Future.immediate(null);
|
||||
if (match == null) return new Future.value();
|
||||
var locale = match.group(1);
|
||||
_setLocale(locale);
|
||||
return new Future.immediate(locale);
|
||||
return new Future.value(locale);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -96,5 +96,5 @@ Future<String> _checkResult(ProcessResult result, RegExp regex) {
|
|||
*/
|
||||
Future<String> _setLocale(aLocale) {
|
||||
Intl.systemLocale = Intl.canonicalizedLocale(aLocale);
|
||||
return new Future.immediate(Intl.systemLocale);
|
||||
return new Future.value(Intl.systemLocale);
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ class Client extends http.BaseClient {
|
|||
/// the request if necessary.
|
||||
Future<http.StreamedResponse> send(http.BaseRequest request) {
|
||||
return async.then((_) {
|
||||
if (!credentials.isExpired) return new Future.immediate(null);
|
||||
if (!credentials.isExpired) return new Future.value();
|
||||
if (!credentials.canRefresh) throw new ExpirationException(credentials);
|
||||
return refreshCredentials();
|
||||
}).then((_) {
|
||||
|
|
|
@ -154,7 +154,7 @@ void main() {
|
|||
'client_secret': 'secret'
|
||||
}));
|
||||
|
||||
return new Future.immediate(new http.Response(JSON.stringify({
|
||||
return new Future.value(new http.Response(JSON.stringify({
|
||||
'access_token': 'access token',
|
||||
'token_type': 'bearer',
|
||||
}), 200, headers: {'content-type': 'application/json'}));
|
||||
|
@ -198,7 +198,7 @@ void main() {
|
|||
'client_secret': 'secret'
|
||||
}));
|
||||
|
||||
return new Future.immediate(new http.Response(JSON.stringify({
|
||||
return new Future.value(new http.Response(JSON.stringify({
|
||||
'access_token': 'access token',
|
||||
'token_type': 'bearer',
|
||||
}), 200, headers: {'content-type': 'application/json'}));
|
||||
|
|
|
@ -57,7 +57,7 @@ void main() {
|
|||
httpClient.expectRequest((request) {
|
||||
expect(request.method, equals('POST'));
|
||||
expect(request.url.toString(), equals(tokenEndpoint.toString()));
|
||||
return new Future.immediate(new http.Response(JSON.stringify({
|
||||
return new Future.value(new http.Response(JSON.stringify({
|
||||
'access_token': 'new access token',
|
||||
'token_type': 'bearer'
|
||||
}), 200, headers: {'content-type': 'application/json'}));
|
||||
|
@ -69,7 +69,7 @@ void main() {
|
|||
expect(request.headers['authorization'],
|
||||
equals('Bearer new access token'));
|
||||
|
||||
return new Future.immediate(new http.Response('good job', 200));
|
||||
return new Future.value(new http.Response('good job', 200));
|
||||
});
|
||||
|
||||
expect(client.read(requestUri).then((_) {
|
||||
|
@ -92,7 +92,7 @@ void main() {
|
|||
expect(request.headers['authorization'],
|
||||
equals('Bearer access token'));
|
||||
|
||||
return new Future.immediate(new http.Response('good job', 200));
|
||||
return new Future.value(new http.Response('good job', 200));
|
||||
});
|
||||
|
||||
expect(client.read(requestUri), completion(equals('good job')));
|
||||
|
@ -107,7 +107,7 @@ void main() {
|
|||
httpClient.expectRequest((request) {
|
||||
expect(request.method, equals('POST'));
|
||||
expect(request.url.toString(), equals(tokenEndpoint.toString()));
|
||||
return new Future.immediate(new http.Response(JSON.stringify({
|
||||
return new Future.value(new http.Response(JSON.stringify({
|
||||
'access_token': 'new access token',
|
||||
'token_type': 'bearer'
|
||||
}), 200, headers: {'content-type': 'application/json'}));
|
||||
|
@ -144,7 +144,7 @@ void main() {
|
|||
|
||||
var authenticate = 'Bearer error="invalid_token", error_description='
|
||||
'"Something is terribly wrong."';
|
||||
return new Future.immediate(new http.Response('bad job', 401,
|
||||
return new Future.value(new http.Response('bad job', 401,
|
||||
headers: {'www-authenticate': authenticate}));
|
||||
});
|
||||
|
||||
|
@ -163,7 +163,7 @@ void main() {
|
|||
expect(request.headers['authorization'],
|
||||
equals('Bearer access token'));
|
||||
|
||||
return new Future.immediate(new http.Response('bad job', 401));
|
||||
return new Future.value(new http.Response('bad job', 401));
|
||||
});
|
||||
|
||||
expect(
|
||||
|
@ -184,7 +184,7 @@ void main() {
|
|||
|
||||
var authenticate = 'Bearer error="invalid_token", error_description='
|
||||
'"Something is terribly wrong.", ';
|
||||
return new Future.immediate(new http.Response('bad job', 401,
|
||||
return new Future.value(new http.Response('bad job', 401,
|
||||
headers: {'www-authenticate': authenticate}));
|
||||
});
|
||||
|
||||
|
@ -204,7 +204,7 @@ void main() {
|
|||
expect(request.headers['authorization'],
|
||||
equals('Bearer access token'));
|
||||
|
||||
return new Future.immediate(new http.Response('bad job', 401,
|
||||
return new Future.value(new http.Response('bad job', 401,
|
||||
headers: {'www-authenticate': 'Digest'}));
|
||||
});
|
||||
|
||||
|
@ -224,7 +224,7 @@ void main() {
|
|||
expect(request.headers['authorization'],
|
||||
equals('Bearer access token'));
|
||||
|
||||
return new Future.immediate(new http.Response('bad job', 401,
|
||||
return new Future.value(new http.Response('bad job', 401,
|
||||
headers: {'www-authenticate': 'Bearer'}));
|
||||
});
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ void main() {
|
|||
"client_secret": "secret"
|
||||
}));
|
||||
|
||||
return new Future.immediate(new http.Response(JSON.stringify({
|
||||
return new Future.value(new http.Response(JSON.stringify({
|
||||
'access_token': 'new access token',
|
||||
'token_type': 'bearer',
|
||||
'refresh_token': 'new refresh token'
|
||||
|
@ -106,7 +106,7 @@ void main() {
|
|||
"client_secret": "secret"
|
||||
}));
|
||||
|
||||
return new Future.immediate(new http.Response(JSON.stringify({
|
||||
return new Future.value(new http.Response(JSON.stringify({
|
||||
'access_token': 'new access token',
|
||||
'token_type': 'bearer'
|
||||
}), 200, headers: {'content-type': 'application/json'}));
|
||||
|
|
|
@ -38,7 +38,7 @@ class ExpectClient extends MockClient {
|
|||
|
||||
Future<http.Response> _handleRequest(http.Request request) {
|
||||
if (_handlers.isEmpty) {
|
||||
return new Future.immediate(new http.Response('not found', 404));
|
||||
return new Future.value(new http.Response('not found', 404));
|
||||
} else {
|
||||
return _handlers.removeFirst()(request);
|
||||
}
|
||||
|
|
|
@ -134,9 +134,9 @@ class ScheduledProcess {
|
|||
_handleExit(exitCodeCompleter);
|
||||
|
||||
return Future.wait([
|
||||
new Future.of(() => executable),
|
||||
new Future.sync(() => executable),
|
||||
awaitObject(arguments),
|
||||
new Future.of(() => options)
|
||||
new Future.sync(() => options)
|
||||
]).then((results) {
|
||||
executable = results[0];
|
||||
arguments = results[1];
|
||||
|
|
|
@ -91,7 +91,7 @@ class ScheduledServer {
|
|||
/// responsibility to check that the method/path are correct and that it's
|
||||
/// being run at the correct time.
|
||||
void _handleRequest(HttpRequest request) {
|
||||
wrapFuture(new Future.of(() {
|
||||
wrapFuture(new Future.sync(() {
|
||||
if (_handlers.isEmpty) {
|
||||
throw "'$description' received ${request.method} ${request.uri.path} "
|
||||
"when no more requests were expected.";
|
||||
|
|
|
@ -46,7 +46,7 @@ class DirectoryDescriptor extends Descriptor {
|
|||
}
|
||||
|
||||
return Future.wait(contents.map((entry) {
|
||||
return new Future.of(() => entry.validateNow(fullPath))
|
||||
return new Future.sync(() => entry.validateNow(fullPath))
|
||||
.then((_) => null)
|
||||
.catchError((e) => e);
|
||||
})).then((results) {
|
||||
|
@ -57,7 +57,7 @@ class DirectoryDescriptor extends Descriptor {
|
|||
}
|
||||
|
||||
Stream<List<int>> load(String pathToLoad) {
|
||||
return futureStream(new Future.immediate(null).then((_) {
|
||||
return futureStream(new Future.value().then((_) {
|
||||
if (_path.isAbsolute(pathToLoad)) {
|
||||
throw "Can't load absolute path '$pathToLoad'.";
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ class FileDescriptor extends Descriptor {
|
|||
});
|
||||
}
|
||||
|
||||
Stream<List<int>> read() => new Future.immediate(contents).asStream();
|
||||
Stream<List<int>> read() => new Future.value(contents).asStream();
|
||||
|
||||
String describe() => name;
|
||||
|
||||
|
|
|
@ -19,12 +19,12 @@ class NothingDescriptor extends Descriptor {
|
|||
NothingDescriptor(String name)
|
||||
: super(name);
|
||||
|
||||
Future create([String parent]) => new Future.immediate(null);
|
||||
Future create([String parent]) => new Future.value();
|
||||
|
||||
Future validate([String parent]) => schedule(() => validateNow(parent),
|
||||
"validating '$name' doesn't exist");
|
||||
|
||||
Future validateNow([String parent]) => new Future.of(() {
|
||||
Future validateNow([String parent]) => new Future.sync(() {
|
||||
if (parent == null) parent = defaultRoot;
|
||||
var fullPath = path.join(parent, name);
|
||||
if (new File(fullPath).existsSync()) {
|
||||
|
|
|
@ -110,7 +110,7 @@ class PatternDescriptor extends Descriptor {
|
|||
return '/${regExp.pattern}/$flags';
|
||||
}
|
||||
|
||||
Future create([String parent]) => new Future.immediateError(
|
||||
Future create([String parent]) => new Future.error(
|
||||
new UnsupportedError("Pattern descriptors don't support create()."));
|
||||
|
||||
Stream<List<int>> load(String pathToLoad) => errorStream(
|
||||
|
|
|
@ -64,7 +64,7 @@ class Clock {
|
|||
void tick([int milliseconds=1]) {
|
||||
for (var i = 0; i < milliseconds; i++) {
|
||||
var tickTime = ++_time;
|
||||
new Future.immediate(null).then((_) => _onTickController.add(tickTime));
|
||||
new Future.value().then((_) => _onTickController.add(tickTime));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ class Schedule {
|
|||
/// Sets up this schedule by running [setUp], then runs all the task queues in
|
||||
/// order. Any errors in [setUp] will cause [onException] to run.
|
||||
Future run(void setUp()) {
|
||||
return new Future.immediate(null).then((_) {
|
||||
return new Future.value().then((_) {
|
||||
try {
|
||||
setUp();
|
||||
} catch (e, stackTrace) {
|
||||
|
@ -432,13 +432,13 @@ class TaskQueue {
|
|||
if (isRunning) {
|
||||
var task = _schedule.currentTask;
|
||||
var wrappedFn = () => _schedule.wrapFuture(
|
||||
new Future.immediate(null).then((_) => fn()));
|
||||
new Future.value().then((_) => fn()));
|
||||
if (task == null) return wrappedFn();
|
||||
return task.runChild(wrappedFn, description);
|
||||
}
|
||||
|
||||
var task = new Task(() {
|
||||
return new Future.of(fn).catchError((e) {
|
||||
return new Future.sync(fn).catchError((e) {
|
||||
throw new ScheduleError.from(_schedule, e);
|
||||
});
|
||||
}, description, this);
|
||||
|
@ -557,7 +557,7 @@ class TaskQueue {
|
|||
} else if (_taskFuture != null) {
|
||||
// Catch errors coming off the old task future, in case it completes after
|
||||
// timing out.
|
||||
_taskFuture.substitute(new Future.immediateError(error)).catchError((e) {
|
||||
_taskFuture.substitute(new Future.error(error)).catchError((e) {
|
||||
_schedule._signalPostTimeoutError(e);
|
||||
});
|
||||
} else {
|
||||
|
|
|
@ -54,7 +54,7 @@ class Handler {
|
|||
// between a test failing while waiting for a handler and a test failing
|
||||
// while executing a handler.
|
||||
chainToCompleter(schedule(() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
if (request.method != method || request.uri.path != path) {
|
||||
throw "'${server.description}' expected $method $path, "
|
||||
"but got ${request.method} ${request.uri.path}.";
|
||||
|
|
|
@ -79,7 +79,7 @@ class Task {
|
|||
}
|
||||
|
||||
_state = TaskState.RUNNING;
|
||||
var future = new Future.immediate(null).then((_) => fn())
|
||||
var future = new Future.value().then((_) => fn())
|
||||
.whenComplete(() {
|
||||
if (_childGroup == null || _childGroup.completed) return;
|
||||
return _childGroup.future;
|
||||
|
|
|
@ -50,8 +50,8 @@ String prefixLines(String text, {String prefix: '| ', String firstPrefix}) {
|
|||
/// times. By default, this should pump the event queue enough times to allow
|
||||
/// any code to run, as long as it's not waiting on some external event.
|
||||
Future pumpEventQueue([int times=20]) {
|
||||
if (times == 0) return new Future.immediate(null);
|
||||
return new Future.immediate(null).then((_) => pumpEventQueue(times - 1));
|
||||
if (times == 0) return new Future.value();
|
||||
return new Future.value().then((_) => pumpEventQueue(times - 1));
|
||||
}
|
||||
|
||||
/// Returns whether [iterable1] has the same elements in the same order as
|
||||
|
@ -71,7 +71,7 @@ bool orderedIterableEquals(Iterable iterable1, Iterable iterable2) {
|
|||
|
||||
// TODO(nweiz): remove this when issue 8731 is fixed.
|
||||
/// Returns a [Stream] that will immediately emit [error] and then close.
|
||||
Stream errorStream(error) => new Future.immediateError(error).asStream();
|
||||
Stream errorStream(error) => new Future.error(error).asStream();
|
||||
|
||||
/// Returns a buffered stream that will emit the same values as the stream
|
||||
/// returned by [future] once [future] completes. If [future] completes to an
|
||||
|
@ -163,7 +163,7 @@ Future awaitObject(object) {
|
|||
if (object is Iterable) {
|
||||
return Future.wait(object.map(awaitObject).toList());
|
||||
}
|
||||
if (object is! Map) return new Future.immediate(object);
|
||||
if (object is! Map) return new Future.value(object);
|
||||
|
||||
var pairs = <Future<Pair>>[];
|
||||
object.forEach((key, value) {
|
||||
|
|
|
@ -126,7 +126,7 @@ void main() {
|
|||
test('test', () {
|
||||
scheduleSandbox();
|
||||
|
||||
expect(d.async(new Future.immediate(d.file('name.txt')))
|
||||
expect(d.async(new Future.value(d.file('name.txt')))
|
||||
.load('path').toList(),
|
||||
throwsA(equals("AsyncDescriptors don't support load().")));
|
||||
});
|
||||
|
@ -136,7 +136,7 @@ void main() {
|
|||
test('test', () {
|
||||
scheduleSandbox();
|
||||
|
||||
expect(d.async(new Future.immediate(d.file('name.txt'))).read().toList(),
|
||||
expect(d.async(new Future.value(d.file('name.txt'))).read().toList(),
|
||||
throwsA(equals("AsyncDescriptors don't support read().")));
|
||||
});
|
||||
});
|
||||
|
|
|
@ -30,14 +30,14 @@ void main() {
|
|||
expectTestsPass('a scheduled test with a correct asynchronous expectation '
|
||||
'should pass', () {
|
||||
test('test', () {
|
||||
expect(new Future.immediate('foo'), completion(equals('foo')));
|
||||
expect(new Future.value('foo'), completion(equals('foo')));
|
||||
});
|
||||
});
|
||||
|
||||
expectTestsFail('a scheduled test with an incorrect asynchronous expectation '
|
||||
'should fail', () {
|
||||
test('test', () {
|
||||
expect(new Future.immediate('foo'), completion(equals('bar')));
|
||||
expect(new Future.value('foo'), completion(equals('bar')));
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -57,7 +57,7 @@ void main() {
|
|||
'register', () {
|
||||
test('test', () {
|
||||
schedule(() =>
|
||||
expect(new Future.immediate('foo'), completion(equals('foo'))));
|
||||
expect(new Future.value('foo'), completion(equals('foo'))));
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -65,7 +65,7 @@ void main() {
|
|||
'register', () {
|
||||
test('test', () {
|
||||
schedule(() =>
|
||||
expect(new Future.immediate('foo'), completion(equals('bar'))));
|
||||
expect(new Future.value('foo'), completion(equals('bar'))));
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -88,7 +88,7 @@ void main() {
|
|||
});
|
||||
|
||||
test('asynchronous value', () {
|
||||
var future = schedule(() => new Future.immediate('value'));
|
||||
var future = schedule(() => new Future.value('value'));
|
||||
expect(future, completion(equals('value')));
|
||||
});
|
||||
});
|
||||
|
@ -107,7 +107,7 @@ void main() {
|
|||
expectTestsFail('a test failure in a chained future in a scheduled block '
|
||||
'should be registered', () {
|
||||
test('test', () {
|
||||
schedule(() => new Future.immediate('foo')
|
||||
schedule(() => new Future.value('foo')
|
||||
.then((v) => expect(v, equals('bar'))));
|
||||
});
|
||||
});
|
||||
|
@ -115,7 +115,7 @@ void main() {
|
|||
expectTestsFail('an error in a chained future in a scheduled block should be '
|
||||
'registered', () {
|
||||
test('test', () {
|
||||
schedule(() => new Future.immediate(null).then((_) {
|
||||
schedule(() => new Future.value().then((_) {
|
||||
throw 'error';
|
||||
}));
|
||||
});
|
||||
|
|
|
@ -148,7 +148,7 @@ void main() {
|
|||
var completer = new Completer();
|
||||
var future = new SubstituteFuture(completer.future);
|
||||
completer.complete('success');
|
||||
expect(() => future.substitute(new Future.immediate(null)),
|
||||
expect(() => future.substitute(new Future.value()),
|
||||
throwsStateError);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ export 'package:scheduled_test/src/utils.dart';
|
|||
Future timeout(Future input, int milliseconds, onTimeout()) {
|
||||
var completer = new Completer();
|
||||
var timer = new Timer(new Duration(milliseconds: milliseconds), () {
|
||||
chainToCompleter(new Future.of(onTimeout), completer);
|
||||
chainToCompleter(new Future.sync(onTimeout), completer);
|
||||
});
|
||||
input.then((value) {
|
||||
if (completer.isCompleted) return;
|
||||
|
|
|
@ -668,7 +668,7 @@ void _reportTestError(String msg, String trace) {
|
|||
* (as we do in unitttest_test.dart).
|
||||
*/
|
||||
_defer(void callback()) {
|
||||
(new Future.immediate(null)).then((_) => callback());
|
||||
(new Future.value()).then((_) => callback());
|
||||
}
|
||||
|
||||
void rerunTests() {
|
||||
|
|
|
@ -15,7 +15,7 @@ import 'dart:async';
|
|||
import 'package:unittest/unittest.dart';
|
||||
|
||||
Future _defer(void fn()) {
|
||||
return new Future.of(fn);
|
||||
return new Future.sync(fn);
|
||||
}
|
||||
|
||||
String buildStatusString(int passed, int failed, int errors,
|
||||
|
@ -154,37 +154,37 @@ runTest() {
|
|||
} else if (testName == 'async setup/teardown test') {
|
||||
group('good setup/good teardown', () {
|
||||
setUp(() {
|
||||
return new Future.immediate(0);
|
||||
return new Future.value(0);
|
||||
});
|
||||
tearDown(() {
|
||||
return new Future.immediate(0);
|
||||
return new Future.value(0);
|
||||
});
|
||||
test('foo1', (){});
|
||||
});
|
||||
group('good setup/bad teardown', () {
|
||||
setUp(() {
|
||||
return new Future.immediate(0);
|
||||
return new Future.value(0);
|
||||
});
|
||||
tearDown(() {
|
||||
return new Future.immediateError("Failed to complete tearDown");
|
||||
return new Future.error("Failed to complete tearDown");
|
||||
});
|
||||
test('foo2', (){});
|
||||
});
|
||||
group('bad setup/good teardown', () {
|
||||
setUp(() {
|
||||
return new Future.immediateError("Failed to complete setUp");
|
||||
return new Future.error("Failed to complete setUp");
|
||||
});
|
||||
tearDown(() {
|
||||
return new Future.immediate(0);
|
||||
return new Future.value(0);
|
||||
});
|
||||
test('foo3', (){});
|
||||
});
|
||||
group('bad setup/bad teardown', () {
|
||||
setUp(() {
|
||||
return new Future.immediateError("Failed to complete setUp");
|
||||
return new Future.error("Failed to complete setUp");
|
||||
});
|
||||
tearDown(() {
|
||||
return new Future.immediateError("Failed to complete tearDown");
|
||||
return new Future.error("Failed to complete tearDown");
|
||||
});
|
||||
test('foo4', (){});
|
||||
});
|
||||
|
|
|
@ -115,11 +115,11 @@ class _NativeSocket extends NativeFieldWrapperClass1 {
|
|||
var socket = new _NativeSocket.listen();
|
||||
var result = socket.nativeCreateBindListen(address, port, backlog);
|
||||
if (result is OSError) {
|
||||
return new Future.immediateError(
|
||||
return new Future.error(
|
||||
new SocketIOException("Failed to create server socket", result));
|
||||
}
|
||||
if (port != 0) socket.localPort = port;
|
||||
return new Future.immediate(socket);
|
||||
return new Future.value(socket);
|
||||
}
|
||||
|
||||
_NativeSocket.normal() : typeFlags = TYPE_NORMAL_SOCKET {
|
||||
|
@ -699,7 +699,7 @@ class _SocketStreamConsumer extends StreamConsumer<List<int>> {
|
|||
|
||||
Future<Socket> close() {
|
||||
socket._consumerDone();
|
||||
return new Future.immediate(socket);
|
||||
return new Future.value(socket);
|
||||
}
|
||||
|
||||
void write() {
|
||||
|
|
|
@ -9,7 +9,7 @@ patch class DeferredLibrary {
|
|||
// Dummy implementation that should eventually be replaced by real
|
||||
// implementation.
|
||||
Future future =
|
||||
new Future<bool>.immediate(!_loadedLibraries.contains(libraryName));
|
||||
new Future<bool>.value(!_loadedLibraries.contains(libraryName));
|
||||
_loadedLibraries.add(libraryName);
|
||||
return future;
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ Future<String> compile(Uri script,
|
|||
..close();
|
||||
code = ''; // Non-null signals success.
|
||||
}
|
||||
return new Future.immediate(code);
|
||||
return new Future.value(code);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -835,7 +835,7 @@ class _BufferingSendPort extends _BaseSendPort implements SendPort {
|
|||
SendPort _port;
|
||||
|
||||
/**
|
||||
* Future of the underlying port, so that we can detect when this port can be
|
||||
* Future.sync the underlying port, so that we can detect when this port can be
|
||||
* sent on messages.
|
||||
*/
|
||||
Future<SendPort> _futurePort;
|
||||
|
|
|
@ -265,11 +265,9 @@ Future<MirrorSystem> analyzeUri(List<Uri> libraries,
|
|||
compiler.librariesToAnalyzeWhenRun = libraries;
|
||||
bool success = compiler.run(null);
|
||||
if (success && !compilationFailed) {
|
||||
return new Future<MirrorSystem>.immediate(
|
||||
new Dart2JsMirrorSystem(compiler));
|
||||
return new Future<MirrorSystem>.value(new Dart2JsMirrorSystem(compiler));
|
||||
} else {
|
||||
return new Future<MirrorSystem>.immediateError(
|
||||
'Failed to create mirror system.');
|
||||
return new Future<MirrorSystem>.error('Failed to create mirror system.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1626,7 +1624,7 @@ class Dart2JsListConstantMirror extends Dart2JsConstantMirror
|
|||
Future<InstanceMirror> operator[](int index) {
|
||||
if (index < 0) throw new RangeError('Negative index');
|
||||
if (index >= _constant.length) throw new RangeError('Index out of bounds');
|
||||
return new Future<InstanceMirror>.immediate(
|
||||
return new Future<InstanceMirror>.value(
|
||||
_convertConstantToInstanceMirror(mirrors, _constant.entries[index]));
|
||||
}
|
||||
}
|
||||
|
@ -1663,7 +1661,7 @@ class Dart2JsMapConstantMirror extends Dart2JsConstantMirror
|
|||
Future<InstanceMirror> operator[](String key) {
|
||||
int index = _list.indexOf(key);
|
||||
if (index == -1) return null;
|
||||
return new Future<InstanceMirror>.immediate(
|
||||
return new Future<InstanceMirror>.value(
|
||||
_convertConstantToInstanceMirror(mirrors, _constant.values[index]));
|
||||
}
|
||||
}
|
||||
|
@ -1709,7 +1707,7 @@ class Dart2JsConstructedConstantMirror extends Dart2JsConstantMirror {
|
|||
Future<InstanceMirror> getField(String fieldName) {
|
||||
Constant fieldConstant = _fieldMap[fieldName];
|
||||
if (fieldConstant != null) {
|
||||
return new Future<InstanceMirror>.immediate(
|
||||
return new Future<InstanceMirror>.value(
|
||||
_convertConstantToInstanceMirror(mirrors, fieldConstant));
|
||||
}
|
||||
return super.getField(fieldName);
|
||||
|
@ -1745,13 +1743,13 @@ class Dart2JsCommentInstanceMirror implements CommentInstanceMirror {
|
|||
|
||||
Future<InstanceMirror> getField(String fieldName) {
|
||||
if (fieldName == 'isDocComment') {
|
||||
return new Future.immediate(
|
||||
return new Future.value(
|
||||
new Dart2JsBoolConstantMirror.fromBool(mirrors, isDocComment));
|
||||
} else if (fieldName == 'text') {
|
||||
return new Future.immediate(
|
||||
return new Future.value(
|
||||
new Dart2JsStringConstantMirror.fromString(mirrors, text));
|
||||
} else if (fieldName == 'trimmedText') {
|
||||
return new Future.immediate(
|
||||
return new Future.value(
|
||||
new Dart2JsStringConstantMirror.fromString(mirrors, trimmedText));
|
||||
}
|
||||
// TODO(johnniwinther): Which exception/error should be thrown here?
|
||||
|
|
|
@ -45,7 +45,7 @@ class SourceFileProvider {
|
|||
dartCharactersRead += source.length;
|
||||
sourceFiles[resourceUri.toString()] =
|
||||
new SourceFile(relativize(cwd, resourceUri, isWindows), source);
|
||||
return new Future.immediate(source);
|
||||
return new Future.value(source);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ Future compileScript(int mode, Path outputDir, Path libPath) {
|
|||
|
||||
void _compileScript() {
|
||||
port.receive((message, replyTo) {
|
||||
new Future.of(() {
|
||||
new Future.sync(() {
|
||||
var clientScript = (message['mode'] == MODE_STATIC) ?
|
||||
'static' : 'live-nav';
|
||||
var dartPath = pathos.join(message['libPath'], 'lib', '_internal',
|
||||
|
|
|
@ -84,28 +84,43 @@ part of dart.async;
|
|||
*/
|
||||
// TODO(floitsch): document chaining.
|
||||
abstract class Future<T> {
|
||||
|
||||
/**
|
||||
* Creates a future containing the result of calling [function].
|
||||
* Creates a future containing the result of calling [computation]
|
||||
* asynchronously with [runAsync].
|
||||
*
|
||||
* The result of computing [:function():] is either a returned value or
|
||||
* a throw.
|
||||
* if the result of executing [computation] throws, the returned future is
|
||||
* completed with the error. If a thrown value is an [AsyncError], it is used
|
||||
* directly, instead of wrapping this error again in another [AsyncError].
|
||||
*
|
||||
* If the returned value is itself a [Future], completion of
|
||||
* the created future will wait until the returned future completes,
|
||||
* and will then complete with the same result.
|
||||
*
|
||||
* If a value is returned, it becomes the result of the created future.
|
||||
*/
|
||||
factory Future(computation()) {
|
||||
_ThenFuture<dynamic, T> future =
|
||||
new _ThenFuture<dynamic, T>((_) => computation());
|
||||
runAsync(() => future._sendValue(null));
|
||||
return future;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a future containing the result of immediately calling
|
||||
* [computation].
|
||||
*
|
||||
* If calling [function] throws, the created [Future] will be completed
|
||||
* with an async error containing the thrown value and a captured
|
||||
* stacktrace.
|
||||
*
|
||||
* However, if the result of calling [function] is already an asynchronous
|
||||
* result, we treat it specially.
|
||||
* if the result of executing [computation] throws, the returned future is
|
||||
* completed with the error. If a thrown value is an [AsyncError], it is used
|
||||
* directly, instead of wrapping this error again in another [AsyncError].
|
||||
*
|
||||
* If the returned value is itself a [Future], completion of
|
||||
* the created future will wait until the returned future completes,
|
||||
* and will then complete with the same result.
|
||||
*/
|
||||
factory Future.of(function()) {
|
||||
factory Future.sync(computation()) {
|
||||
try {
|
||||
var result = function();
|
||||
var result = computation();
|
||||
return new _FutureImpl<T>().._setOrChainValue(result);
|
||||
} catch (error, stackTrace) {
|
||||
return new _FutureImpl<T>.immediateError(error, stackTrace);
|
||||
|
@ -116,18 +131,18 @@ abstract class Future<T> {
|
|||
* A future whose value is available in the next event-loop iteration.
|
||||
*
|
||||
* If [value] is not a [Future], using this constructor is equivalent
|
||||
* to [:new Future.of(() => value):].
|
||||
* to [:new Future.sync(() => value):].
|
||||
*
|
||||
* See [Completer] to create a Future and complete it later.
|
||||
*/
|
||||
factory Future.immediate(T value) => new _FutureImpl<T>.immediate(value);
|
||||
factory Future.value([T value]) => new _FutureImpl<T>.immediate(value);
|
||||
|
||||
/**
|
||||
* A future that completes with an error in the next event-loop iteration.
|
||||
*
|
||||
* See [Completer] to create a Future and complete it later.
|
||||
*/
|
||||
factory Future.immediateError(var error, [Object stackTrace]) {
|
||||
factory Future.error(var error, [Object stackTrace]) {
|
||||
return new _FutureImpl<T>.immediateError(error, stackTrace);
|
||||
}
|
||||
|
||||
|
@ -184,7 +199,7 @@ abstract class Future<T> {
|
|||
Iterator iterator = input.iterator;
|
||||
void nextElement(_) {
|
||||
if (iterator.moveNext()) {
|
||||
new Future.of(() => f(iterator.current))
|
||||
new Future.sync(() => f(iterator.current))
|
||||
.then(nextElement, onError: doneSignal._setError);
|
||||
} else {
|
||||
doneSignal._setValue(null);
|
||||
|
|
|
@ -134,7 +134,7 @@ class _FutureImpl<T> implements Future<T> {
|
|||
});
|
||||
}
|
||||
if (remaining == 0) {
|
||||
return new Future.immediate(const []);
|
||||
return new Future.value(const []);
|
||||
}
|
||||
values = new List(remaining);
|
||||
completer = new Completer<List>();
|
||||
|
|
|
@ -143,7 +143,7 @@ class Cursor native "*IDBCursor" {
|
|||
try {
|
||||
return _completeRequest($dom_delete());
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,7 +152,7 @@ class Cursor native "*IDBCursor" {
|
|||
try {
|
||||
return _completeRequest($dom_update(value));
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -367,7 +367,7 @@ class IdbFactory native "*IDBFactory" {
|
|||
{int version, void onUpgradeNeeded(VersionChangeEvent),
|
||||
void onBlocked(Event)}) {
|
||||
if ((version == null) != (onUpgradeNeeded == null)) {
|
||||
return new Future.immediateError(new ArgumentError(
|
||||
return new Future.error(new ArgumentError(
|
||||
'version and onUpgradeNeeded must be specified together'));
|
||||
}
|
||||
try {
|
||||
|
@ -386,7 +386,7 @@ class IdbFactory native "*IDBFactory" {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -401,7 +401,7 @@ class IdbFactory native "*IDBFactory" {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,7 +414,7 @@ class IdbFactory native "*IDBFactory" {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -492,7 +492,7 @@ class Index native "*IDBIndex" {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -503,7 +503,7 @@ class Index native "*IDBIndex" {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -514,7 +514,7 @@ class Index native "*IDBIndex" {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -714,7 +714,7 @@ class ObjectStore native "*IDBObjectStore" {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -723,7 +723,7 @@ class ObjectStore native "*IDBObjectStore" {
|
|||
try {
|
||||
return _completeRequest($dom_clear());
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -732,7 +732,7 @@ class ObjectStore native "*IDBObjectStore" {
|
|||
try {
|
||||
return _completeRequest($dom_delete(key_OR_keyRange));
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -747,7 +747,7 @@ class ObjectStore native "*IDBObjectStore" {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -762,7 +762,7 @@ class ObjectStore native "*IDBObjectStore" {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -773,7 +773,7 @@ class ObjectStore native "*IDBObjectStore" {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ class Cursor extends NativeFieldWrapperClass1 {
|
|||
try {
|
||||
return _completeRequest($dom_delete());
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ class Cursor extends NativeFieldWrapperClass1 {
|
|||
try {
|
||||
return _completeRequest($dom_update(value));
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -261,7 +261,7 @@ class IdbFactory extends NativeFieldWrapperClass1 {
|
|||
{int version, void onUpgradeNeeded(VersionChangeEvent),
|
||||
void onBlocked(Event)}) {
|
||||
if ((version == null) != (onUpgradeNeeded == null)) {
|
||||
return new Future.immediateError(new ArgumentError(
|
||||
return new Future.error(new ArgumentError(
|
||||
'version and onUpgradeNeeded must be specified together'));
|
||||
}
|
||||
try {
|
||||
|
@ -280,7 +280,7 @@ class IdbFactory extends NativeFieldWrapperClass1 {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -295,7 +295,7 @@ class IdbFactory extends NativeFieldWrapperClass1 {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -308,7 +308,7 @@ class IdbFactory extends NativeFieldWrapperClass1 {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -388,7 +388,7 @@ class Index extends NativeFieldWrapperClass1 {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -399,7 +399,7 @@ class Index extends NativeFieldWrapperClass1 {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -410,7 +410,7 @@ class Index extends NativeFieldWrapperClass1 {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -749,7 +749,7 @@ class ObjectStore extends NativeFieldWrapperClass1 {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -758,7 +758,7 @@ class ObjectStore extends NativeFieldWrapperClass1 {
|
|||
try {
|
||||
return _completeRequest($dom_clear());
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -767,7 +767,7 @@ class ObjectStore extends NativeFieldWrapperClass1 {
|
|||
try {
|
||||
return _completeRequest($dom_delete(key_OR_keyRange));
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -782,7 +782,7 @@ class ObjectStore extends NativeFieldWrapperClass1 {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -797,7 +797,7 @@ class ObjectStore extends NativeFieldWrapperClass1 {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -808,7 +808,7 @@ class ObjectStore extends NativeFieldWrapperClass1 {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -64,14 +64,14 @@ class _Directory implements Directory {
|
|||
} else {
|
||||
future = future.then((index) {
|
||||
if (index != notFound) {
|
||||
return new Future.immediate(index);
|
||||
return new Future.value(index);
|
||||
}
|
||||
return dirsToCreate[i].exists().then((e) => e ? i : notFound);
|
||||
});
|
||||
}
|
||||
}
|
||||
if (future == null) {
|
||||
return new Future.immediate(notFound);
|
||||
return new Future.value(notFound);
|
||||
} else {
|
||||
return future;
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ class _Directory implements Directory {
|
|||
}
|
||||
}
|
||||
if (future == null) {
|
||||
return new Future.immediate(this);
|
||||
return new Future.value(this);
|
||||
} else {
|
||||
return future.then((_) => this);
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ class _FileStream extends Stream<List<int>> {
|
|||
_openedFile = null;
|
||||
return closeFuture;
|
||||
} else {
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ class _FileStream extends Stream<List<int>> {
|
|||
if (_path != null) {
|
||||
openFuture = new File(_path).open(mode: FileMode.READ);
|
||||
} else {
|
||||
openFuture = new Future.immediate(_File._openStdioSync(0));
|
||||
openFuture = new Future.value(_File._openStdioSync(0));
|
||||
}
|
||||
openFuture
|
||||
.then((RandomAccessFile opened) {
|
||||
|
@ -146,7 +146,7 @@ class _FileStreamConsumer extends StreamConsumer<List<int>> {
|
|||
|
||||
_FileStreamConsumer.fromStdio(int fd) {
|
||||
assert(1 <= fd && fd <= 2);
|
||||
_openFuture = new Future.immediate(_File._openStdioSync(fd));
|
||||
_openFuture = new Future.value(_File._openStdioSync(fd));
|
||||
}
|
||||
|
||||
Future<File> addStream(Stream<List<int>> stream) {
|
||||
|
@ -545,7 +545,7 @@ class _File extends _FileBase implements File {
|
|||
sink.close();
|
||||
return sink.done.then((_) => this);;
|
||||
} catch (e) {
|
||||
return new Future.immediateError(e);
|
||||
return new Future.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -704,7 +704,7 @@ class _RandomAccessFile extends _FileBase implements RandomAccessFile {
|
|||
if (buffer is !List ||
|
||||
(start != null && start is !int) ||
|
||||
(end != null && end is !int)) {
|
||||
return new Future.immediateError(new FileIOException(
|
||||
return new Future.error(new FileIOException(
|
||||
"Invalid arguments to readInto for file '$_path'"));
|
||||
};
|
||||
Completer<int> completer = new Completer<int>();
|
||||
|
@ -805,7 +805,7 @@ class _RandomAccessFile extends _FileBase implements RandomAccessFile {
|
|||
if ((buffer is !List && buffer is !ByteData) ||
|
||||
(start != null && start is !int) ||
|
||||
(end != null && end is !int)) {
|
||||
return new Future.immediateError(new FileIOException(
|
||||
return new Future.error(new FileIOException(
|
||||
"Invalid arguments to writeFrom for file '$_path'"));
|
||||
}
|
||||
Completer<RandomAccessFile> completer = new Completer<RandomAccessFile>();
|
||||
|
@ -816,7 +816,7 @@ class _RandomAccessFile extends _FileBase implements RandomAccessFile {
|
|||
try {
|
||||
result = _ensureFastAndSerializableBuffer(buffer, start, end);
|
||||
} catch (e) {
|
||||
return new Future.immediateError(e);
|
||||
return new Future.error(e);
|
||||
}
|
||||
|
||||
List request = new List(5);
|
||||
|
|
|
@ -215,7 +215,7 @@ class _HttpClientResponse
|
|||
if (followLoops != true) {
|
||||
for (var redirect in redirects) {
|
||||
if (redirect.location == url) {
|
||||
return new Future.immediateError(
|
||||
return new Future.error(
|
||||
new RedirectLoopException(redirects));
|
||||
}
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ class _HttpClientResponse
|
|||
|
||||
// Fall through to here to perform normal response handling if
|
||||
// there is no sensible authorization handling.
|
||||
return new Future.immediate(this);
|
||||
return new Future.value(this);
|
||||
}
|
||||
|
||||
List<String> challenge = headers[HttpHeaders.WWW_AUTHENTICATE];
|
||||
|
@ -324,7 +324,7 @@ class _HttpClientResponse
|
|||
}
|
||||
|
||||
// No credentials were found and the callback was not set.
|
||||
return new Future.immediate(this);
|
||||
return new Future.value(this);
|
||||
}
|
||||
|
||||
Future<HttpClientResponse> _authenticateProxy() {
|
||||
|
@ -371,7 +371,7 @@ class _HttpClientResponse
|
|||
}
|
||||
|
||||
// No credentials were found and the callback was not set.
|
||||
return new Future.immediate(this);
|
||||
return new Future.value(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -509,7 +509,7 @@ abstract class _HttpOutboundMessage<T> implements IOSink {
|
|||
headers.contentLength = 0;
|
||||
} else if (!_ignoreBody && headers.contentLength > 0) {
|
||||
_headersSink.close().catchError((_) {});
|
||||
return new Future.immediateError(new HttpException(
|
||||
return new Future.error(new HttpException(
|
||||
"No content while contentLength was specified to be greater "
|
||||
" than 0: ${headers.contentLength}."));
|
||||
}
|
||||
|
@ -862,7 +862,7 @@ class _HttpClientRequest extends _HttpOutboundMessage<HttpClientResponse>
|
|||
} else {
|
||||
// End with exception, too many redirects.
|
||||
future = response.fold(null, (x, y) {})
|
||||
.then((_) => new Future.immediateError(
|
||||
.then((_) => new Future.error(
|
||||
new RedirectLimitExceededException(response.redirects)));
|
||||
}
|
||||
} else if (response._shouldAuthenticateProxy) {
|
||||
|
@ -870,7 +870,7 @@ class _HttpClientRequest extends _HttpOutboundMessage<HttpClientResponse>
|
|||
} else if (response._shouldAuthenticate) {
|
||||
future = response._authenticate();
|
||||
} else {
|
||||
future = new Future<HttpClientResponse>.immediate(response);
|
||||
future = new Future<HttpClientResponse>.value(response);
|
||||
}
|
||||
future.then(
|
||||
(v) => _responseCompleter.complete(v),
|
||||
|
@ -1018,7 +1018,7 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
|||
|
||||
Future close() {
|
||||
_doneCompleter.complete(_consumer);
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
Future get done => _doneCompleter.future;
|
||||
|
@ -1294,7 +1294,7 @@ class _HttpClient implements HttpClient {
|
|||
try {
|
||||
proxyConf = new _ProxyConfiguration(_findProxy(uri));
|
||||
} catch (error, stackTrace) {
|
||||
return new Future.immediateError(error, stackTrace);
|
||||
return new Future.error(error, stackTrace);
|
||||
}
|
||||
}
|
||||
return _getConnection(uri.domain, port, proxyConf, isSecure)
|
||||
|
@ -1360,7 +1360,7 @@ class _HttpClient implements HttpClient {
|
|||
Iterator<_Proxy> proxies = proxyConf.proxies.iterator;
|
||||
|
||||
Future<_ConnnectionInfo> connect(error) {
|
||||
if (!proxies.moveNext()) return new Future.immediateError(error);
|
||||
if (!proxies.moveNext()) return new Future.error(error);
|
||||
_Proxy proxy = proxies.current;
|
||||
String host = proxy.isDirect ? uriHost: proxy.host;
|
||||
int port = proxy.isDirect ? uriPort: proxy.port;
|
||||
|
@ -1372,7 +1372,7 @@ class _HttpClient implements HttpClient {
|
|||
_idleConnections.remove(key);
|
||||
}
|
||||
_activeConnections.add(connection);
|
||||
return new Future.immediate(new _ConnnectionInfo(connection, proxy));
|
||||
return new Future.value(new _ConnnectionInfo(connection, proxy));
|
||||
}
|
||||
return (isSecure && proxy.isDirect
|
||||
? SecureSocket.connect(host,
|
||||
|
|
|
@ -231,7 +231,7 @@ class _HttpParser
|
|||
|
||||
Future<_HttpParser> close() {
|
||||
_onDone();
|
||||
return new Future.immediate(this);
|
||||
return new Future.value(this);
|
||||
}
|
||||
|
||||
// From RFC 2616.
|
||||
|
|
|
@ -130,7 +130,7 @@ class _Link extends FileSystemEntity implements Link {
|
|||
|
||||
Future<bool> exists() {
|
||||
// TODO(whesse): Replace with asynchronous version.
|
||||
return new Future.immediate(existsSync());
|
||||
return new Future.value(existsSync());
|
||||
}
|
||||
|
||||
bool existsSync() => FileSystemEntity.isLinkSync(path);
|
||||
|
@ -205,7 +205,7 @@ class _Link extends FileSystemEntity implements Link {
|
|||
|
||||
Future<String> target() {
|
||||
// TODO(whesse): Replace with asynchronous version.
|
||||
return new Future.of(targetSync);
|
||||
return new Future.sync(targetSync);
|
||||
}
|
||||
|
||||
String targetSync() {
|
||||
|
|
|
@ -263,7 +263,7 @@ class _RawSecureSocket extends Stream<RawSocketEvent>
|
|||
if (socket == null) {
|
||||
futureSocket = RawSocket.connect(host, requestedPort);
|
||||
} else {
|
||||
futureSocket = new Future.immediate(socket);
|
||||
futureSocket = new Future.value(socket);
|
||||
}
|
||||
futureSocket.then((rawSocket) {
|
||||
rawSocket.writeEventsEnabled = false;
|
||||
|
|
|
@ -385,7 +385,7 @@ class _WebSocketTransformerImpl implements WebSocketTransformer {
|
|||
response.contentLength = 0;
|
||||
response.close();
|
||||
});
|
||||
return new Future.immediateError(
|
||||
return new Future.error(
|
||||
new WebSocketException("Invalid WebSocket upgrade request"));
|
||||
}
|
||||
|
||||
|
|
|
@ -222,6 +222,17 @@ LibTest/core/List/insertRange_A05_t01: Fail # insertRange is removed. Issue 403
|
|||
LibTest/core/List/insertRange_A06_t01: Fail # insertRange is removed. Issue 403
|
||||
LibTest/core/List/insertRange_A07_t01: Fail # insertRange is removed. Issue 403
|
||||
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/asStream_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediate_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/then_A01_t03: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/forEach_A03_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A01_t02: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A02_t01: Fail # Future constructors have changed # issue 408
|
||||
|
||||
Language/11_Expressions/06_Lists_A06_t01: Fail # Issue 397
|
||||
LibTest/core/Iterable/where_A01_t07: Fail # Issue 397
|
||||
LibTest/core/List/addLast_A01_t01: Fail # Issue 397
|
||||
|
|
|
@ -531,6 +531,17 @@ LibTest/core/List/getRange_A01_t01: Fail # getRange now takes end-argument and r
|
|||
LibTest/core/List/getRange_A04_t01: Fail # getRange now takes end-argument and returns Iterable. Issue 399
|
||||
LibTest/core/List/operator_subscript_A01_t02: Fail # getRange now takes end-argument and returns Iterable. Issue 399
|
||||
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/asStream_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediate_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/then_A01_t03: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/forEach_A03_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A01_t02: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A02_t01: Fail # Future constructors have changed # issue 408
|
||||
|
||||
LibTest/core/Iterable/any_A01_t04: Fail # setRange now takes end-argument. Issue 402
|
||||
LibTest/core/List/setRange_A01_t02: Fail # setRange now takes end-argument. Issue 402
|
||||
LibTest/core/List/setRange_A02_t01: Fail # setRange now takes end-argument. Issue 402
|
||||
|
|
|
@ -512,6 +512,17 @@ LibTest/core/List/getRange_A01_t01: Fail # getRange now takes end-argument and r
|
|||
LibTest/core/List/getRange_A04_t01: Fail # getRange now takes end-argument and returns Iterable. Issue 399
|
||||
LibTest/core/List/operator_subscript_A01_t02: Fail # getRange now takes end-argument and returns Iterable. Issue 399
|
||||
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/asStream_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediate_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/then_A01_t03: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/forEach_A03_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A01_t02: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A02_t01: Fail # Future constructors have changed # issue 408
|
||||
|
||||
LibTest/core/Iterable/any_A01_t04: Fail # setRange now takes end-argument. Issue 402
|
||||
LibTest/core/List/setRange_A01_t02: Fail # setRange now takes end-argument. Issue 402
|
||||
LibTest/core/List/setRange_A02_t01: Fail # setRange now takes end-argument. Issue 402
|
||||
|
|
|
@ -214,6 +214,16 @@ LibTest/core/Date/operator_equality_A01_t01: Fail # DateTime.== now looks at tim
|
|||
|
||||
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t03: Fail # issue 6085
|
||||
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issues 408
|
||||
LibTest/async/Future/asStream_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediate_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/then_A01_t03: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/catchError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/forEach_A03_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A01_t02: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/Future.immediateError_A01_t01: Fail # Future constructors have changed # issue 408
|
||||
LibTest/async/Future/asStream_A02_t01: Fail # Future constructors have changed # issue 408
|
||||
|
||||
[ $compiler == none && $runtime == vm && $checked ]
|
||||
Language/12_Statements/09_Switch_A05_t01: Fail # TODO(vm-team): Please triage this failure.
|
||||
|
|
|
@ -19,7 +19,7 @@ runCompiler(String main, List<String> options,
|
|||
|
||||
Future<String> localProvider(Uri uri) {
|
||||
if (uri.scheme != 'main') return dummy.provider(uri);
|
||||
return new Future<String>.immediate(main);
|
||||
return new Future<String>.value(main);
|
||||
}
|
||||
|
||||
void localHandler(Uri uri, int begin, int end,
|
||||
|
|
|
@ -92,25 +92,25 @@ testDart2DartWithLibrary(
|
|||
final libUri = fileUri('mylib.dart');
|
||||
|
||||
provider(uri) {
|
||||
if (uri == scriptUri) return new Future.immediate(srcMain);
|
||||
if (uri == scriptUri) return new Future.value(srcMain);
|
||||
if (uri.toString() == libUri.toString()) {
|
||||
return new Future.immediate(srcLibrary);
|
||||
return new Future.value(srcLibrary);
|
||||
}
|
||||
if (uri.path.endsWith('/core.dart')) {
|
||||
return new Future.immediate(coreLib);
|
||||
return new Future.value(coreLib);
|
||||
} else if (uri.path.endsWith('/io.dart')) {
|
||||
return new Future.immediate(ioLib);
|
||||
return new Future.value(ioLib);
|
||||
} else if (uri.path.endsWith('/js_helper.dart')) {
|
||||
return new Future.immediate(helperLib);
|
||||
return new Future.value(helperLib);
|
||||
} else if (uri.path.endsWith('/html_dart2js.dart')) {
|
||||
// TODO(smok): The file should change to html_dartium at some point.
|
||||
return new Future.immediate(htmlLib);
|
||||
return new Future.value(htmlLib);
|
||||
} else if (uri.path.endsWith('/foreign_helper.dart')) {
|
||||
return new Future.immediate(foreignLib);
|
||||
return new Future.value(foreignLib);
|
||||
} else if (uri.path.endsWith('/isolate_helper.dart')) {
|
||||
return new Future.immediate(isolateHelperLib);
|
||||
return new Future.value(isolateHelperLib);
|
||||
}
|
||||
return new Future.immediate('');
|
||||
return new Future.value('');
|
||||
}
|
||||
|
||||
handler(uri, begin, end, message, kind) {
|
||||
|
|
|
@ -32,10 +32,10 @@ class MemorySourceFileProvider extends SourceFileProvider {
|
|||
return super.readStringFromUri(resourceUri);
|
||||
}
|
||||
String source = MEMORY_SOURCE_FILES[resourceUri.path];
|
||||
// TODO(ahe): Return new Future.immediateError(...) ?
|
||||
// TODO(ahe): Return new Future.error(...) ?
|
||||
if (source == null) throw 'No such file $resourceUri';
|
||||
String resourceName = '$resourceUri';
|
||||
this.sourceFiles[resourceName] = new SourceFile(resourceName, source);
|
||||
return new Future.immediate(source);
|
||||
return new Future.value(source);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ main() {
|
|||
return fs.root.createDirectory(
|
||||
'directory3')
|
||||
.then((DirectoryEntry dir) {
|
||||
return new Future.immediate(new FileAndDir(file, dir));
|
||||
return new Future.value(new FileAndDir(file, dir));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -110,7 +110,7 @@ main() {
|
|||
test('Web Database', () {
|
||||
// Skip if not supported.
|
||||
if (!SqlDatabase.supported) {
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
final tableName = 'test_table';
|
||||
|
|
|
@ -22,7 +22,7 @@ class A {
|
|||
|
||||
foo(obj) {
|
||||
var a = obj.foo;
|
||||
return new Future.immediate(null).then((val) { });
|
||||
return new Future.value().then((val) { });
|
||||
}
|
||||
|
||||
main() {
|
||||
|
|
38
tests/lib/async/future_constructor_test.dart
Normal file
38
tests/lib/async/future_constructor_test.dart
Normal file
|
@ -0,0 +1,38 @@
|
|||
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
library future_test;
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
import 'dart:async';
|
||||
import 'dart:isolate';
|
||||
|
||||
main() {
|
||||
compare(func) {
|
||||
// Compare the results of the following two futures.
|
||||
Future f1 = new Future(func);
|
||||
Future f2 = new Future.value().then((_) => func());
|
||||
f2.catchError((_){}); // I'll get the error later.
|
||||
f1.then((v1) { f2.then((v2) { Expect.equals(v1, v2); }); },
|
||||
onError: (e1) {
|
||||
f2.then((_) { Expect.fail("Expected error"); },
|
||||
onError: (e2) {
|
||||
Expect.equals(e1, e2);
|
||||
});
|
||||
});
|
||||
}
|
||||
Future val = new Future.value(42);
|
||||
Future err1 = new Future.error("Error")..catchError((_){});
|
||||
compare(() => 42);
|
||||
compare(() => val);
|
||||
compare(() { throw "Flif"; });
|
||||
compare(() => err1);
|
||||
bool hasExecuted = false;
|
||||
compare(() {
|
||||
hasExecuted = true;
|
||||
return 499;
|
||||
});
|
||||
Expect.isFalse(hasExecuted);
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ testImmediateError() {
|
|||
// An open ReceivePort keeps the VM running. If the error-handler below is not
|
||||
// executed then the test will fail with a timeout.
|
||||
var port = new ReceivePort();
|
||||
var future = new Future.immediateError("error");
|
||||
var future = new Future.error("error");
|
||||
future.catchError((error) {
|
||||
port.close();
|
||||
Expect.equals(error, "error");
|
||||
|
|
|
@ -10,8 +10,8 @@ import 'dart:isolate';
|
|||
|
||||
const Duration MS = const Duration(milliseconds: 1);
|
||||
|
||||
testImmediate() {
|
||||
final future = new Future<String>.immediate("42");
|
||||
testValue() {
|
||||
final future = new Future<String>.value("42");
|
||||
var port = new ReceivePort();
|
||||
future.then((x) {
|
||||
Expect.equals("42", x);
|
||||
|
@ -19,11 +19,11 @@ testImmediate() {
|
|||
});
|
||||
}
|
||||
|
||||
testOf() {
|
||||
testSync() {
|
||||
compare(func) {
|
||||
// Compare the results of the following two futures.
|
||||
Future f1 = new Future.of(func);
|
||||
Future f2 = new Future.immediate(null).then((_) => func());
|
||||
Future f1 = new Future.sync(func);
|
||||
Future f2 = new Future.value().then((_) => func());
|
||||
f2.catchError((_){}); // I'll get the error later.
|
||||
f1.then((v1) { f2.then((v2) { Expect.equals(v1, v2); }); },
|
||||
onError: (e1) {
|
||||
|
@ -33,17 +33,23 @@ testOf() {
|
|||
});
|
||||
});
|
||||
}
|
||||
Future val = new Future.immediate(42);
|
||||
Future err1 = new Future.immediateError("Error")..catchError((_){});
|
||||
Future val = new Future.value(42);
|
||||
Future err1 = new Future.error("Error")..catchError((_){});
|
||||
try {
|
||||
throw new List(0);
|
||||
} catch (e, st) {
|
||||
Future err2 = new Future.immediateError(e, st)..catchError((_){});
|
||||
Future err2 = new Future.error(e, st)..catchError((_){});
|
||||
}
|
||||
compare(() => 42);
|
||||
compare(() => val);
|
||||
compare(() { throw "Flif"; });
|
||||
compare(() => err1);
|
||||
bool hasExecuted = false;
|
||||
compare(() {
|
||||
hasExecuted = true;
|
||||
return 499;
|
||||
});
|
||||
Expect.isTrue(hasExecuted);
|
||||
}
|
||||
|
||||
testNeverComplete() {
|
||||
|
@ -242,7 +248,7 @@ testFutureAsStreamCompleteBefore() {
|
|||
testFutureAsStreamCompleteImmediate() {
|
||||
bool gotValue = false;
|
||||
var port = new ReceivePort();
|
||||
new Future.immediate("value").asStream().listen(
|
||||
new Future.value("value").asStream().listen(
|
||||
(data) {
|
||||
Expect.isFalse(gotValue);
|
||||
gotValue = true;
|
||||
|
@ -564,7 +570,7 @@ testChainedFutureValue() {
|
|||
final future = completer.future;
|
||||
var port = new ReceivePort();
|
||||
|
||||
future.then((v) => new Future.immediate(v * 2))
|
||||
future.then((v) => new Future.value(v * 2))
|
||||
.then((v) {
|
||||
Expect.equals(42, v);
|
||||
port.close();
|
||||
|
@ -600,7 +606,7 @@ testChainedFutureError() {
|
|||
final future = completer.future;
|
||||
var port = new ReceivePort();
|
||||
|
||||
future.then((v) => new Future.immediateError("Fehler"))
|
||||
future.then((v) => new Future.error("Fehler"))
|
||||
.then((v) { Expect.fail("unreachable!"); }, onError: (error) {
|
||||
Expect.equals("Fehler", error);
|
||||
port.close();
|
||||
|
@ -609,8 +615,8 @@ testChainedFutureError() {
|
|||
}
|
||||
|
||||
main() {
|
||||
testImmediate();
|
||||
testOf();
|
||||
testValue();
|
||||
testSync();
|
||||
testNeverComplete();
|
||||
|
||||
testComplete();
|
||||
|
|
|
@ -84,7 +84,7 @@ Future testForEach() {
|
|||
var seen = <int>[];
|
||||
return Future.forEach([1, 2, 3, 4, 5], (n) {
|
||||
seen.add(n);
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}).then((_) => Expect.listEquals([1, 2, 3, 4, 5], seen));
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ Future testForEachWithException() {
|
|||
return Future.forEach([1, 2, 3, 4, 5], (n) {
|
||||
if (n == 4) throw 'correct exception';
|
||||
seen.add(n);
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}).then((_) {
|
||||
throw 'incorrect exception';
|
||||
}).catchError((error) {
|
||||
|
|
|
@ -58,7 +58,7 @@ class SlowConsumer extends StreamConsumer {
|
|||
}
|
||||
|
||||
Future close() {
|
||||
return new Future.immediate(finalCount);
|
||||
return new Future.value(finalCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ class SlowConsumer extends StreamConsumer {
|
|||
}
|
||||
|
||||
Future close() {
|
||||
return new Future.immediate(finalCount);
|
||||
return new Future.value(finalCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ const int MB = KB * KB;
|
|||
const int GB = KB * KB * KB;
|
||||
|
||||
class SlowConsumer extends StreamConsumer {
|
||||
var current = new Future.immediate(0);
|
||||
var current = new Future.value(0);
|
||||
final int bytesPerSecond;
|
||||
int finalCount;
|
||||
|
||||
|
@ -55,7 +55,7 @@ class SlowConsumer extends StreamConsumer {
|
|||
}
|
||||
|
||||
Future close() {
|
||||
return new Future.immediate(finalCount);
|
||||
return new Future.value(finalCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ fuzzAsyncMethods() {
|
|||
futures.add(doItAsync(() {
|
||||
return d.exists().then((res) {
|
||||
if (!res) return d.delete(recursive: true);
|
||||
return new Future.immediate(true);
|
||||
return new Future.value(true);
|
||||
});
|
||||
}));
|
||||
typeMapping.forEach((k2, v2) {
|
||||
|
|
|
@ -7,7 +7,7 @@ import "dart:async";
|
|||
import "dart:io";
|
||||
|
||||
Future throws(callback()) {
|
||||
return new Future.immediate(null)
|
||||
return new Future.value()
|
||||
.then((_) => callback())
|
||||
.then((_) { throw "Expected error"; },
|
||||
onError: (_) {});
|
||||
|
|
|
@ -220,7 +220,7 @@ void testLocalServerBasic() {
|
|||
Uri.parse("http://127.0.0.1/basic"),
|
||||
"test",
|
||||
new HttpClientBasicCredentials("test", "test"));
|
||||
return new Future.immediate(true);
|
||||
return new Future.value(true);
|
||||
};
|
||||
|
||||
HttpClientConnection conn =
|
||||
|
@ -243,7 +243,7 @@ void testLocalServerDigest() {
|
|||
Uri.parse("http://127.0.0.1/digest"),
|
||||
"test",
|
||||
new HttpClientDigestCredentials("test", "test"));
|
||||
return new Future.immediate(true);
|
||||
return new Future.value(true);
|
||||
};
|
||||
|
||||
HttpClientConnection conn =
|
||||
|
|
|
@ -494,7 +494,7 @@ void testProxyAuthenticate() {
|
|||
proxyServer.port,
|
||||
"realm",
|
||||
new HttpClientBasicCredentials("test", "test"));
|
||||
return new Future.immediate(true);
|
||||
return new Future.value(true);
|
||||
};
|
||||
|
||||
for (int i = 0; i < loopCount; i++) {
|
||||
|
|
|
@ -34,7 +34,7 @@ class TestConsumer implements StreamConsumer {
|
|||
}
|
||||
|
||||
Future close() {
|
||||
return new Future.immediate(null)
|
||||
return new Future.value()
|
||||
.then((_) {
|
||||
if (closePort != null) closePort.close();
|
||||
Expect.listEquals(expected, received);
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
|
||||
package/invalid_uri_test: Fail, OK # Fails intentionally
|
||||
|
||||
[ $runtime == vm ]
|
||||
io/test_runner_test: Fail # Fails because checked-in dart executable is not up to date.
|
||||
io/skipping_dart2js_compilations_test: Fail # Fails because checked-in dart executable is not up to date.
|
||||
|
||||
[ $runtime == vm && ( $system == windows ) ]
|
||||
io/raw_socket_test: Pass, Fail # Issue 8901
|
||||
io/http_shutdown_test: Pass, Fail # Issue 9101
|
||||
|
|
|
@ -64,7 +64,7 @@ Future<bool> convert(Path libPath, Path jsonPath) {
|
|||
}
|
||||
|
||||
Future<bool> _exportJsonToFile(Map convertedJson, Path jsonPath) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
final jsonFile = new File.fromPath(jsonPath);
|
||||
var writeJson = prettySerialize(convertedJson);
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
try {
|
||||
return _completeRequest($dom_delete());
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
try {
|
||||
return _completeRequest($dom_update(value));
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ $endif
|
|||
{int version, void onUpgradeNeeded(VersionChangeEvent),
|
||||
void onBlocked(Event)}) {
|
||||
if ((version == null) != (onUpgradeNeeded == null)) {
|
||||
return new Future.immediateError(new ArgumentError(
|
||||
return new Future.error(new ArgumentError(
|
||||
'version and onUpgradeNeeded must be specified together'));
|
||||
}
|
||||
try {
|
||||
|
@ -43,7 +43,7 @@ $endif
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,7 +58,7 @@ $endif
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ $endif
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
try {
|
||||
return _completeRequest($dom_clear());
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
try {
|
||||
return _completeRequest($dom_delete(key_OR_keyRange));
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
}
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ $(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|||
|
||||
return _completeRequest(request);
|
||||
} catch (e, stacktrace) {
|
||||
return new Future.immediateError(e, stacktrace);
|
||||
return new Future.error(e, stacktrace);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ class Version {
|
|||
|
||||
Future<int> getRevision() {
|
||||
if (repositoryType == RepositoryType.UNKNOWN) {
|
||||
return new Future.immediate(0);
|
||||
return new Future.value(0);
|
||||
}
|
||||
var isSvn = repositoryType == RepositoryType.SVN;
|
||||
var command = isSvn ? "svn" : "git";
|
||||
|
|
|
@ -59,7 +59,7 @@ class UploaderCommand extends PubCommand {
|
|||
exit(exit_codes.USAGE);
|
||||
}
|
||||
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var package = commandOptions['package'];
|
||||
if (package != null) return package;
|
||||
return new Entrypoint(path.current, cache).root.name;
|
||||
|
|
|
@ -71,7 +71,7 @@ class Entrypoint {
|
|||
if (pendingOrCompleted != null) return pendingOrCompleted;
|
||||
|
||||
var packageDir = path.join(packagesDir, id.name);
|
||||
var future = new Future.of(() {
|
||||
var future = new Future.sync(() {
|
||||
ensureDir(path.dirname(packageDir));
|
||||
|
||||
if (entryExists(packageDir)) {
|
||||
|
@ -102,7 +102,7 @@ class Entrypoint {
|
|||
/// directory, respecting the [LockFile] if present. Returns a [Future] that
|
||||
/// completes when all dependencies are installed.
|
||||
Future installDependencies() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
return resolveVersions(cache.sources, root, loadLockFile());
|
||||
}).then(_installDependencies);
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ class Entrypoint {
|
|||
/// other dependencies as specified by the [LockFile] if possible. Returns a
|
||||
/// [Future] that completes when all dependencies are installed.
|
||||
Future updateDependencies(List<String> dependencies) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var solver = new VersionSolver(cache.sources, root, loadLockFile());
|
||||
for (var dependency in dependencies) {
|
||||
solver.useLatestVersion(dependency);
|
||||
|
@ -131,10 +131,10 @@ class Entrypoint {
|
|||
/// Removes the old packages directory, installs all dependencies listed in
|
||||
/// [packageVersions], and writes a [LockFile].
|
||||
Future _installDependencies(List<PackageId> packageVersions) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
cleanDir(packagesDir);
|
||||
return Future.wait(packageVersions.map((id) {
|
||||
if (id.isRoot) return new Future.immediate(id);
|
||||
if (id.isRoot) return new Future.value(id);
|
||||
return install(id);
|
||||
}).toList());
|
||||
}).then((ids) {
|
||||
|
@ -148,13 +148,13 @@ class Entrypoint {
|
|||
/// reached packages. This should only be called after the lockfile has been
|
||||
/// successfully generated.
|
||||
Future<List<Pubspec>> walkDependencies() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var lockFile = loadLockFile();
|
||||
var group = new FutureGroup<Pubspec>();
|
||||
var visited = new Set<String>();
|
||||
|
||||
// Include the root package in the results.
|
||||
group.add(new Future.immediate(root.pubspec));
|
||||
group.add(new Future.value(root.pubspec));
|
||||
|
||||
visitPackage(Pubspec pubspec) {
|
||||
for (var ref in pubspec.dependencies) {
|
||||
|
@ -166,7 +166,7 @@ class Entrypoint {
|
|||
visited.add(ref.name);
|
||||
var future;
|
||||
if (ref.name == root.name) {
|
||||
future = new Future<Pubspec>.immediate(root.pubspec);
|
||||
future = new Future<Pubspec>.value(root.pubspec);
|
||||
} else {
|
||||
future = cache.describe(id);
|
||||
}
|
||||
|
|
|
@ -269,7 +269,7 @@ class _ErrorGroupStream extends Stream {
|
|||
if (_isDone) return;
|
||||
_subscription.cancel();
|
||||
// Call these asynchronously to work around issue 7913.
|
||||
new Future.immediate(null).then((_) {
|
||||
new Future.value().then((_) {
|
||||
_controller.addError(e);
|
||||
_controller.close();
|
||||
});
|
||||
|
|
|
@ -13,7 +13,7 @@ import 'utils.dart';
|
|||
/// Tests whether or not the git command-line app is available for use.
|
||||
Future<bool> get isInstalled {
|
||||
if (_isGitInstalledCache != null) {
|
||||
return new Future.immediate(_isGitInstalledCache);
|
||||
return new Future.value(_isGitInstalledCache);
|
||||
}
|
||||
|
||||
return _gitCommand.then((git) => git != null);
|
||||
|
@ -44,7 +44,7 @@ String _gitCommandCache;
|
|||
/// found on the user's PATH.
|
||||
Future<String> get _gitCommand {
|
||||
if (_gitCommandCache != null) {
|
||||
return new Future.immediate(_gitCommandCache);
|
||||
return new Future.value(_gitCommandCache);
|
||||
}
|
||||
|
||||
return _tryGitCommand("git").then((success) {
|
||||
|
|
|
@ -123,7 +123,7 @@ class GitSource extends Source {
|
|||
/// future that completes once this is finished and throws an exception if it
|
||||
/// fails.
|
||||
Future _ensureRepoCache(PackageId id) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var path = _repoCachePath(id);
|
||||
if (!entryExists(path)) return _clone(_getUrl(id), path, mirror: true);
|
||||
return git.run(["fetch"], workingDir: path).then((result) => null);
|
||||
|
@ -143,7 +143,7 @@ class GitSource extends Source {
|
|||
/// the working tree, but instead makes the repository a local mirror of the
|
||||
/// remote repository. See the manpage for `git clone` for more information.
|
||||
Future _clone(String from, String to, {bool mirror: false}) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
// Git on Windows does not seem to automatically create the destination
|
||||
// directory.
|
||||
ensureDir(to);
|
||||
|
|
|
@ -63,7 +63,7 @@ class HostedSource extends Source {
|
|||
|
||||
/// Downloads a package from the site and unpacks it.
|
||||
Future<bool> install(PackageId id, String destPath) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var url = _makeVersionUrl(id, (server, package, version) =>
|
||||
"$server/packages/$package/versions/$version.tar.gz");
|
||||
log.io("Install package from $url.");
|
||||
|
@ -98,7 +98,7 @@ class HostedSource extends Source {
|
|||
return '%${match[0].codeUnitAt(0)}';
|
||||
});
|
||||
|
||||
return new Future.immediate(
|
||||
return new Future.value(
|
||||
path.join(systemCacheRoot, urlDir, "${parsed.first}-${id.version}"));
|
||||
}
|
||||
|
||||
|
|
|
@ -550,9 +550,9 @@ Future timeout(Future input, int milliseconds, String description) {
|
|||
/// Returns a future that completes to the value that the future returned from
|
||||
/// [fn] completes to.
|
||||
Future withTempDir(Future fn(String path)) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var tempDir = createTempDir();
|
||||
return new Future.of(() => fn(tempDir))
|
||||
return new Future.sync(() => fn(tempDir))
|
||||
.whenComplete(() => deleteEntry(tempDir));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@ Future withClient(SystemCache cache, Future fn(Client client)) {
|
|||
/// Gets a new OAuth2 client. If saved credentials are available, those are
|
||||
/// used; otherwise, the user is prompted to authorize the pub client.
|
||||
Future<Client> _getClient(SystemCache cache) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var credentials = _loadCredentials(cache);
|
||||
if (credentials == null) return _authorize();
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ class PathSource extends Source {
|
|||
final shouldCache = false;
|
||||
|
||||
Future<Pubspec> describe(PackageId id) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
_validatePath(id.name, id.description);
|
||||
return new Pubspec.load(id.name, id.description["path"],
|
||||
systemCache.sources);
|
||||
|
@ -40,7 +40,7 @@ class PathSource extends Source {
|
|||
}
|
||||
|
||||
Future<bool> install(PackageId id, String destination) {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
try {
|
||||
_validatePath(id.name, id.description);
|
||||
} on FormatException catch(err) {
|
||||
|
|
|
@ -145,7 +145,7 @@ main() {
|
|||
/// Checks that pub is running on a supported platform. If it isn't, it prints
|
||||
/// an error message and exits. Completes when the validation is done.
|
||||
Future validatePlatform() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
if (Platform.operatingSystem != 'windows') return;
|
||||
|
||||
return runProcess('ver', []).then((result) {
|
||||
|
@ -267,7 +267,7 @@ abstract class PubCommand {
|
|||
exit(_chooseExitCode(error));
|
||||
}
|
||||
|
||||
new Future.of(() {
|
||||
new Future.sync(() {
|
||||
if (requiresEntrypoint) {
|
||||
// TODO(rnystrom): Will eventually need better logic to walk up
|
||||
// subdirectories until we hit one that looks package-like. For now,
|
||||
|
|
|
@ -154,7 +154,7 @@ abstract class Source {
|
|||
///
|
||||
/// This doesn't need to be implemented if [shouldCache] is false.
|
||||
Future<String> systemCacheDirectory(PackageId id) {
|
||||
return new Future.immediateError(
|
||||
return new Future.error(
|
||||
"systemCacheDirectory() must be implemented if shouldCache is true.");
|
||||
}
|
||||
|
||||
|
@ -206,7 +206,7 @@ abstract class Source {
|
|||
/// [descriptionsEqual].
|
||||
///
|
||||
/// By default, this just returns [id].
|
||||
Future<PackageId> resolveId(PackageId id) => new Future.immediate(id);
|
||||
Future<PackageId> resolveId(PackageId id) => new Future.value(id);
|
||||
|
||||
/// Returns the [Package]s that have been installed in the system cache.
|
||||
List<Package> getCachedPackages() {
|
||||
|
|
|
@ -249,7 +249,7 @@ Stream<String> streamToLines(Stream<String> stream) {
|
|||
Future<Iterable> futureWhere(Iterable iter, test(value)) {
|
||||
return Future.wait(iter.map((e) {
|
||||
var result = test(e);
|
||||
if (result is! Future) result = new Future.immediate(result);
|
||||
if (result is! Future) result = new Future.value(result);
|
||||
return result.then((result) => new Pair(e, result));
|
||||
}))
|
||||
.then((pairs) => pairs.where((pair) => pair.last))
|
||||
|
@ -343,7 +343,7 @@ Future awaitObject(object) {
|
|||
if (object is Iterable) {
|
||||
return Future.wait(object.map(awaitObject).toList());
|
||||
}
|
||||
if (object is! Map) return new Future.immediate(object);
|
||||
if (object is! Map) return new Future.value(object);
|
||||
|
||||
var pairs = <Future<Pair>>[];
|
||||
object.forEach((key, value) {
|
||||
|
|
|
@ -20,7 +20,7 @@ class CompiledDartdocValidator extends Validator {
|
|||
: super(entrypoint);
|
||||
|
||||
Future validate() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
for (var entry in listDir(entrypoint.root.dir, recursive: true)) {
|
||||
if (path.basename(entry) != "nav.json") continue;
|
||||
var dir = path.dirname(entry);
|
||||
|
|
|
@ -31,12 +31,12 @@ class DependencyValidator extends Validator {
|
|||
'package.\n'
|
||||
'Pub enables "package:${entrypoint.root.name}" imports '
|
||||
'implicitly.');
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
|
||||
if (dependency.constraint.isAny) _warnAboutConstraint(dependency);
|
||||
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class DirectoryValidator extends Validator {
|
|||
static final _PLURAL_NAMES = ["tools", "tests", "docs", "examples"];
|
||||
|
||||
Future validate() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
for (var dir in listDir(entrypoint.root.dir)) {
|
||||
if (!dirExists(dir)) continue;
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ class LibValidator extends Validator {
|
|||
: super(entrypoint);
|
||||
|
||||
Future validate() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var libDir = path.join(entrypoint.root.dir, "lib");
|
||||
|
||||
if (!dirExists(libDir)) {
|
||||
|
|
|
@ -19,7 +19,7 @@ class LicenseValidator extends Validator {
|
|||
: super(entrypoint);
|
||||
|
||||
Future validate() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var licenseLike = new RegExp(
|
||||
r"^([a-zA-Z0-9]+[-_])?(LICENSE|COPYING)(\..*)?$");
|
||||
if (listDir(entrypoint.root.dir)
|
||||
|
|
|
@ -28,7 +28,7 @@ class NameValidator extends Validator {
|
|||
: super(entrypoint);
|
||||
|
||||
Future validate() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
_checkName(entrypoint.root.name, 'Package name "${entrypoint.root.name}"',
|
||||
isPackage: true);
|
||||
|
||||
|
|
|
@ -56,6 +56,6 @@ class PubspecFieldValidator extends Validator {
|
|||
errors.add('Your pubspec.yaml is missing a "version" field.');
|
||||
}
|
||||
|
||||
return new Future.immediate(null);
|
||||
return new Future.value();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ class Utf8ReadmeValidator extends Validator {
|
|||
: super(entrypoint);
|
||||
|
||||
Future validate() {
|
||||
return new Future.of(() {
|
||||
return new Future.sync(() {
|
||||
var readme = entrypoint.root.readmePath;
|
||||
if (readme == null) return;
|
||||
var bytes = readBinaryFile(readme);
|
||||
|
|
|
@ -97,7 +97,7 @@ class VersionSolver {
|
|||
Future processNextWorkItem(_) {
|
||||
while (true) {
|
||||
// Stop if we are done.
|
||||
if (_work.isEmpty) return new Future.immediate(buildResults());
|
||||
if (_work.isEmpty) return new Future.value(buildResults());
|
||||
|
||||
// If we appear to be stuck in a loop, then we probably have an unstable
|
||||
// graph, bail. We guess this based on a rough heuristic that it should
|
||||
|
@ -284,8 +284,7 @@ class ChangeVersion implements WorkItem {
|
|||
Version version) {
|
||||
// If there is no version, it means no package, so no dependencies.
|
||||
if (version == null) {
|
||||
return new Future<Map<String, PackageRef>>.immediate(
|
||||
<String, PackageRef>{});
|
||||
return new Future<Map<String, PackageRef>>.value(<String, PackageRef>{});
|
||||
}
|
||||
|
||||
var id = new PackageId(package, source, version, description);
|
||||
|
@ -475,7 +474,7 @@ class PubspecCache {
|
|||
Future<Pubspec> load(PackageId id) {
|
||||
// Complete immediately if it's already cached.
|
||||
if (_pubspecs.containsKey(id)) {
|
||||
return new Future<Pubspec>.immediate(_pubspecs[id]);
|
||||
return new Future<Pubspec>.value(_pubspecs[id]);
|
||||
}
|
||||
|
||||
return id.describe().then((pubspec) {
|
||||
|
|
|
@ -36,7 +36,7 @@ main() {
|
|||
expect(errorGroup.done, throwsFormatException);
|
||||
errorGroup.signalError(new FormatException());
|
||||
|
||||
expect(() => errorGroup.registerFuture(new Future.immediate(null)),
|
||||
expect(() => errorGroup.registerFuture(new Future.value()),
|
||||
throwsStateError);
|
||||
expect(() => errorGroup.registerStream(new StreamController().stream),
|
||||
throwsStateError);
|
||||
|
@ -63,7 +63,7 @@ main() {
|
|||
"been called", () {
|
||||
completer.complete('value');
|
||||
|
||||
expect(() => errorGroup.registerFuture(new Future.immediate(null)),
|
||||
expect(() => errorGroup.registerFuture(new Future.value()),
|
||||
throwsStateError);
|
||||
expect(() => errorGroup.registerStream(new StreamController().stream),
|
||||
throwsStateError);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue