Chromium Code Reviews| Index: pkg/analyzer/test/generated/static_type_warning_code_test.dart |
| diff --git a/pkg/analyzer/test/generated/static_type_warning_code_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_test.dart |
| index 137deb568c5f5ebbfad901c3dba35f6892f86d74..2354fb0bb2332a13a6f1fa625085c1823d307fb6 100644 |
| --- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart |
| +++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart |
| @@ -2039,6 +2039,208 @@ f(p) { |
| verify([source]); |
| } |
| + void test_forIn_notIterable() { |
| + assertErrorsInCode(''' |
| +f() { |
| + for (var i in true) {} |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]); |
| + } |
| + |
| + void test_forIn_declaredVariableWrongType() { |
| + assertErrorsInCode(''' |
| +f() { |
| + for (int i in <String>[]) {} |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
| + } |
| + |
| + void test_forIn_existingVariableWrongType() { |
| + assertErrorsInCode(''' |
| +f() { |
| + int i; |
| + for (i in <String>[]) {} |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
| + } |
| + |
| + void test_forIn_declaredVariableRightType() { |
| + assertNoErrorsInCode(''' |
| +f() { |
| + for (int i in <int>[]) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_existingVariableRightType() { |
| + assertNoErrorsInCode(''' |
| +f() { |
| + int i; |
| + for (i in <int>[]) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_dynamicVariable() { |
| + assertNoErrorsInCode(''' |
| +f() { |
| + for (var i in <int>[]) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_iterableOfDynamic() { |
| + assertNoErrorsInCode(''' |
| +f() { |
| + for (int i in []) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_dynamicIterable() { |
| + assertNoErrorsInCode(''' |
| +f() { |
| + dynamic iterable; |
| + for (int i in iterable) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_upcast() { |
| + assertNoErrorsInCode(''' |
| +f() { |
| + for (num i in <int>[]) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_downcast() { |
|
Brian Wilkerson
2016/03/08 01:12:12
Should any of these tests have different behavior
Bob Nystrom
2016/03/08 19:00:50
Right now, I think you'll just get duplicate error
|
| + assertNoErrorsInCode(''' |
| +f() { |
| + for (int i in <num>[]) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_forIn_typeBoundBad() { |
| + assertErrorsInCode(''' |
| +class Foo<T extends Iterable<int>> { |
| + void method(T iterable) { |
| + for (String i in iterable) {} |
| + } |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
| + } |
| + |
| + void test_forIn_typeBoundGood() { |
| + assertNoErrorsInCode(''' |
| +class Foo<T extends Iterable<int>> { |
| + void method(T iterable) { |
| + for (var i in iterable) {} |
| + } |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_notStream() { |
| + assertErrorsInCode(''' |
| +f() async { |
| + await for (var i in true) {} |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]); |
| + } |
| + |
| + void test_awaitForIn_declaredVariableWrongType() { |
| + assertErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<String> stream; |
| + await for (int i in stream) {} |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
| + } |
| + |
| + void test_awaitForIn_existingVariableWrongType() { |
| + assertErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<String> stream; |
| + int i; |
| + await for (i in stream) {} |
| +} |
| +''', [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]); |
| + } |
| + |
| + void test_awaitForIn_declaredVariableRightType() { |
| + assertNoErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<int> stream; |
| + await for (int i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_existingVariableRightType() { |
| + assertNoErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<int> stream; |
| + int i; |
| + await for (i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_dynamicVariable() { |
| + assertNoErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<int> stream; |
| + await for (var i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_streamOfDynamic() { |
| + assertNoErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream stream; |
| + await for (int i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_dynamicStream() { |
| + assertNoErrorsInCode(''' |
| +f() async { |
| + dynamic stream; |
| + await for (int i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_upcast() { |
| + assertNoErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<int> stream; |
| + await for (num i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| + void test_awaitForIn_downcast() { |
| + assertNoErrorsInCode(''' |
| +import 'dart:async'; |
| +f() async { |
| + Stream<num> stream; |
| + await for (int i in stream) {} |
| +} |
| +'''); |
| + } |
| + |
| void test_yield_async_to_basic_type() { |
| Source source = addSource(''' |
| int f() async* { |