| Index: pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| diff --git a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| index c169871146c2caef1fb9a42b000665db370857a1..d740569c0a627a7605798dad2a13243c4e753dab 100644
|
| --- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
|
| @@ -1329,12 +1329,18 @@ class SimpleTypeInferrerVisitor<T>
|
| return null;
|
| }
|
|
|
| - T handleForInLoop(ast.ForIn node, T iteratorType, Selector currentSelector,
|
| - Selector moveNextSelector) {
|
| - handleDynamicSend(node, moveNextSelector, iteratorType,
|
| - new ArgumentsTypes<T>.empty());
|
| - T currentType = handleDynamicSend(node, currentSelector, iteratorType,
|
| - new ArgumentsTypes<T>.empty());
|
| + T visitForIn(ast.ForIn node) {
|
| + T expressionType = visit(node.expression);
|
| + Selector iteratorSelector = elements.getIteratorSelector(node);
|
| + Selector currentSelector = elements.getCurrentSelector(node);
|
| + Selector moveNextSelector = elements.getMoveNextSelector(node);
|
| +
|
| + T iteratorType =
|
| + handleDynamicSend(node, iteratorSelector, expressionType, null);
|
| + handleDynamicSend(node, moveNextSelector,
|
| + iteratorType, new ArgumentsTypes<T>([], null));
|
| + T currentType =
|
| + handleDynamicSend(node, currentSelector, iteratorType, null);
|
|
|
| if (node.expression.isThis()) {
|
| // Any reasonable implementation of an iterator would expose
|
| @@ -1360,35 +1366,4 @@ class SimpleTypeInferrerVisitor<T>
|
| visit(node.body);
|
| });
|
| }
|
| -
|
| - T visitAsyncForIn(ast.AsyncForIn node) {
|
| - T expressionType = visit(node.expression);
|
| -
|
| - Selector currentSelector = elements.getCurrentSelector(node);
|
| - Selector moveNextSelector = elements.getMoveNextSelector(node);
|
| -
|
| - js.JavaScriptBackend backend = compiler.backend;
|
| - Element ctor = backend.getStreamIteratorConstructor();
|
| -
|
| - /// Synthesize a call to the [StreamIterator] constructor.
|
| - T iteratorType = handleStaticSend(null, null, ctor,
|
| - new ArgumentsTypes<T>([expressionType],
|
| - null));
|
| -
|
| - return handleForInLoop(node, iteratorType, currentSelector,
|
| - moveNextSelector);
|
| - }
|
| -
|
| - T visitSyncForIn(ast.SyncForIn node) {
|
| - T expressionType = visit(node.expression);
|
| - Selector iteratorSelector = elements.getIteratorSelector(node);
|
| - Selector currentSelector = elements.getCurrentSelector(node);
|
| - Selector moveNextSelector = elements.getMoveNextSelector(node);
|
| -
|
| - T iteratorType = handleDynamicSend(node, iteratorSelector, expressionType,
|
| - new ArgumentsTypes<T>.empty());
|
| -
|
| - return handleForInLoop(node, iteratorType, currentSelector,
|
| - moveNextSelector);
|
| - }
|
| }
|
|
|