mirror of
https://github.com/dart-lang/sdk
synced 2024-10-07 18:07:49 +00:00
Strict-inference: be lenient on @optionalTypeArgs classes
Fixes https://github.com/dart-lang/sdk/issues/42882 Change-Id: I01c7b12cdb36d06ab9d44fb080b15b30684cba3a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/156583 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
parent
c6deb3793f
commit
9f49ef9d82
|
@ -224,7 +224,10 @@ class GenericInferrer {
|
|||
// by [infer], with [typeParam] filled in as its bounds. This is
|
||||
// considered a failure of inference, under the "strict-inference"
|
||||
// mode.
|
||||
if (errorNode is ConstructorName) {
|
||||
if (errorNode is ConstructorName &&
|
||||
!(errorNode.type.type as InterfaceType)
|
||||
.element
|
||||
.hasOptionalTypeArgs) {
|
||||
String constructorName = errorNode.name == null
|
||||
? errorNode.type.name.name
|
||||
: '${errorNode.type}.${errorNode.name}';
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'package:analyzer/src/error/codes.dart';
|
||||
import 'package:analyzer/src/generated/engine.dart';
|
||||
import 'package:analyzer/src/test_utilities/package_mixin.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
|
@ -16,7 +17,8 @@ main() {
|
|||
}
|
||||
|
||||
@reflectiveTest
|
||||
class InferenceFailureOnInstanceCreationTest extends DriverResolutionTest {
|
||||
class InferenceFailureOnInstanceCreationTest extends DriverResolutionTest
|
||||
with PackageMixin {
|
||||
@override
|
||||
AnalysisOptionsImpl get analysisOptions =>
|
||||
AnalysisOptionsImpl()..strictInference = true;
|
||||
|
@ -74,6 +76,18 @@ void f() {
|
|||
]);
|
||||
}
|
||||
|
||||
test_missingTypeArgument_noInference_optionalTypeArgs() async {
|
||||
addMetaPackage();
|
||||
await assertNoErrorsInCode(r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@optionalTypeArgs
|
||||
class C<T> {}
|
||||
void f() {
|
||||
C();
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_missingTypeArgument_upwardInference() async {
|
||||
await assertNoErrorsInCode(r'''
|
||||
import 'dart:collection';
|
||||
|
|
Loading…
Reference in a new issue