| // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:test/test.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import 'strong_mode_test.dart'; |
| |
| main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(StrongModeLocalInferenceTest_Kernel); |
| defineReflectiveTests(StrongModeStaticTypeAnalyzer2Test_Kernel); |
| defineReflectiveTests(StrongModeTypePropagationTest_Kernel); |
| }); |
| } |
| |
| /// Tests marked with this annotations fail because we either have not triaged |
| /// them, or know that this is an analyzer problem. |
| const potentialAnalyzerProblem = const Object(); |
| |
| /// Tests marked with this annotation fail because of a Fasta problem. |
| class FastaProblem { |
| const FastaProblem(String issueUri); |
| } |
| |
| @reflectiveTest |
| class StrongModeLocalInferenceTest_Kernel extends StrongModeLocalInferenceTest { |
| @override |
| bool get enableKernelDriver => true; |
| |
| @override |
| bool get enableNewAnalysisDriver => true; |
| |
| @override |
| bool get useCFE => true; |
| |
| @override |
| @failingTest |
| test_async_star_method_propagation() async { |
| // Bad state: No type information for Stream at 124 |
| await super.test_async_star_method_propagation(); |
| } |
| |
| @override |
| @failingTest |
| test_async_star_propagation() async { |
| // Bad state: No type information for Stream at 105 |
| await super.test_async_star_propagation(); |
| } |
| |
| @override |
| @failingTest |
| test_constrainedByBounds2() async { |
| // Expected: InterfaceTypeImpl:<int> |
| await super.test_constrainedByBounds2(); |
| } |
| |
| @override |
| @failingTest |
| test_constrainedByBounds3() async { |
| // Expected: InterfaceTypeImpl:<int> |
| await super.test_constrainedByBounds3(); |
| } |
| |
| @override |
| @failingTest |
| test_constrainedByBounds4() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_constrainedByBounds4(); |
| } |
| |
| @override |
| @failingTest |
| test_constrainedByBounds5() async { |
| // Bad state: Expected a type for 4 at 119; got one for kernel offset 118 |
| await super.test_constrainedByBounds5(); |
| } |
| |
| @override |
| @failingTest |
| test_covarianceChecks() async { |
| // NoSuchMethodError: The method 'toList' was called on null. |
| await super.test_covarianceChecks(); |
| } |
| |
| @override |
| @failingTest |
| test_covarianceChecks_genericMethods() async { |
| // NoSuchMethodError: The method 'toList' was called on null. |
| await super.test_covarianceChecks_genericMethods(); |
| } |
| |
| @override |
| @failingTest |
| test_covarianceChecks_returnFunction() async { |
| // AnalysisException: Element mismatch in /test.dart at class C<T> |
| await super.test_covarianceChecks_returnFunction(); |
| } |
| |
| @override |
| @failingTest |
| test_covarianceChecks_superclass() async { |
| // NoSuchMethodError: The method 'toList' was called on null. |
| await super.test_covarianceChecks_superclass(); |
| } |
| |
| @override |
| @failingTest |
| test_functionDeclaration_body_propagation() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_functionDeclaration_body_propagation(); |
| } |
| |
| @override |
| @failingTest |
| test_functionLiteral_assignment_typedArguments() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_functionLiteral_assignment_typedArguments(); |
| } |
| |
| @override |
| @failingTest |
| test_functionLiteral_assignment_unTypedArguments() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_functionLiteral_assignment_unTypedArguments(); |
| } |
| |
| @override |
| @failingTest |
| test_functionLiteral_body_propagation() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_functionLiteral_body_propagation(); |
| } |
| |
| @override |
| @failingTest |
| test_functionLiteral_unTypedArgument_propagation() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_functionLiteral_unTypedArgument_propagation(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_downwards8() async { |
| // type 'BottomTypeImpl' is not a subtype of type 'InterfaceType' in type cast where |
| await super.test_futureOr_downwards8(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_methods2() async { |
| // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0 |
| await super.test_futureOr_methods2(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_methods3() async { |
| // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0 |
| await super.test_futureOr_methods3(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_methods4() async { |
| // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0 |
| await super.test_futureOr_methods4(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_no_return() async { |
| // Expected: InterfaceTypeImpl:<Null> |
| await super.test_futureOr_no_return(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_no_return_value() async { |
| // Expected: InterfaceTypeImpl:<Null> |
| await super.test_futureOr_no_return_value(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_return_null() async { |
| // Expected: InterfaceTypeImpl:<Null> |
| await super.test_futureOr_return_null(); |
| } |
| |
| @override |
| @failingTest |
| test_futureOr_upwards2() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0 |
| await super.test_futureOr_upwards2(); |
| } |
| |
| @override |
| @failingTest |
| test_generic_partial() async { |
| // AnalysisException: Element mismatch in /test.dart at class A<T> |
| await super.test_generic_partial(); |
| // TODO(brianwilkerson) This test periodically fails (by not throwing an |
| // exception), so I am temporarily disabling it. The cause of the flaky |
| // behavior needs to be investigated. |
| fail('Flaky test'); |
| } |
| |
| @override |
| @failingTest |
| test_inference_error_arguments() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0; |
| // 1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0 |
| await super.test_inference_error_arguments(); |
| } |
| |
| @override |
| @failingTest |
| test_inference_error_arguments2() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0; |
| // 2 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0 |
| await super.test_inference_error_arguments2(); |
| } |
| |
| @override |
| @failingTest |
| test_inference_error_extendsFromReturn() async { |
| // Expected 2 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0 |
| await super.test_inference_error_extendsFromReturn(); |
| } |
| |
| @override |
| @failingTest |
| test_inference_error_extendsFromReturn2() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0 |
| await super.test_inference_error_extendsFromReturn2(); |
| } |
| |
| @override |
| @failingTest |
| test_inference_error_genericFunction() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0; |
| // 1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0 |
| await super.test_inference_error_genericFunction(); |
| } |
| |
| @override |
| @failingTest |
| test_inference_error_returnContext() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0 |
| await super.test_inference_error_returnContext(); |
| } |
| |
| @override |
| @failingTest |
| test_inferGenericInstantiation2() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0; |
| // 1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0 |
| await super.test_inferGenericInstantiation2(); |
| } |
| |
| @override |
| @failingTest |
| test_instanceCreation() async { |
| // AnalysisException: Element mismatch in /test.dart at class A<S, T> |
| await super.test_instanceCreation(); |
| // TODO(brianwilkerson) This test fails as expected when run as part of a |
| // larger group of tests, but does not fail when run individually (such as |
| // on the bots). |
| fail('Flaky test'); |
| } |
| |
| @override |
| @failingTest |
| test_partialTypes1() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_partialTypes1(); |
| } |
| |
| @override |
| @failingTest |
| test_pinning_multipleConstraints1() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0 |
| await super.test_pinning_multipleConstraints1(); |
| } |
| |
| @override |
| @failingTest |
| test_pinning_multipleConstraints3() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0 |
| await super.test_pinning_multipleConstraints3(); |
| } |
| |
| @override |
| @failingTest |
| test_pinning_multipleConstraints_contravariant1() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_pinning_multipleConstraints_contravariant1(); |
| } |
| |
| @override |
| @failingTest |
| test_pinning_multipleConstraints_contravariant2() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_pinning_multipleConstraints_contravariant2(); |
| } |
| |
| @override |
| @failingTest |
| test_pinning_multipleConstraints_contravariant3() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_pinning_multipleConstraints_contravariant3(); |
| } |
| |
| @override |
| @failingTest |
| test_pinning_multipleConstraints_contravariant4() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_pinning_multipleConstraints_contravariant4(); |
| } |
| |
| @override |
| @failingTest |
| test_redirectedConstructor_named() { |
| // Expected: 'A<T2, U2>'; Actual: 'A<T, U>' |
| return super.test_redirectedConstructor_named(); |
| } |
| |
| @override |
| @failingTest |
| test_redirectedConstructor_unnamed() { |
| // Expected: 'A<T2, U2>'; Actual: 'A<T, U>' |
| return super.test_redirectedConstructor_unnamed(); |
| } |
| |
| @override |
| @failingTest |
| test_redirectingConstructor_propagation() async { |
| // AnalysisException: Element mismatch in /test.dart at class A |
| await super.test_redirectingConstructor_propagation(); |
| // TODO(brianwilkerson) Figure out why this test is flaky. |
| fail('Flaky test'); |
| } |
| |
| @override |
| @failingTest |
| test_returnType_variance1() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_returnType_variance1(); |
| } |
| |
| @override |
| @failingTest |
| test_returnType_variance2() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_returnType_variance2(); |
| } |
| |
| @override |
| @failingTest |
| test_returnType_variance3() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_returnType_variance3(); |
| } |
| |
| @override |
| @failingTest |
| test_returnType_variance4() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_returnType_variance4(); |
| } |
| |
| @override |
| @failingTest |
| test_returnType_variance5() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_returnType_variance5(); |
| } |
| |
| @override |
| @failingTest |
| test_returnType_variance6() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_returnType_variance6(); |
| } |
| } |
| |
| @reflectiveTest |
| class StrongModeStaticTypeAnalyzer2Test_Kernel |
| extends StrongModeStaticTypeAnalyzer2Test { |
| @override |
| bool get enableKernelDriver => true; |
| |
| @override |
| bool get enableNewAnalysisDriver => true; |
| |
| @override |
| bool get useCFE => true; |
| |
| @override |
| test_futureOr_promotion3() async { |
| // Test passes even though the overridden method fails. |
| await super.test_futureOr_promotion3(); |
| } |
| |
| @override |
| @failingTest |
| test_genericFunction_parameter() async { |
| // Failed to resolve 1 nodes: |
| await super.test_genericFunction_parameter(); |
| } |
| |
| @override |
| @failingTest |
| test_genericFunction_typedef() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_genericFunction_typedef(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_explicitTypeParams() async { |
| // Bad state: Found 2 argument types for 1 type arguments |
| await super.test_genericMethod_explicitTypeParams(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionExpressionInvocation_explicit() async { |
| // Bad state: Expected element declaration for analyzer offset 230; got one for kernel offset 233 |
| await super.test_genericMethod_functionExpressionInvocation_explicit(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionExpressionInvocation_functionTypedParameter_explicit() { |
| // Failed to resolve 2 nodes |
| return super |
| .test_genericMethod_functionExpressionInvocation_functionTypedParameter_explicit(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionExpressionInvocation_functionTypedParameter_inferred() { |
| // Failed to resolve 1 nodes |
| return super |
| .test_genericMethod_functionExpressionInvocation_functionTypedParameter_inferred(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionExpressionInvocation_inferred() async { |
| // Bad state: Expected element declaration for analyzer offset 230; got one for kernel offset 233 |
| await super.test_genericMethod_functionExpressionInvocation_inferred(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionInvocation_explicit() async { |
| // Failed to resolve 1 nodes: |
| await super.test_genericMethod_functionInvocation_explicit(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionInvocation_functionTypedParameter_explicit() { |
| // Failed to resolve 1 nodes |
| return super |
| .test_genericMethod_functionInvocation_functionTypedParameter_explicit(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionInvocation_functionTypedParameter_inferred() { |
| // Failed to resolve 1 nodes |
| return super |
| .test_genericMethod_functionInvocation_functionTypedParameter_inferred(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionInvocation_inferred() async { |
| // Failed to resolve 1 nodes: |
| await super.test_genericMethod_functionInvocation_inferred(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_functionTypedParameter_tearoff() { |
| // Failed to resolve 1 nodes |
| return super.test_genericMethod_functionTypedParameter_tearoff(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_implicitDynamic() async { |
| // Expected: '<T>((dynamic) → T) → T' |
| await super.test_genericMethod_implicitDynamic(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_nestedCapture() async { |
| // Bad state: Found 2 argument types for 1 type arguments |
| await super.test_genericMethod_nestedCapture(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_nestedFunctions() { |
| // Expected: '<S>(S) → <S>(S) → S'; Actual: '<S₀>(S) → <S>(S) → S' |
| return super.test_genericMethod_nestedFunctions(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_override_differentContextsSameBounds() { |
| // UnimplementedError: TODO(paulberry): TypeParameterType |
| return super.test_genericMethod_override_differentContextsSameBounds(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_override_invalidContravariantTypeParamBounds() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0 |
| await super |
| .test_genericMethod_override_invalidContravariantTypeParamBounds(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_override_invalidCovariantTypeParamBounds() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0 |
| await super |
| .test_genericMethod_override_invalidContravariantTypeParamBounds(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_override_invalidReturnType() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0 |
| await super.test_genericMethod_override_invalidReturnType(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_override_invalidTypeParamCount() async { |
| // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0 |
| await super.test_genericMethod_override_invalidTypeParamCount(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_partiallyAppliedErrorWithBound() async { |
| // Bad state: Found 0 argument types for 1 type arguments |
| await super.test_genericMethod_partiallyAppliedErrorWithBound(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_tearoff() async { |
| // Failed to resolve 1 nodes: |
| await super.test_genericMethod_tearoff(); |
| } |
| |
| @override |
| @failingTest |
| test_genericMethod_toplevel_field_staticTearoff() { |
| // Failed to resolve 1 nodes |
| return super.test_genericMethod_toplevel_field_staticTearoff(); |
| } |
| |
| @override |
| @failingTest |
| test_instantiateToBounds_class_error_typedef() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_instantiateToBounds_class_error_typedef(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_class_error_recursion_typedef() { |
| // Expected 2 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0; 1 errors of |
| // type CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, found 0 |
| return super.test_notInstantiatedBound_class_error_recursion_typedef(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_class_argument() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_class_argument(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_class_argument2() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_class_argument2(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_class_direct() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_class_direct(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_class_indirect() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_class_indirect(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_functionType() { |
| // Expected 2 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_functionType(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_typedef_argument() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_typedef_argument(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_typedef_argument2() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_typedef_argument2(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_error_typedef_direct() { |
| // Expected 1 errors of type |
| // StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0 |
| return super.test_notInstantiatedBound_error_typedef_direct(); |
| } |
| |
| @override |
| @failingTest |
| test_notInstantiatedBound_ok_class_function() { |
| // Failed to resolve 1 nodes |
| return super.test_notInstantiatedBound_ok_class_function(); |
| } |
| |
| @override |
| @failingTest |
| test_objectMethodOnFunctions_Typedef() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super.test_objectMethodOnFunctions_Typedef(); |
| } |
| |
| @override |
| @failingTest |
| test_returnOfInvalidType_object_void() async { |
| await super.test_returnOfInvalidType_object_void(); |
| } |
| |
| @override |
| @failingTest |
| test_setterWithDynamicTypeIsError() async { |
| // Expected 2 errors of type StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, found 0 |
| await super.test_setterWithDynamicTypeIsError(); |
| } |
| |
| @override |
| @failingTest |
| test_setterWithNoVoidType() async { |
| // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0 |
| await super.test_setterWithNoVoidType(); |
| } |
| |
| @override |
| @failingTest |
| test_setterWithOtherTypeIsError() async { |
| // Expected 2 errors of type StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, found 0 |
| await super.test_setterWithOtherTypeIsError(); |
| } |
| } |
| |
| @reflectiveTest |
| class StrongModeTypePropagationTest_Kernel |
| extends StrongModeTypePropagationTest { |
| @override |
| bool get enableKernelDriver => true; |
| |
| @override |
| bool get enableNewAnalysisDriver => true; |
| |
| @override |
| bool get useCFE => true; |
| |
| @override |
| @failingTest |
| test_inconsistentMethodInheritance_inferFunctionTypeFromTypedef() { |
| // UnimplementedError: TODO(paulberry): resynthesize generic typedef |
| return super |
| .test_inconsistentMethodInheritance_inferFunctionTypeFromTypedef(); |
| } |
| } |