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

Unified Diff: lib/runtime/dart/async.js

Issue 1117793002: add checks needed for covariant generics, and List<E> (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: lib/runtime/dart/async.js
diff --git a/lib/runtime/dart/async.js b/lib/runtime/dart/async.js
index 87d303157805445ad94a48adbc8fb590f11eb585..00ee0f0b825df1e506e06550d21e4f81aef3ff53 100644
--- a/lib/runtime/dart/async.js
+++ b/lib/runtime/dart/async.js
@@ -81,6 +81,7 @@ var async;
periodic(period, computation) {
if (computation === void 0)
computation = null;
+ dart.as(computation, dart.functionType(T, [core.int]));
if (computation == null)
computation = dart.as(i => null, __CastType12);
let timer = null;
@@ -141,7 +142,9 @@ var async;
}
asBroadcastStream(opts) {
let onListen = opts && 'onListen' in opts ? opts.onListen : null;
+ dart.as(onListen, dart.functionType(dart.void, [StreamSubscription$(T)]));
let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
+ dart.as(onCancel, dart.functionType(dart.void, [StreamSubscription$(T)]));
return new (_AsBroadcastStream$(T))(this, dart.as(onListen, __CastType14), dart.as(onCancel, dart.functionType(dart.void, [StreamSubscription])));
}
where(test) {
@@ -160,6 +163,7 @@ var async;
let eventSink = controller;
let addError = eventSink[_addError];
subscription = this.listen(event => {
+ dart.as(event, T);
let newValue = null;
try {
newValue = convert(event);
@@ -210,6 +214,7 @@ var async;
dart.assert(dart.is(controller, _StreamController) || dart.is(controller, _BroadcastStreamController));
let eventSink = controller;
subscription = this.listen(event => {
+ dart.as(event, T);
let newStream = null;
try {
newStream = convert(event);
@@ -252,6 +257,7 @@ var async;
}
handleError(onError, opts) {
let test = opts && 'test' in opts ? opts.test : null;
+ dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
return new (_HandleErrorStream$(T))(this, onError, test);
}
expand(convert) {
@@ -269,8 +275,10 @@ var async;
let value = null;
let subscription = null;
subscription = this.listen(element => {
+ dart.as(element, T);
if (seenFirst) {
_runUserCode(() => combine(value, element), newValue => {
+ dart.as(newValue, T);
value = newValue;
}, dart.as(_cancelAndErrorClosure(subscription, result), __CastType16));
} else {
@@ -301,6 +309,7 @@ var async;
let value = initialValue;
let subscription = null;
subscription = this.listen(element => {
+ dart.as(element, T);
_runUserCode(() => dart.dcall(combine, value, element), newValue => {
value = newValue;
}, dart.as(_cancelAndErrorClosure(subscription, result), dart.functionType(dart.dynamic, [dart.dynamic, core.StackTrace])));
@@ -323,6 +332,7 @@ var async;
let subscription = null;
let first = true;
subscription = this.listen(element => {
+ dart.as(element, T);
if (!dart.notNull(first)) {
buffer.write(separator);
}
@@ -349,6 +359,7 @@ var async;
let future = new (_Future$(core.bool))();
let subscription = null;
subscription = this.listen(element => {
+ dart.as(element, T);
_runUserCode(() => dart.equals(element, needle), isMatch => {
if (isMatch) {
_cancelAndValue(subscription, future, true);
@@ -367,6 +378,7 @@ var async;
let future = new _Future();
let subscription = null;
subscription = this.listen(element => {
+ dart.as(element, T);
_runUserCode(() => action(element), _ => {
}, dart.as(_cancelAndErrorClosure(subscription, future), dart.functionType(dart.dynamic, [dart.dynamic, core.StackTrace])));
}, {
@@ -382,6 +394,7 @@ var async;
let future = new (_Future$(core.bool))();
let subscription = null;
subscription = this.listen(element => {
+ dart.as(element, T);
_runUserCode(() => test(element), isMatch => {
if (!dart.notNull(isMatch)) {
_cancelAndValue(subscription, future, false);
@@ -400,6 +413,7 @@ var async;
let future = new (_Future$(core.bool))();
let subscription = null;
subscription = this.listen(element => {
+ dart.as(element, T);
_runUserCode(() => test(element), isMatch => {
if (isMatch) {
_cancelAndValue(subscription, future, true);
@@ -446,6 +460,7 @@ var async;
let result = dart.setType([], core.List$(T));
let future = new (_Future$(core.List$(T)))();
this.listen(data => {
+ dart.as(data, T);
result[core.$add](data);
}, {
onError: future[_completeError].bind(future),
@@ -460,6 +475,7 @@ var async;
let result = new (core.Set$(T))();
let future = new (_Future$(core.Set$(T)))();
this.listen(data => {
+ dart.as(data, T);
result.add(data);
}, {
onError: future[_completeError].bind(future),
@@ -490,12 +506,14 @@ var async;
distinct(equals) {
if (equals === void 0)
equals = null;
+ dart.as(equals, dart.functionType(core.bool, [T, T]));
return new (_DistinctStream$(T))(this, equals);
}
get first() {
let future = new (_Future$(T))();
let subscription = null;
subscription = this.listen(value => {
+ dart.as(value, T);
_cancelAndValue(subscription, future, value);
}, {
onError: future[_completeError].bind(future),
@@ -518,6 +536,7 @@ var async;
let foundResult = false;
let subscription = null;
subscription = this.listen(value => {
+ dart.as(value, T);
foundResult = true;
result = value;
}, {
@@ -545,6 +564,7 @@ var async;
let foundResult = false;
let subscription = null;
subscription = this.listen(value => {
+ dart.as(value, T);
if (foundResult) {
try {
throw _internal.IterableElementError.tooMany();
@@ -577,10 +597,13 @@ var async;
return future;
}
firstWhere(test, opts) {
+ dart.as(test, dart.functionType(core.bool, [T]));
let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
+ dart.as(defaultValue, dart.functionType(core.Object, []));
let future = new _Future();
let subscription = null;
subscription = this.listen(value => {
+ dart.as(value, T);
_runUserCode(() => test(value), isMatch => {
if (isMatch) {
_cancelAndValue(subscription, future, value);
@@ -606,12 +629,15 @@ var async;
return future;
}
lastWhere(test, opts) {
+ dart.as(test, dart.functionType(core.bool, [T]));
let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
+ dart.as(defaultValue, dart.functionType(core.Object, []));
let future = new _Future();
let result = null;
let foundResult = false;
let subscription = null;
subscription = this.listen(value => {
+ dart.as(value, T);
_runUserCode(() => true == test(value), isMatch => {
if (isMatch) {
foundResult = true;
@@ -647,6 +673,7 @@ var async;
let foundResult = false;
let subscription = null;
subscription = this.listen(value => {
+ dart.as(value, T);
_runUserCode(() => true == test(value), isMatch => {
if (isMatch) {
if (foundResult) {
@@ -689,6 +716,7 @@ var async;
let subscription = null;
let elementIndex = 0;
subscription = this.listen(value => {
+ dart.as(value, T);
if (index == elementIndex) {
_cancelAndValue(subscription, future, value);
return;
@@ -705,6 +733,7 @@ var async;
}
timeout(timeLimit, opts) {
let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
+ dart.as(onTimeout, dart.functionType(dart.void, [EventSink]));
let controller = null;
let subscription = null;
let timer = null;
@@ -712,6 +741,7 @@ var async;
let timeout = null;
// Function onData: (T) → void
function onData(event) {
+ dart.as(event, T);
timer.cancel();
controller.add(event);
timer = zone.createTimer(timeLimit, dart.as(timeout, __CastType19));
@@ -775,8 +805,10 @@ var async;
let _StreamImpl$ = dart.generic(function(T) {
class _StreamImpl extends Stream$(T) {
listen(onData, opts) {
+ dart.as(onData, dart.functionType(dart.void, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let onDone = opts && 'onDone' in opts ? opts.onDone : null;
+ dart.as(onDone, dart.functionType(dart.void, []));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
cancelOnError = core.identical(true, cancelOnError);
let subscription = this[_createSubscription](onData, onError, onDone, cancelOnError);
@@ -1022,6 +1054,7 @@ var async;
this[_state] = dart.notNull(this[_state]) - dart.notNull(_BufferingStreamSubscription._STATE_PAUSE_COUNT);
}
[_add](data) {
+ dart.as(data, T);
dart.assert(!dart.notNull(this[_isClosed]));
if (this[_isCanceled])
return;
@@ -1074,6 +1107,7 @@ var async;
}
}
[_sendData](data) {
+ dart.as(data, T);
dart.assert(!dart.notNull(this[_isCanceled]));
dart.assert(!dart.notNull(this[_isPaused]));
dart.assert(!dart.notNull(this[_inCallback]));
@@ -1358,6 +1392,7 @@ var async;
return new core.StateError("Cannot add new events while doing an addStream");
}
add(data) {
+ dart.as(data, T);
if (!dart.notNull(this[_mayAddEvent]))
throw this[_addEventError]();
this[_sendData](data);
@@ -1391,6 +1426,7 @@ var async;
return this[_ensureDoneFuture]();
}
addStream(stream, opts) {
+ dart.as(stream, Stream$(T));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true;
if (!dart.notNull(this[_mayAddEvent]))
throw this[_addEventError]();
@@ -1399,6 +1435,7 @@ var async;
return this[_addStreamState].addStreamFuture;
}
[_add](data) {
+ dart.as(data, T);
this[_sendData](data);
}
[_addError](error, stackTrace) {
@@ -1463,6 +1500,7 @@ var async;
super._BroadcastStreamController(onListen, onCancel);
}
[_sendData](data) {
+ dart.as(data, T);
if (this[_isEmpty])
return;
if (this[_hasOneListener]) {
@@ -1507,6 +1545,7 @@ var async;
super._BroadcastStreamController(onListen, onCancel);
}
[_sendData](data) {
+ dart.as(data, T);
for (let link = this[_next]; !dart.notNull(core.identical(link, this)); link = link[_next]) {
let subscription = dart.as(link, _BroadcastSubscription$(T));
subscription[_addPending](new _DelayedData(data));
@@ -1551,6 +1590,7 @@ var async;
this[_pending].add(event);
}
add(data) {
+ dart.as(data, T);
if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) {
this[_addPendingEvent](new (_DelayedData$(T))(data));
return;
@@ -1722,6 +1762,7 @@ var async;
delayed(duration, computation) {
if (computation === void 0)
computation = null;
+ dart.as(computation, dart.functionType(T, []));
let result = new (_Future$(T))();
new Timer(duration, () => {
try {
@@ -1737,6 +1778,7 @@ var async;
static wait(futures, opts) {
let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false;
let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null;
+ dart.as(cleanUp, dart.functionType(dart.void, [dart.dynamic]));
let result = new (_Future$(core.List))();
let values = null;
let remaining = 0;
@@ -2075,6 +2117,7 @@ var async;
}
}
then(f, opts) {
+ dart.as(f, dart.functionType(dart.dynamic, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let result = new _Future();
if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) {
@@ -2088,6 +2131,7 @@ var async;
}
catchError(onError, opts) {
let test = opts && 'test' in opts ? opts.test : null;
+ dart.as(test, dart.functionType(core.bool, [dart.dynamic]));
let result = new _Future();
if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) {
onError = _registerErrorHandler(onError, result[_zone]);
@@ -2122,6 +2166,7 @@ var async;
return dart.as(this[_resultOrListeners], AsyncError);
}
[_setValue](value) {
+ dart.as(value, T);
dart.assert(!dart.notNull(this[_isComplete]));
this[_state] = _Future._VALUE;
this[_resultOrListeners] = value;
@@ -2410,6 +2455,7 @@ var async;
}
timeout(timeLimit, opts) {
let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
+ dart.as(onTimeout, dart.functionType(dart.dynamic, []));
if (this[_isComplete])
return new _Future.immediate(this);
let result = new _Future();
@@ -2432,6 +2478,7 @@ var async;
});
}
this.then(v => {
+ dart.as(v, T);
if (timer.isActive) {
timer.cancel();
result[_completeWithValue](v);
@@ -2624,12 +2671,16 @@ var async;
}
asBroadcastStream(opts) {
let onListen = opts && 'onListen' in opts ? opts.onListen : null;
+ dart.as(onListen, dart.functionType(dart.void, [StreamSubscription]));
let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
+ dart.as(onCancel, dart.functionType(dart.void, [StreamSubscription]));
return this[_stream].asBroadcastStream({onListen: onListen, onCancel: onCancel});
}
listen(onData, opts) {
+ dart.as(onData, dart.functionType(dart.void, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let onDone = opts && 'onDone' in opts ? opts.onDone : null;
+ dart.as(onDone, dart.functionType(dart.void, []));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
return this[_stream].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
}
@@ -2676,6 +2727,7 @@ var async;
this[_sink] = sink;
}
add(data) {
+ dart.as(data, T);
this[_sink].add(data);
}
addError(error, stackTrace) {
@@ -2704,9 +2756,13 @@ var async;
class StreamController extends core.Object {
StreamController(opts) {
let onListen = opts && 'onListen' in opts ? opts.onListen : null;
+ dart.as(onListen, dart.functionType(dart.void, []));
let onPause = opts && 'onPause' in opts ? opts.onPause : null;
+ dart.as(onPause, dart.functionType(dart.void, []));
let onResume = opts && 'onResume' in opts ? opts.onResume : null;
+ dart.as(onResume, dart.functionType(dart.void, []));
let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
+ dart.as(onCancel, dart.functionType(dart.dynamic, []));
let sync = opts && 'sync' in opts ? opts.sync : false;
if (dart.notNull(onListen == null) && dart.notNull(onPause == null) && dart.notNull(onResume == null) && dart.notNull(onCancel == null)) {
return dart.as(sync ? new _NoCallbackSyncStreamController() : new _NoCallbackAsyncStreamController(), StreamController$(T));
@@ -2715,7 +2771,9 @@ var async;
}
broadcast(opts) {
let onListen = opts && 'onListen' in opts ? opts.onListen : null;
+ dart.as(onListen, dart.functionType(dart.void, []));
let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
+ dart.as(onCancel, dart.functionType(dart.void, []));
let sync = opts && 'sync' in opts ? opts.sync : false;
return sync ? new (_SyncBroadcastStreamController$(T))(onListen, onCancel) : new (_AsyncBroadcastStreamController$(T))(onListen, onCancel);
}
@@ -2812,6 +2870,7 @@ var async;
return new core.StateError("Cannot add event while adding a stream");
}
addStream(source, opts) {
+ dart.as(source, Stream$(T));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true;
if (!dart.notNull(this[_mayAddEvent]))
throw this[_badEventState]();
@@ -2832,6 +2891,7 @@ var async;
return this[_doneFuture];
}
add(value) {
+ dart.as(value, T);
if (!dart.notNull(this[_mayAddEvent]))
throw this[_badEventState]();
this[_add](value);
@@ -2867,6 +2927,7 @@ var async;
}
}
[_add](value) {
+ dart.as(value, T);
if (this.hasListener) {
this[_sendData](value);
} else if (this[_isInitialState]) {
@@ -2970,6 +3031,7 @@ var async;
let _SyncStreamControllerDispatch$ = dart.generic(function(T) {
class _SyncStreamControllerDispatch extends core.Object {
[_sendData](data) {
+ dart.as(data, T);
this[_subscription][_add](data);
}
[_sendError](error, stackTrace) {
@@ -2986,6 +3048,7 @@ var async;
let _AsyncStreamControllerDispatch$ = dart.generic(function(T) {
class _AsyncStreamControllerDispatch extends core.Object {
[_sendData](data) {
+ dart.as(data, T);
this[_subscription][_addPending](new _DelayedData(data));
}
[_sendError](error, stackTrace) {
@@ -3064,6 +3127,7 @@ var async;
this[_target] = target;
}
add(data) {
+ dart.as(data, T);
this[_target].add(data);
}
addError(error, stackTrace) {
@@ -3075,6 +3139,7 @@ var async;
return this[_target].close();
}
addStream(source, opts) {
+ dart.as(source, Stream$(T));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true;
return this[_target].addStream(source, {cancelOnError: cancelOnError});
}
@@ -3267,6 +3332,7 @@ var async;
let _DelayedData$ = dart.generic(function(T) {
class _DelayedData extends _DelayedEvent {
_DelayedData(value) {
+ dart.as(value, T);
this.value = value;
super._DelayedEvent();
}
@@ -3450,8 +3516,10 @@ var async;
return true;
}
listen(onData, opts) {
+ dart.as(onData, dart.functionType(dart.void, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let onDone = opts && 'onDone' in opts ? opts.onDone : null;
+ dart.as(onDone, dart.functionType(dart.void, []));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
if (dart.notNull(this[_controller] == null) || dart.notNull(this[_controller].isClosed)) {
return new (_DoneStreamSubscription$(T))(onDone);
@@ -3615,6 +3683,7 @@ var async;
return subscription.cancel();
}
[_onData](data) {
+ dart.as(data, T);
if (this[_state] == _StreamIteratorImpl._STATE_MOVING) {
this[_current] = data;
let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool));
@@ -3732,8 +3801,10 @@ var async;
return this[_source].isBroadcast;
}
listen(onData, opts) {
+ dart.as(onData, dart.functionType(dart.void, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let onDone = opts && 'onDone' in opts ? opts.onDone : null;
+ dart.as(onDone, dart.functionType(dart.void, []));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
cancelOnError = core.identical(true, cancelOnError);
return this[_createSubscription](onData, onError, onDone, cancelOnError);
@@ -3742,6 +3813,8 @@ var async;
return new (_ForwardingStreamSubscription$(S, T))(this, onData, onError, onDone, cancelOnError);
}
[_handleData](data, sink) {
+ dart.as(data, S);
+ dart.as(sink, _EventSink$(T));
let outputData = data;
sink[_add](outputData);
}
@@ -3764,6 +3837,7 @@ var async;
this[_subscription] = this[_stream][_source].listen(this[_handleData].bind(this), {onError: this[_handleError].bind(this), onDone: this[_handleDone].bind(this)});
}
[_add](data) {
+ dart.as(data, T);
if (this[_isClosed])
return;
super[_add](data);
@@ -3792,6 +3866,7 @@ var async;
return null;
}
[_handleData](data) {
+ dart.as(data, S);
this[_stream][_handleData](data, this);
}
[_handleError](error, stackTrace) {
@@ -3826,6 +3901,8 @@ var async;
super._ForwardingStream(source);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, T);
+ dart.as(sink, _EventSink$(T));
let satisfies = null;
try {
satisfies = this[_test](inputEvent);
@@ -3856,6 +3933,8 @@ var async;
super._ForwardingStream(source);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, S);
+ dart.as(sink, _EventSink$(T));
let outputEvent = null;
try {
outputEvent = dart.as(dart.dcall(this[_transform], inputEvent), T);
@@ -3879,6 +3958,8 @@ var async;
super._ForwardingStream(source);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, S);
+ dart.as(sink, _EventSink$(T));
try {
for (let value of this[_expand](inputEvent)) {
sink[_add](value);
@@ -3944,6 +4025,8 @@ var async;
throw new core.ArgumentError(count);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, T);
+ dart.as(sink, _EventSink$(T));
if (dart.notNull(this[_remaining]) > 0) {
sink[_add](inputEvent);
this[_remaining] = dart.notNull(this[_remaining]) - 1;
@@ -3963,6 +4046,8 @@ var async;
super._ForwardingStream(source);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, T);
+ dart.as(sink, _EventSink$(T));
let satisfies = null;
try {
satisfies = this[_test](inputEvent);
@@ -3992,6 +4077,8 @@ var async;
throw new core.ArgumentError(count);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, T);
+ dart.as(sink, _EventSink$(T));
if (dart.notNull(this[_remaining]) > 0) {
this[_remaining] = dart.notNull(this[_remaining]) - 1;
return;
@@ -4011,6 +4098,8 @@ var async;
super._ForwardingStream(source);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, T);
+ dart.as(sink, _EventSink$(T));
if (this[_hasFailed]) {
sink[_add](inputEvent);
return;
@@ -4048,6 +4137,8 @@ var async;
super._ForwardingStream(source);
}
[_handleData](inputEvent, sink) {
+ dart.as(inputEvent, T);
+ dart.as(sink, _EventSink$(T));
if (core.identical(this[_previous], _DistinctStream._SENTINEL)) {
this[_previous] = inputEvent;
return sink[_add](inputEvent);
@@ -4087,6 +4178,7 @@ var async;
this[_sink] = sink;
}
add(data) {
+ dart.as(data, T);
this[_sink][_add](data);
}
addError(error, stackTrace) {
@@ -4118,6 +4210,7 @@ var async;
return this[_subscription] != null;
}
[_add](data) {
+ dart.as(data, T);
if (this[_isClosed]) {
throw new core.StateError("Stream is already closed");
}
@@ -4152,6 +4245,7 @@ var async;
return null;
}
[_handleData](data) {
+ dart.as(data, S);
try {
this[_transformerSink].add(data);
} catch (e) {
@@ -4219,8 +4313,10 @@ var async;
super.Stream();
}
listen(onData, opts) {
+ dart.as(onData, dart.functionType(dart.void, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let onDone = opts && 'onDone' in opts ? opts.onDone : null;
+ dart.as(onDone, dart.functionType(dart.void, []));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
cancelOnError = core.identical(true, cancelOnError);
let subscription = new _SinkTransformerStreamSubscription(this[_stream], dart.as(this[_sinkMapper], _SinkMapper), onData, onError, onDone, cancelOnError);
@@ -4254,6 +4350,7 @@ var async;
this[_sink] = sink;
}
add(data) {
+ dart.as(data, S);
return this[_handleData](data, this[_sink]);
}
addError(error, stackTrace) {
@@ -4273,8 +4370,11 @@ var async;
class _StreamHandlerTransformer extends _StreamSinkTransformer$(S, T) {
_StreamHandlerTransformer(opts) {
let handleData = opts && 'handleData' in opts ? opts.handleData : null;
+ dart.as(handleData, dart.functionType(dart.void, [S, EventSink$(T)]));
let handleError = opts && 'handleError' in opts ? opts.handleError : null;
+ dart.as(handleError, dart.functionType(dart.void, [core.Object, core.StackTrace, EventSink$(T)]));
let handleDone = opts && 'handleDone' in opts ? opts.handleDone : null;
+ dart.as(handleDone, dart.functionType(dart.void, [EventSink$(T)]));
super._StreamSinkTransformer(dart.as(outputSink => {
if (handleData == null)
handleData = dart.as(_StreamHandlerTransformer._defaultHandleData, __CastType29);
@@ -4328,8 +4428,10 @@ var async;
super.Stream();
}
listen(onData, opts) {
+ dart.as(onData, dart.functionType(dart.void, [T]));
let onError = opts && 'onError' in opts ? opts.onError : null;
let onDone = opts && 'onDone' in opts ? opts.onDone : null;
+ dart.as(onDone, dart.functionType(dart.void, []));
let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
cancelOnError = core.identical(true, cancelOnError);
let result = this[_transformer](this[_stream], cancelOnError);

Powered by Google App Engine
This is Rietveld 408576698