| 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..ccfe9b0278260f348ea7e24a2263051bb75acbe1 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,196 @@ main() {
|
| }
|
|
|
| @reflectiveTest
|
| +class StrongModeTypePropagationTest extends TypePropagationTest {
|
| + void _enterStrongMode() {
|
| + 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_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() {
|
| //
|
|
|