OLD | NEW |
---|---|
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.async; | 5 part of dart.async; |
6 | 6 |
7 /// The union of `Future<T>` and `T`. | |
Lasse Reichstein Nielsen
2016/12/08 15:14:00
I would save the "union" word to the advanced sect
floitsch
2016/12/08 16:23:59
That wording doesn't work for me. If read the wron
| |
8 /// | |
9 /// This is a magic class that is recognized by the Dart tools. It is | |
Lasse Reichstein Nielsen
2016/12/08 15:14:00
I wouldn't actually use the word "magic" in writin
floitsch
2016/12/08 16:23:59
Changed. PTAL.
| |
10 /// used in places where functions accept or return a `Future<T>` or a `T`. | |
11 /// | |
12 /// This class can not be implemented or extended. | |
Lasse Reichstein Nielsen
2016/12/08 15:14:00
or mixed in.
The spec language is (e.g.):
Brian Wilkerson
2016/12/08 15:25:46
nit: "can not" --> "cannot"
nit: or mixed in? (may
floitsch
2016/12/08 16:23:59
Done.
| |
13 /// | |
14 /// Note: the `FutureOr<T>` type is interpreted as `dynamic` in non strong-mode. | |
15 /// | |
16 /// # Examples | |
17 /// ``` dart | |
18 /// // The `Future<T>.then` function takes a callback [f] that returns either | |
19 /// // an `S` or a `Future<S>`. | |
20 /// Future<S> then<S>(FutureOr<S> f(T x), ...); | |
21 /// | |
22 /// // `Completer<T>.complete` takes either a `T` or `Future<T>`. | |
23 /// void complete(FutureOr<T> value); | |
24 /// ``` | |
25 /// | |
26 /// # Advanced | |
27 /// Since `FutureOr<Object>` is the union of `Future<Object>` and `Object`, it | |
Lasse Reichstein Nielsen
2016/12/08 15:14:00
"the union" isn't defined anywhere, so it's not cl
floitsch
2016/12/08 16:23:59
Done.
| |
28 /// is equivalent to `Object`, because `Future<Object>` is a subtype of | |
29 /// `Object`. | |
30 /// | |
31 /// As a corollary, `FutureOr<Object>` is equivalent to | |
32 /// `FutureOr<FutureOr<Object>>`. | |
Lasse Reichstein Nielsen
2016/12/08 15:14:00
(and equivalent to Object)
The more interesting e
floitsch
2016/12/08 16:23:59
Done.
| |
33 class FutureOr<T> { | |
34 // Private constructor, so that it is not subclassable and instantiable. | |
Lasse Reichstein Nielsen
2016/12/08 15:14:00
or mixin'able, as if that was a word.
For even mo
floitsch
2016/12/08 16:23:59
Done.
| |
35 FutureOr._(); | |
36 } | |
37 | |
7 /** | 38 /** |
8 * An object representing a delayed computation. | 39 * An object representing a delayed computation. |
9 * | 40 * |
10 * A [Future] is used to represent a potential value, or error, | 41 * A [Future] is used to represent a potential value, or error, |
11 * that will be available at some time in the future. | 42 * that will be available at some time in the future. |
12 * Receivers of a [Future] can register callbacks | 43 * Receivers of a [Future] can register callbacks |
13 * that handle the value or error once it is available. | 44 * that handle the value or error once it is available. |
14 * For example: | 45 * For example: |
15 * | 46 * |
16 * Future<int> future = getFuture(); | 47 * Future<int> future = getFuture(); |
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
780 if (replacement != null) { | 811 if (replacement != null) { |
781 error = _nonNullError(replacement.error); | 812 error = _nonNullError(replacement.error); |
782 stackTrace = replacement.stackTrace; | 813 stackTrace = replacement.stackTrace; |
783 } | 814 } |
784 result._completeError(error, stackTrace); | 815 result._completeError(error, stackTrace); |
785 } | 816 } |
786 | 817 |
787 /** Helper function that converts `null` to a [NullThrownError]. */ | 818 /** Helper function that converts `null` to a [NullThrownError]. */ |
788 Object _nonNullError(Object error) => | 819 Object _nonNullError(Object error) => |
789 (error != null) ? error : new NullThrownError(); | 820 (error != null) ? error : new NullThrownError(); |
OLD | NEW |