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

Unified Diff: lib/src/checker/checker.dart

Issue 1048863003: Handle for-in loops (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 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/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) {

Powered by Google App Engine
This is Rietveld 408576698