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

Unified Diff: pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart

Issue 2908973002: Add type inference logic for "for-in" loops. (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart
index 4942e4a754f5d09b0f64cc1f32ff7d1c42c44478..d336c30a6c76a3d628cb58973e04943554e7f90a 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart
@@ -11,7 +11,7 @@ class Foo {
class Bar<T extends Iterable<String>> {
void foo(T t) {
- for (var i in t) {
+ for (var /*@type=String*/ i in t) {
int x = /*error:INVALID_ASSIGNMENT*/ i;
}
}
@@ -19,7 +19,7 @@ class Bar<T extends Iterable<String>> {
class Baz<T, E extends Iterable<T>, S extends E> {
void foo(S t) {
- for (var i in t) {
+ for (var /*@type=Baz::T*/ i in t) {
int x = /*error:INVALID_ASSIGNMENT*/ i;
T y = i;
}
@@ -28,7 +28,7 @@ class Baz<T, E extends Iterable<T>, S extends E> {
test() {
var /*@type=List<Foo>*/ list = <Foo>[];
- for (var x in list) {
+ for (var /*@type=Foo*/ x in list) {
String y = /*error:INVALID_ASSIGNMENT*/ x;
}
@@ -57,13 +57,13 @@ test() {
var /*@type=Map<String, Foo>*/ map = <String, Foo>{};
// Error: map must be an Iterable.
- for (var x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
+ for (var /*@type=dynamic*/ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
String y = /*info:DYNAMIC_CAST*/ x;
}
// We're not properly inferring that map.keys is an Iterable<String>
// and that x is a String.
- for (var x in map.keys) {
+ for (var /*@type=String*/ x in map.keys) {
String y = x;
}
}

Powered by Google App Engine
This is Rietveld 408576698