Chromium Code Reviews| Index: pkg/analyzer/test/generated/resolver_test.dart |
| diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart |
| index 01b43834457da2ce03815a72b9799b75cee924a0..5bb74c09b79c8c981fc9afff5e8fe9ce13585152 100644 |
| --- a/pkg/analyzer/test/generated/resolver_test.dart |
| +++ b/pkg/analyzer/test/generated/resolver_test.dart |
| @@ -68,6 +68,7 @@ main() { |
| runReflectiveTests(SimpleResolverTest); |
| runReflectiveTests(StrictModeTest); |
| runReflectiveTests(TypePropagationTest); |
| + runReflectiveTests(StrongModeTypePropagationTest); |
| } |
| /** |
| @@ -13551,6 +13552,208 @@ main() { |
| } |
| @reflectiveTest |
| +class StrongModeTypePropagationTest extends TypePropagationTest { |
| + void _enterStrongMode() { |
|
Paul Berry
2015/08/27 01:28:11
Consider renaming this method to setUp() and addin
Leaf
2015/08/27 18:15:26
This reveals an issue, actually. I made StrongMod
|
| + AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
| + options.strongMode = true; |
| + resetWithOptions(options); |
| + } |
| + |
| + void test_localVariableInference_constant() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var v = 3; |
| + return v; // marker |
| +}'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_transitive_local() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var x = 3; |
| + var v = x; |
| + return v; // marker |
| +}'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_transitive_list_local() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var x = <int>[3]; |
| + var v = x[0]; |
| + return v; // marker |
| +}'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_transitive_toplevel_lexical() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +int x = 3; |
| +main() { |
| + var v = x; |
| + return v; // marker |
| +} |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_transitive_toplevel_reversed() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var v = x; |
| + return v; // marker |
| +} |
| +int x = 3; |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void fail_localVariableInference_transitive_toplevel_inferred_lexical() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +final x = 3; |
| +main() { |
| + var v = x; |
| + return v; // marker |
| +} |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void fail_localVariableInference_transitive_toplevel_inferred_reversed() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var v = x; |
| + return v; // marker |
| +} |
| +final x = 3; |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_transitive_field_lexical() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +class A { |
| + int x = 3; |
| + f() { |
| + var v = x; |
| + return v; // marker |
| + } |
| +} |
| +main() { |
| +} |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_transitive_field_reversed() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +class A { |
| + f() { |
| + var v = x; |
| + return v; // marker |
| + } |
| + int x = 3; |
| +} |
| +main() { |
| +} |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void fail_localVariableInference_transitive_field_inferred_lexical() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +class A { |
| + final x = 3; |
| + f() { |
| + var v = x; |
| + return v; // marker |
| + } |
| +} |
| +main() { |
| +} |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void fail_localVariableInference_transitive_field_inferred_reversed() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +class A { |
| + f() { |
| + var v = x; |
| + return v; // marker |
| + } |
| + final x = 3; |
| +} |
| +main() { |
| +} |
| +'''; |
| + _assertPropagatedReturnType(code, typeProvider.intType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.intType, null); |
| + } |
| + |
| + void test_localVariableInference_declaredType_disabled() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + dynamic v = 3; |
| + return v; // marker |
| +}'''; |
| + _assertPropagatedReturnType( |
| + code, typeProvider.dynamicType, typeProvider.intType); |
| + _assertTypeOfMarkedExpression( |
| + code, typeProvider.dynamicType, typeProvider.intType); |
| + } |
| + |
| + void test_localVariableInference_bottom_disabled() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var v = null; |
| + return v; // marker |
| +}'''; |
| + _assertPropagatedReturnType(code, typeProvider.dynamicType, null); |
| + _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, null); |
| + } |
| + |
| + void test_localVariableInference_noInitializer_disabled() { |
| + _enterStrongMode(); |
| + String code = r''' |
| +main() { |
| + var v; |
| + v = 3; |
| + return v; // marker |
| +}'''; |
| + _assertPropagatedReturnType( |
| + code, typeProvider.dynamicType, typeProvider.intType); |
| + _assertTypeOfMarkedExpression( |
| + code, typeProvider.dynamicType, typeProvider.intType); |
| + } |
| +} |
| + |
| +@reflectiveTest |
| class TypeProviderImplTest extends EngineTestCase { |
| void test_creation() { |
| // |