blob: 9157b6df7609f67ba89103653f5eef9feb0174e4 [file] [log] [blame]
// 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();
}
}