Fix line splitter (#62)
Replace use of LineSplitter with wrapper that correctly implements
the Converter<String, List<String>> interface.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 40a944a..d8719f5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+#### 2.3.5
+
+* Fix internal use of a cast which fails on Dart 2.0 .
+
#### 2.3.4
* Bumped maximum Dart SDK version to 2.0.0-dev.infinity
diff --git a/lib/src/backends/record_replay/codecs.dart b/lib/src/backends/record_replay/codecs.dart
index a974692..9754619 100644
--- a/lib/src/backends/record_replay/codecs.dart
+++ b/lib/src/backends/record_replay/codecs.dart
@@ -85,6 +85,32 @@
}
}
+/// A trivial conversion turning a Sink<List<String>> into a
+/// Sink<String>
+class _StringSinkWrapper implements Sink<String> {
+ final Sink<List<String>> _sink;
+ _StringSinkWrapper(this._sink);
+ @override
+ void add(String s) => _sink.add(<String>[s]);
+ @override
+ void close() => _sink.close();
+}
+
+/// An Converter version of the dart:convert LineSplitter (which in
+/// 2.0 no longer implements the Converter interface)
+class LineSplitterConverter extends Converter<String, List<String>> {
+ final LineSplitter _splitter = const LineSplitter();
+
+ /// Creates a new [LineSplitterConverter]
+ const LineSplitterConverter();
+
+ @override
+ List<String> convert(String input) => _splitter.convert(input);
+ @override
+ StringConversionSink startChunkedConversion(Sink<List<String>> sink) =>
+ _splitter.startChunkedConversion(new _StringSinkWrapper(sink));
+}
+
/// Converter that leaves an object untouched.
class Passthrough<T> extends Converter<T, T> {
/// Creates a new [Passthrough].
diff --git a/lib/src/backends/record_replay/replay_file.dart b/lib/src/backends/record_replay/replay_file.dart
index 9b26a2c..869c72f 100644
--- a/lib/src/backends/record_replay/replay_file.dart
+++ b/lib/src/backends/record_replay/replay_file.dart
@@ -25,7 +25,7 @@
Converter<String, RandomAccessFile> reviveRandomAccessFile =
new ReviveRandomAccessFile(fileSystem);
Converter<String, List<String>> lineSplitter =
- const LineSplitter() as Converter<String, List<String>>;
+ const LineSplitterConverter();
Converter<String, List<String>> blobToLines =
blobToString.fuse(lineSplitter);
Converter<String, Stream<List<int>>> blobToByteStream = blobToBytes
diff --git a/pubspec.yaml b/pubspec.yaml
index d5ab8bc..7484c4b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: file
-version: 2.3.4
+version: 2.3.5
authors:
- Matan Lurey <matanl@google.com>
- Yegor Jbanov <yjbanov@google.com>