Index: lib/src/checker/checker.dart |
diff --git a/lib/src/checker/checker.dart b/lib/src/checker/checker.dart |
index b5137fabd643ddb4e54f0756d12e36d82477a416..024a066ca63de43dfab84015068e927b21c4657c 100644 |
--- a/lib/src/checker/checker.dart |
+++ b/lib/src/checker/checker.dart |
@@ -411,6 +411,20 @@ class CodeChecker extends RecursiveAstVisitor { |
node.visitChildren(this); |
} |
+ @override |
+ visitForEachStatement(ForEachStatement node) { |
+ // Check that the expression is an Iterable. |
+ var expr = node.iterable; |
+ var iterableType = _rules.provider.iterableType; |
+ var loopVariable = node.identifier != null |
+ ? node.identifier |
+ : node.loopVariable.identifier; |
+ var iteratorType = loopVariable.staticType; |
+ var checkedType = iterableType.substitute4([iteratorType]); |
+ node.iterable = checkAssignment(expr, checkedType); |
+ node.visitChildren(this); |
+ } |
+ |
@override visitListLiteral(ListLiteral node) { |
var type = _rules.provider.dynamicType; |
if (node.typeArguments != null) { |