Index: sdk/lib/async/stream.dart |
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart |
index 26343b69b35dee57f03ef60331b095f593b3825c..5c04e83f5c589a987f88edf07612b0c4d037db14 100644 |
--- a/sdk/lib/async/stream.dart |
+++ b/sdk/lib/async/stream.dart |
@@ -283,7 +283,7 @@ abstract class Stream<T> { |
} |
/** |
- * Reports whether this stream is a broadcast stream. |
+ * Whether this stream is a broadcast stream. |
*/ |
bool get isBroadcast => false; |
@@ -396,7 +396,7 @@ abstract class Stream<T> { |
* |
* The returned stream is a broadcast stream if this stream is. |
*/ |
- Stream<E> asyncMap<E>(convert(T event)) { |
+ Stream<E> asyncMap<E>(FutureOr<E> convert(T event)) { |
StreamController<E> controller; |
StreamSubscription<T> subscription; |
@@ -407,14 +407,14 @@ abstract class Stream<T> { |
final _EventSink<E> eventSink = controller as Object/*=_EventSink<E>*/; |
final addError = eventSink._addError; |
subscription = this.listen((T event) { |
- dynamic newValue; |
+ FutureOr<E> newValue; |
try { |
newValue = convert(event); |
} catch (e, s) { |
controller.addError(e, s); |
return; |
} |
- if (newValue is Future) { |
+ if (newValue is Future<E>) { |
subscription.pause(); |
newValue |
.then(add, onError: addError) |
@@ -710,7 +710,8 @@ abstract class Stream<T> { |
StreamSubscription subscription; |
subscription = this.listen( |
(T element) { |
- _runUserCode(() => action(element), (_) {}, |
+ // TODO(floitsch): the type should be 'void' and inferred. |
+ _runUserCode<dynamic>(() => action(element), (_) {}, |
_cancelAndErrorClosure(subscription, future)); |
}, |
onError: future._completeError, |
@@ -1169,7 +1170,7 @@ abstract class Stream<T> { |
/** |
* Finds the single element in this stream matching [test]. |
* |
- * Like [lastMatch], except that it is an error if more than one |
+ * Like [lastWhere], except that it is an error if more than one |
* matching element occurs in the stream. |
*/ |
Future<T> singleWhere(bool test(T element)) { |
@@ -1469,7 +1470,7 @@ abstract class EventSink<T> implements Sink<T> { |
void add(T event); |
/** Send an async error to a stream. */ |
- void addError(errorEvent, [StackTrace stackTrace]); |
+ void addError(Object errorEvent, [StackTrace stackTrace]); |
/** Close the sink. No further events can be added after closing. */ |
void close(); |