| Index: packages/async/lib/src/delegate/stream_consumer.dart
|
| diff --git a/packages/async/lib/src/delegate/stream_consumer.dart b/packages/async/lib/src/delegate/stream_consumer.dart
|
| index 8162db6d8ec7886befc3902e664de3d2170453d4..ba8304085095019e0d4de2cccbfd7badc9949a33 100644
|
| --- a/packages/async/lib/src/delegate/stream_consumer.dart
|
| +++ b/packages/async/lib/src/delegate/stream_consumer.dart
|
| @@ -2,8 +2,6 @@
|
| // 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 async.delegate.stream_consumer;
|
| -
|
| import 'dart:async';
|
|
|
| /// Simple delegating wrapper around a [StreamConsumer].
|
| @@ -14,8 +12,20 @@ class DelegatingStreamConsumer<T> implements StreamConsumer<T> {
|
| final StreamConsumer _consumer;
|
|
|
| /// Create a delegating consumer forwarding calls to [consumer].
|
| - DelegatingStreamConsumer(StreamConsumer consumer)
|
| - : _consumer = consumer;
|
| + DelegatingStreamConsumer(StreamConsumer<T> consumer) : _consumer = consumer;
|
| +
|
| + DelegatingStreamConsumer._(this._consumer);
|
| +
|
| + /// Creates a wrapper that coerces the type of [consumer].
|
| + ///
|
| + /// Unlike [new StreamConsumer], this only requires its argument to be an
|
| + /// instance of `StreamConsumer`, not `StreamConsumer<T>`. This means that
|
| + /// calls to [addStream] may throw a [CastError] if the argument type doesn't
|
| + /// match the reified type of [consumer].
|
| + static StreamConsumer<T> typed<T>(StreamConsumer consumer) =>
|
| + consumer is StreamConsumer<T>
|
| + ? consumer
|
| + : new DelegatingStreamConsumer._(consumer);
|
|
|
| Future addStream(Stream<T> stream) => _consumer.addStream(stream);
|
|
|
|
|