Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: sdk/lib/io/string_transformer.dart

Issue 2035473003: Avoid runtime type errors in checked mode for ChunkedConverters. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sdk/lib/io/data_transformer.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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.io; 5 part of dart.io;
6 6
7 /// The current system encoding. 7 /// The current system encoding.
8 /// 8 ///
9 /// This us used for converting from bytes to/from String when 9 /// This us used for converting from bytes to/from String when
10 /// communicating on stdin, stdout and stderr. 10 /// communicating on stdin, stdout and stderr.
(...skipping 24 matching lines...) Expand all
35 35
36 Converter<List<int>, String> get decoder { 36 Converter<List<int>, String> get decoder {
37 if (Platform.operatingSystem == "windows") { 37 if (Platform.operatingSystem == "windows") {
38 return const _WindowsCodePageDecoder(); 38 return const _WindowsCodePageDecoder();
39 } else { 39 } else {
40 return const Utf8Decoder(); 40 return const Utf8Decoder();
41 } 41 }
42 } 42 }
43 } 43 }
44 44
45 class _WindowsCodePageEncoder extends Converter<String, List<int>> { 45 class _WindowsCodePageEncoder extends Converter<String, List<int>>
46 implements ChunkedConverter<String, List<int>, String, List<int>> {
46 47
47 const _WindowsCodePageEncoder(); 48 const _WindowsCodePageEncoder();
48 49
49 List<int> convert(String input) { 50 List<int> convert(String input) {
50 List<int> encoded = _encodeString(input); 51 List<int> encoded = _encodeString(input);
51 if (encoded == null) { 52 if (encoded == null) {
52 throw new FormatException("Invalid character for encoding"); 53 throw new FormatException("Invalid character for encoding");
53 } 54 }
54 return encoded; 55 return encoded;
55 } 56 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 void addSlice(String source, int start, int end, bool isLast) { 88 void addSlice(String source, int start, int end, bool isLast) {
88 if (start != 0 || end != source.length) { 89 if (start != 0 || end != source.length) {
89 source = source.substring(start, end); 90 source = source.substring(start, end);
90 } 91 }
91 add(source); 92 add(source);
92 if (isLast) close(); 93 if (isLast) close();
93 } 94 }
94 } 95 }
95 96
96 97
97 class _WindowsCodePageDecoder extends Converter<List<int>, String> { 98 class _WindowsCodePageDecoder extends Converter<List<int>, String>
99 implements ChunkedConverter<List<int>, String, List<int>, String> {
98 100
99 const _WindowsCodePageDecoder(); 101 const _WindowsCodePageDecoder();
100 102
101 String convert(List<int> input) { 103 String convert(List<int> input) {
102 return _decodeBytes(input); 104 return _decodeBytes(input);
103 } 105 }
104 106
105 /** 107 /**
106 * Starts a chunked conversion. 108 * Starts a chunked conversion.
107 */ 109 */
(...skipping 13 matching lines...) Expand all
121 _WindowsCodePageDecoderSink(this._sink); 123 _WindowsCodePageDecoderSink(this._sink);
122 124
123 void close() { 125 void close() {
124 _sink.close(); 126 _sink.close();
125 } 127 }
126 128
127 void add(List<int> bytes) { 129 void add(List<int> bytes) {
128 _sink.add(_WindowsCodePageDecoder._decodeBytes(bytes)); 130 _sink.add(_WindowsCodePageDecoder._decodeBytes(bytes));
129 } 131 }
130 } 132 }
OLDNEW
« no previous file with comments | « sdk/lib/io/data_transformer.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698