Merge pull request #51 from dart-lang/stream-queue-cast-errors
Fix runtime cast errors in StreamQueue.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2577503..c8f4d63 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
+## 2.0.5
+
+* Fix Dart 2.0 [runtime cast errors][sdk#27223] in `StreamQueue`.
+
+[sdk#27223]: https://github.com/dart-lang/sdk/issues/27223
+
## 2.0.4
-* Add support for Dart 2.0 library changes to Stream and StreamTransformer.
+* Add support for Dart 2.0 library changes to `Stream` and `StreamTransformer`.
Changed classes that implement `StreamTransformer` to extend
`StreamTransformerBase`, and changed signatures of `firstWhere`, `lastWhere`,
and `singleWhere` on classes extending `Stream`. See
@@ -15,7 +21,7 @@
## 2.0.2
-* Add support for Dart 2.0 library changes to class `Timer`.
+* Add support for Dart 2.0 library changes to class `Timer`.
## 2.0.1
@@ -35,7 +41,7 @@
* Make `TypeSafeStream` extend `Stream` instead of implementing it. This ensures
that new methods on `Stream` are automatically picked up, they will go through
the `listen` method which type-checks every event.
-
+
## 1.13.2
* Fix a type-warning.
diff --git a/lib/src/stream_queue.dart b/lib/src/stream_queue.dart
index d9be69d..0c81aec 100644
--- a/lib/src/stream_queue.dart
+++ b/lib/src/stream_queue.dart
@@ -99,7 +99,7 @@
var _eventsReceived = 0;
/// Queue of events not used by a request yet.
- final QueueList<Result> _eventQueue = new QueueList();
+ final QueueList<Result<T>> _eventQueue = new QueueList();
/// Queue of pending requests.
///
@@ -124,7 +124,7 @@
/// one events.
Future<bool> get hasNext {
if (!_isClosed) {
- var hasNextRequest = new _HasNextRequest();
+ var hasNextRequest = new _HasNextRequest<T>();
_addRequest(hasNextRequest);
return hasNextRequest.future;
}
@@ -219,7 +219,7 @@
Future<int> skip(int count) {
if (count < 0) throw new RangeError.range(count, 0, null, "count");
if (!_isClosed) {
- var request = new _SkipRequest(count);
+ var request = new _SkipRequest<T>(count);
_addRequest(request);
return request.future;
}
@@ -389,7 +389,7 @@
_isClosed = true;
if (!immediate) {
- var request = new _CancelRequest(this);
+ var request = new _CancelRequest<T>(this);
_addRequest(request);
return request.future;
}
@@ -457,7 +457,7 @@
/// Called when the event source adds a new data or error event.
/// Always calls [_updateRequests] after adding.
- void _addResult(Result result) {
+ void _addResult(Result<T> result) {
_eventsReceived++;
_eventQueue.add(result);
_updateRequests();
@@ -485,7 +485,7 @@
///
/// If the request queue is empty and the request can be completed
/// immediately, it skips the queue.
- void _addRequest(_EventRequest request) {
+ void _addRequest(_EventRequest<T> request) {
if (_requestQueue.isEmpty) {
if (request.update(_eventQueue, _isDone)) return;
_ensureListening();
diff --git a/pubspec.yaml b/pubspec.yaml
index e57d3ef..e163e4c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: async
-version: 2.0.5-dev
+version: 2.0.5
author: Dart Team <misc@dartlang.org>
description: Utility functions and classes related to the 'dart:async' library.
homepage: https://www.github.com/dart-lang/async