From aee65337ec81ea3bed5aa3c7fa5e6b6aceeeed65 Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Tue, 19 Apr 2022 00:18:07 +0000 Subject: [PATCH] Deprecate 'ParameterElement.isNotOptional', use 'isRequired' instead. Change-Id: I1782f6d9803cf7829489904fe2833b2724f8be6e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/241512 Reviewed-by: Brian Wilkerson Commit-Queue: Konstantin Shcheglov Reviewed-by: Samuel Rawlins --- .../lib/src/services/flutter/class_description.dart | 2 +- pkg/analyzer/CHANGELOG.md | 3 +++ pkg/analyzer/lib/dart/element/element.dart | 11 ++++++++++- pkg/analyzer/lib/src/dart/element/element.dart | 6 +++++- .../lib/src/dart/element/least_upper_bound.dart | 4 ++-- pkg/analyzer/lib/src/dart/element/subtype.dart | 2 +- .../src/dart/element/type_constraint_gatherer.dart | 2 +- pkg/analyzer/pubspec.yaml | 2 +- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/flutter/class_description.dart b/pkg/analysis_server/lib/src/services/flutter/class_description.dart index b37c7416160..a592206832a 100644 --- a/pkg/analysis_server/lib/src/services/flutter/class_description.dart +++ b/pkg/analysis_server/lib/src/services/flutter/class_description.dart @@ -64,7 +64,7 @@ class ClassDescriptionRegistry { if (constructor == null) return null; for (var parameter in constructor.parameters) { - if (parameter.isNotOptional || parameter.hasRequired) { + if (parameter.isRequired || parameter.hasRequired) { return null; } } diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md index 85f3551b647..3022ce6fbdf 100644 --- a/pkg/analyzer/CHANGELOG.md +++ b/pkg/analyzer/CHANGELOG.md @@ -1,3 +1,6 @@ +## 4.1.0-dev +* Deprecated `ParameterElement.isNotOptional`, use `isRequired` instead. + ## 4.0.0 * Removed deprecated `UriKind` and `Source.uriKind`. * Removed deprecated `LibraryElement.hasExtUri`. diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart index 12469536b79..97af71bb4d9 100644 --- a/pkg/analyzer/lib/dart/element/element.dart +++ b/pkg/analyzer/lib/dart/element/element.dart @@ -1528,7 +1528,7 @@ abstract class ParameterElement /// meaning of this getter. The parameter `{@required int x}` will return /// `false` and the parameter `{@required required int x}` will return /// `true` - // TODO(brianwilkerson) Rename this to `isRequired`. + @Deprecated('Use isRequired instead') bool get isNotOptional; /// Return `true` if this parameter is an optional parameter. Optional @@ -1552,6 +1552,15 @@ abstract class ParameterElement /// parameters can either be required or optional. bool get isPositional; + /// Return `true` if this parameter is either a required positional + /// parameter, or a named parameter with the `required` keyword. + /// + /// Note: the presence or absence of the `@required` annotation does not + /// change the meaning of this getter. The parameter `{@required int x}` + /// will return `false` and the parameter `{@required required int x}` + /// will return `true`. + bool get isRequired; + /// Return `true` if this parameter is both a required and named parameter. /// Named parameters that are annotated with the `@required` annotation are /// considered optional. Named parameters that are annotated with the diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 93f499bbeaf..a0f91f251a2 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -1453,7 +1453,7 @@ mixin ConstructorElementMixin implements ConstructorElement { } // no required parameters for (ParameterElement parameter in parameters) { - if (parameter.isNotOptional) { + if (parameter.isRequired) { return false; } } @@ -4880,6 +4880,7 @@ mixin ParameterElementMixin implements ParameterElement { @override bool get isNamed => parameterKind.isNamed; + @Deprecated('Use isRequired instead') @override bool get isNotOptional => parameterKind.isRequired; @@ -4895,6 +4896,9 @@ mixin ParameterElementMixin implements ParameterElement { @override bool get isPositional => parameterKind.isPositional; + @override + bool get isRequired => parameterKind.isRequired; + @override bool get isRequiredNamed => parameterKind.isRequiredNamed; diff --git a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart index c675895bd2d..544a143fec5 100644 --- a/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart +++ b/pkg/analyzer/lib/src/dart/element/least_upper_bound.dart @@ -802,14 +802,14 @@ class LeastUpperBoundHelper { while (fIndex < fParameters.length) { var fParameter = fParameters[fIndex++]; - if (fParameter.isNotOptional) { + if (fParameter.isRequired) { return _interfaceTypeFunctionNone; } } while (gIndex < gParameters.length) { var gParameter = gParameters[gIndex++]; - if (gParameter.isNotOptional) { + if (gParameter.isRequired) { return _interfaceTypeFunctionNone; } } diff --git a/pkg/analyzer/lib/src/dart/element/subtype.dart b/pkg/analyzer/lib/src/dart/element/subtype.dart index 9ff6e694366..8bec0b37e4e 100644 --- a/pkg/analyzer/lib/src/dart/element/subtype.dart +++ b/pkg/analyzer/lib/src/dart/element/subtype.dart @@ -419,7 +419,7 @@ class SubtypeHelper { // The supertype must provide all required parameters to the subtype. while (fIndex < fParameters.length) { var fParameter = fParameters[fIndex++]; - if (fParameter.isNotOptional) { + if (fParameter.isRequired) { return false; } } diff --git a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart index eed4d975553..f5b011ee611 100644 --- a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart +++ b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart @@ -506,7 +506,7 @@ class TypeConstraintGatherer { // The supertype must provide all required parameters to the subtype. while (fIndex < fParameters.length) { var fParameter = fParameters[fIndex++]; - if (fParameter.isNotOptional) { + if (fParameter.isRequired) { _constraints.length = rewind; return false; } diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml index 9cf0d35c265..52861156666 100644 --- a/pkg/analyzer/pubspec.yaml +++ b/pkg/analyzer/pubspec.yaml @@ -1,5 +1,5 @@ name: analyzer -version: 4.0.0 +version: 4.1.0-dev description: This package provides a library that performs static analysis of Dart code. homepage: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer