be30b62e3d
We have decided to move to a different API for Fasta/Analyzer integration, one that doesn't involve compiling to Kernel or observing type inference. The listener API will become broken, so let's just remove it before that happens. We lose the ability to trace type inference so let's restore that ability next. The analyzer's resolution storer is not used, but that code has been left. The resolution applier will no longer work without the resolution storer, so those tests have been disabled. Change-Id: If9ac5aba2d5de7788d8a65f7fa8410599e636d21 Reviewed-on: https://dart-review.googlesource.com/42400 Commit-Queue: Kevin Millikin <kmillikin@google.com> Reviewed-by: Paul Berry <paulberry@google.com> Reviewed-by: Peter von der Ahé <ahe@google.com>
475 lines
14 KiB
Dart
475 lines
14 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(() {
|
|
// TODO(scheglov): Restore similar test coverage when the front-end API
|
|
// allows it. See https://github.com/dart-lang/sdk/issues/32258.
|
|
// 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_dynamicObjectGetter_hashCode() async {
|
|
// Fails with non-kernel analyzer but works correctly with kernel.
|
|
await super.test_dynamicObjectGetter_hashCode();
|
|
}
|
|
|
|
@override
|
|
test_dynamicObjectMethod_toString() async {
|
|
// Fails with non-kernel analyzer but works correctly with kernel.
|
|
await super.test_dynamicObjectMethod_toString();
|
|
}
|
|
|
|
@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;
|
|
}
|