cb7e85a26d
Change-Id: Ife337e28fa86f9b98cdabf48a01a4e2f608aa4b8 Reviewed-on: https://dart-review.googlesource.com/35520 Commit-Queue: Mike Fairhurst <mfairhurst@google.com> Reviewed-by: Leaf Petersen <leafp@google.com> Reviewed-by: Paul Berry <paulberry@google.com>
461 lines
13 KiB
Dart
461 lines
13 KiB
Dart
// 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_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_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_inferredFieldDeclaration_propagation() async {
|
|
// Expected: InterfaceTypeImpl:<int>
|
|
await super.test_inferredFieldDeclaration_propagation();
|
|
}
|
|
|
|
@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_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_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');
|
|
}
|
|
}
|
|
|
|
@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_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_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_inferred() async {
|
|
// Failed to resolve 1 nodes:
|
|
await super.test_genericMethod_functionInvocation_inferred();
|
|
}
|
|
|
|
@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_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_invalidTypeParamBounds() async {
|
|
// Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0
|
|
await super.test_genericMethod_override_invalidTypeParamBounds();
|
|
}
|
|
|
|
@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
|
|
@potentialAnalyzerProblem
|
|
test_instantiateToBounds_class_error_recursion() async {
|
|
return super.test_instantiateToBounds_class_error_recursion();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_notInstantiatedBound_direct_class_class() async {
|
|
// Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
|
|
await super.test_notInstantiatedBound_direct_class_class();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_notInstantiatedBound_direct_class_typedef() async {
|
|
// Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
|
|
await super.test_notInstantiatedBound_direct_class_typedef();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_notInstantiatedBound_direct_typedef_class() async {
|
|
// Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
|
|
await super.test_notInstantiatedBound_direct_typedef_class();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_notInstantiatedBound_functionType() async {
|
|
// Expected 2 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
|
|
await super.test_notInstantiatedBound_functionType();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_notInstantiatedBound_indirect_class_class() async {
|
|
// Expected 1 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
|
|
await super.test_notInstantiatedBound_indirect_class_class();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_notInstantiatedBound_indirect_class_class2() async {
|
|
// Expected 2 errors of type StrongModeCode.STRONG_MODE_NOT_INSTANTIATED_BOUND, found 0
|
|
await super.test_notInstantiatedBound_indirect_class_class2();
|
|
}
|
|
|
|
@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();
|
|
}
|
|
|
|
@override
|
|
@failingTest
|
|
test_returnOfInvalidType_object_void() async {
|
|
await super.test_returnOfInvalidType_object_void();
|
|
}
|
|
}
|
|
|
|
@reflectiveTest
|
|
class StrongModeTypePropagationTest_Kernel
|
|
extends StrongModeTypePropagationTest {
|
|
@override
|
|
bool get enableKernelDriver => true;
|
|
|
|
@override
|
|
bool get enableNewAnalysisDriver => true;
|
|
|
|
@override
|
|
bool get useCFE => true;
|
|
}
|