[migrate] lib/src/dart/element/extensions.dart
Change-Id: If40593231395c8277a8b2fbb520bc0a77c518367
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/414901
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/extensions.dart b/pkg/analyzer/lib/src/dart/element/extensions.dart
index e216a8a..7a50f3b 100644
--- a/pkg/analyzer/lib/src/dart/element/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/element/extensions.dart
@@ -2,10 +2,7 @@
// 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.
-// ignore_for_file: analyzer_use_new_elements
-
import 'package:analyzer/dart/analysis/features.dart';
-import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -23,6 +20,14 @@
}
extension Element2Extension on Element2 {
+ TypeImpl? get firstParameterType {
+ var self = this;
+ if (self is MethodElement2OrMember) {
+ return self.formalParameters.firstOrNull?.type;
+ }
+ return null;
+ }
+
/// Return `true` if this element, the enclosing class (if there is one), or
/// the enclosing library, has been annotated with the `@doNotStore`
/// annotation.
@@ -139,78 +144,11 @@
}
}
-extension ElementExtension on Element {
- /// Return `true` if this element, the enclosing class (if there is one), or
- /// the enclosing library, has been annotated with the `@doNotStore`
- /// annotation.
- bool get hasOrInheritsDoNotStore {
- if (hasDoNotStore) {
- return true;
- }
-
- var ancestor = enclosingElement3;
- if (ancestor is InterfaceElement) {
- if (ancestor.hasDoNotStore) {
- return true;
- }
- ancestor = ancestor.enclosingElement3;
- } else if (ancestor is ExtensionElement) {
- if (ancestor.hasDoNotStore) {
- return true;
- }
- ancestor = ancestor.enclosingElement3;
- }
-
- return ancestor is CompilationUnitElement && ancestor.library.hasDoNotStore;
- }
-
- /// Return `true` if this element is an instance member of a class or mixin.
- ///
- /// Only [MethodElement]s and [PropertyAccessorElement]s are supported.
- /// We intentionally exclude [ConstructorElement]s - they can only be
- /// invoked in instance creation expressions, and [FieldElement]s - they
- /// cannot be invoked directly and are always accessed using corresponding
- /// [PropertyAccessorElement]s.
- bool get isInstanceMember {
- assert(this is! PropertyInducingElement,
- 'Check the PropertyAccessorElement instead');
- var this_ = this;
- var enclosing = this_.enclosingElement3;
- if (enclosing is InterfaceElement) {
- return this_ is MethodElement && !this_.isStatic ||
- this_ is PropertyAccessorElement && !this_.isStatic;
- }
- return false;
- }
-}
-
-extension ExecutableElement2OrMemberQuestionExtension
- on ExecutableElement2OrMember? {
- TypeImpl? get firstParameterType {
- var self = this;
- if (self is MethodElement2OrMember) {
- return self.formalParameters.firstOrNull?.type;
- }
- return null;
- }
-}
-
-extension ExecutableElementExtension on ExecutableElement {
+extension ExecutableElement2Extension on ExecutableElement2 {
/// Whether the enclosing element is the class `Object`.
bool get isObjectMember {
- var enclosing = enclosingElement3;
- return enclosing is ClassElement && enclosing.isDartCoreObject;
- }
-}
-
-extension ExecutableElementOrMemberQuestionExtension
- on ExecutableElementOrMember? {
- TypeImpl? get firstParameterType {
- var self = this;
- if (self is MethodElementOrMember) {
- return self.parameters.firstOrNull?.type;
- }
- return null;
+ var enclosing = enclosingElement2;
+ return enclosing is ClassElement2 && enclosing.isDartCoreObject;
}
}
@@ -222,7 +160,7 @@
ParameterKind? kind,
bool? isCovariant,
}) {
- var firstFragment = this.firstFragment as ParameterElementMixin;
+ var firstFragment = this.firstFragment as ParameterElementImpl;
return FormalParameterElementImpl(
firstFragment.copyWith(
type: type,
@@ -245,7 +183,7 @@
}
extension ParameterElementMixinExtension on ParameterElementMixin {
- /// Return [ParameterElement] with the specified properties replaced.
+ /// Return [ParameterElementImpl] with the specified properties replaced.
ParameterElementImpl copyWith({
TypeImpl? type,
ParameterKind? kind,
@@ -257,15 +195,6 @@
kind ?? parameterKind,
)..isExplicitlyCovariant = isCovariant ?? this.isCovariant;
}
-
- /// Returns `this`, converted to a [ParameterElementImpl] if it isn't one
- /// already.
- ParameterElementImpl toImpl() {
- return switch (this) {
- ParameterElementImpl p => p,
- _ => copyWith(),
- };
- }
}
extension RecordTypeExtension on RecordType {
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 164cfe8..5a02508 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -1066,9 +1066,9 @@
);
if (parameter.isCovariant != shouldBeCovariant) {
transformedParameters ??= [
- for (var parameter in parameters) parameter.toImpl()
+ for (var parameter in parameters) parameter.declaration
];
- transformedParameters[index] = parameter.copyWith(
+ transformedParameters[index] = parameter.declaration.copyWith(
isCovariant: shouldBeCovariant,
);
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
index 8b7175c..bf5875d 100644
--- a/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart
@@ -23,7 +23,6 @@
import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/scope_helpers.dart';
import 'package:analyzer/src/generated/super_context.dart';
-import 'package:analyzer/src/utilities/extensions/element.dart';
class PropertyElementResolver with ScopeHelpers {
final ResolverVisitor _resolver;
@@ -897,17 +896,17 @@
required bool hasRead,
required bool hasWrite,
}) {
- var readElement = result.getter2?.asElement;
- var writeElement = result.setter2?.asElement;
+ var readElement = result.getter2;
+ var writeElement = result.setter2;
var contextType = hasRead
- ? readElement.firstParameterType
- : writeElement.firstParameterType;
+ ? readElement?.firstParameterType
+ : writeElement?.firstParameterType;
return PropertyElementResolverResult(
atDynamicTarget: atDynamicTarget,
- readElementRequested2: readElement?.asElement2,
- writeElementRequested2: writeElement?.asElement2,
+ readElementRequested2: readElement,
+ writeElementRequested2: writeElement,
indexContextType: contextType ?? UnknownInferredType.instance,
);
}
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index 5802d35..d26b941 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -11,6 +11,7 @@
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/extensions.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
+import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:analyzer_utilities/testing/tree_string_sink.dart';
import 'package:collection/collection.dart';
import 'package:test/test.dart';
@@ -4533,7 +4534,8 @@
}
bool _shouldWrite(ExecutableElement element) {
- return _configuration.withObjectMembers || !element.isObjectMember;
+ return _configuration.withObjectMembers ||
+ !element.asElement2.isObjectMember;
}
List<MapEntry<Name, T>> _sortedEntries<T>(
@@ -4612,7 +4614,7 @@
) {
var isEmpty = map.values.flattenedToList.where((element) {
if (_configuration.withObjectMembers) return true;
- return !element.isObjectMember;
+ return !element.asElement2.isObjectMember;
}).isEmpty;
if (isEmpty) return;