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

Side by Side Diff: sdk/lib/async/stream_transformers.dart

Issue 2857393003: Adding to a closed sink throws.
Patch Set: Rebase Created 3 years, 7 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 | « CHANGELOG.md ('k') | sdk/lib/io/io_sink.dart » ('j') | 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.async; 5 part of dart.async;
6 6
7 /** 7 /**
8 * Wraps an [_EventSink] so it exposes only the [EventSink] interface. 8 * Wraps an [_EventSink] so it exposes only the [EventSink] interface.
9 */ 9 */
10 class _EventSinkWrapper<T> implements EventSink<T> { 10 class _EventSinkWrapper<T> implements EventSink<T> {
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 213
214 _HandlerEventSink( 214 _HandlerEventSink(
215 this._handleData, this._handleError, this._handleDone, this._sink) { 215 this._handleData, this._handleError, this._handleDone, this._sink) {
216 if (_sink == null) { 216 if (_sink == null) {
217 throw new ArgumentError("The provided sink must not be null."); 217 throw new ArgumentError("The provided sink must not be null.");
218 } 218 }
219 } 219 }
220 220
221 bool get _isClosed => _sink == null; 221 bool get _isClosed => _sink == null;
222 222
223 _reportClosedSink() {
224 // TODO(29554): throw a StateError, and don't just report the problem.
225 Zone.ROOT
226 ..print("Sink is closed and adding to it is an error.")
227 ..print(" See http://dartbug.com/29554.")
228 ..print(StackTrace.current.toString());
229 }
230
231 void add(S data) { 223 void add(S data) {
232 if (_isClosed) { 224 if (_isClosed) {
233 _reportClosedSink(); 225 throw new StateError("Sink is closed");
234 } 226 }
235 if (_handleData != null) { 227 if (_handleData != null) {
236 _handleData(data, _sink); 228 _handleData(data, _sink);
237 } else { 229 } else {
238 _sink.add(data as T); 230 _sink.add(data as T);
239 } 231 }
240 } 232 }
241 233
242 void addError(Object error, [StackTrace stackTrace]) { 234 void addError(Object error, [StackTrace stackTrace]) {
243 if (_isClosed) { 235 if (_isClosed) {
244 _reportClosedSink(); 236 throw new StateError("Sink is closed");
245 } 237 }
246 if (_handleError != null) { 238 if (_handleError != null) {
247 _handleError(error, stackTrace, _sink); 239 _handleError(error, stackTrace, _sink);
248 } else { 240 } else {
249 _sink.addError(error, stackTrace); 241 _sink.addError(error, stackTrace);
250 } 242 }
251 } 243 }
252 244
253 void close() { 245 void close() {
254 if (_isClosed) return; 246 if (_isClosed) return;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 StreamSubscription<T> listen(void onData(T event), 315 StreamSubscription<T> listen(void onData(T event),
324 {Function onError, void onDone(), bool cancelOnError}) { 316 {Function onError, void onDone(), bool cancelOnError}) {
325 cancelOnError = identical(true, cancelOnError); 317 cancelOnError = identical(true, cancelOnError);
326 StreamSubscription<T> result = _onListen(_stream, cancelOnError); 318 StreamSubscription<T> result = _onListen(_stream, cancelOnError);
327 result.onData(onData); 319 result.onData(onData);
328 result.onError(onError); 320 result.onError(onError);
329 result.onDone(onDone); 321 result.onDone(onDone);
330 return result; 322 return result;
331 } 323 }
332 } 324 }
OLDNEW
« no previous file with comments | « CHANGELOG.md ('k') | sdk/lib/io/io_sink.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698