From a35d2fbbc87647f2cff98d6808edce50422ba991 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Wed, 3 Jul 2024 09:55:33 -0700 Subject: [PATCH] Tidy up ContainerAccessor.isInherited and super parameters ContainerAccessor._isInherited was unnecessarily backed by a getter, unnecessarily mutable, and unnecessarily set in a constructor body rather than an initializer. This led me to discover we also weren't using super parameters everywhere we could be. So I fixed these as well. --- lib/src/model/accessor.dart | 22 ++++++++++------------ lib/src/model/inheriting_container.dart | 8 ++++---- lib/src/model/method.dart | 9 ++++----- lib/src/model/model_element.dart | 3 ++- lib/src/model/package_graph.dart | 12 ++++++------ lib/src/model/parameter.dart | 5 ++--- 6 files changed, 28 insertions(+), 31 deletions(-) diff --git a/lib/src/model/accessor.dart b/lib/src/model/accessor.dart index 0a251507f5..de43e1c4ff 100644 --- a/lib/src/model/accessor.dart +++ b/lib/src/model/accessor.dart @@ -29,7 +29,7 @@ class Accessor extends ModelElement { late GetterSetterCombo enclosingCombo; Accessor(this.element, super.library, super.packageGraph, - [ExecutableMember? super.originalMember]); + {ExecutableMember? super.originalMember}); @override CharacterLocation? get characterLocation => element.isSynthetic @@ -185,24 +185,22 @@ class ContainerAccessor extends Accessor with ContainerMember, Inheritable { } late final Container _enclosingElement; - bool _isInherited = false; + + @override + final bool isInherited; @override bool get isCovariant => isSetter && parameters.first.isCovariant; - ContainerAccessor(super.element, super.library, super.packageGraph) { + ContainerAccessor(super.element, super.library, super.packageGraph) + : isInherited = false { _enclosingElement = super.enclosingElement as Container; } - ContainerAccessor.inherited(PropertyAccessorElement element, Library library, - PackageGraph packageGraph, this._enclosingElement, - {ExecutableMember? originalMember}) - : super(element, library, packageGraph, originalMember) { - _isInherited = true; - } - - @override - bool get isInherited => _isInherited; + ContainerAccessor.inherited( + super.element, super.library, super.packageGraph, this._enclosingElement, + {super.originalMember}) + : isInherited = true; @override Container get enclosingElement => _enclosingElement; diff --git a/lib/src/model/inheriting_container.dart b/lib/src/model/inheriting_container.dart index e7d7ebe1b2..de8131eec0 100644 --- a/lib/src/model/inheriting_container.dart +++ b/lib/src/model/inheriting_container.dart @@ -503,11 +503,11 @@ abstract class InheritingContainer extends Container { return typeChain; }(); - /// Add a single Field to _fields. + /// Creates a single Field. /// - /// If [field] is not specified, pick the FieldElement from the PropertyAccessorElement - /// whose enclosing class inherits from the other (defaulting to the getter) - /// and construct a Field using that. + /// If [field] is not specified, picks the [FieldElement] from the + /// [PropertyAccessorElement] whose enclosing class inherits from the other + /// (defaulting to the getter) and constructs a [Field] using that. Field _createSingleField( PropertyAccessorElement? getterElement, PropertyAccessorElement? setterElement, diff --git a/lib/src/model/method.dart b/lib/src/model/method.dart index 1b5ce53119..0f1537d925 100644 --- a/lib/src/model/method.dart +++ b/lib/src/model/method.dart @@ -28,11 +28,10 @@ class Method extends ModelElement _calcTypeParameters(); } - Method.inherited(this.element, this._enclosingContainer, Library library, - PackageGraph packageGraph, - {ExecutableMember? originalMember}) - : _isInherited = true, - super(library, packageGraph, originalMember) { + Method.inherited( + this.element, this._enclosingContainer, super.library, super.packageGraph, + {ExecutableMember? super.originalMember}) + : _isInherited = true { _calcTypeParameters(); } diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index cc7e979f8a..0efd26f761 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -76,7 +76,8 @@ abstract class ModelElement final PackageGraph _packageGraph; - ModelElement(this._library, this._packageGraph, [this._originalMember]); + ModelElement(this._library, this._packageGraph, {Member? originalMember}) + : _originalMember = originalMember; /// Returns a [ModelElement] for an [Element], which can be a /// property-inducing element or not. diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart index cd39dfbce5..0ea5d982bc 100644 --- a/lib/src/model/package_graph.dart +++ b/lib/src/model/package_graph.dart @@ -785,14 +785,14 @@ class PackageGraph with CommentReferable, Nameable { preferredClass: preferredClass as InheritingContainer?); } else { if (lib != null) { - if (element is PropertyInducingElement) { - var getter = - element.getter != null ? getModelFor(element.getter!, lib) : null; - var setter = - element.setter != null ? getModelFor(element.setter!, lib) : null; + if (element case PropertyInducingElement(:var getter, :var setter)) { + var getterElement = + getter == null ? null : getModelFor(getter, lib) as Accessor; + var setterElement = + setter == null ? null : getModelFor(setter, lib) as Accessor; canonicalModelElement = getModelForPropertyInducingElement( element, lib, - getter: getter as Accessor?, setter: setter as Accessor?); + getter: getterElement, setter: setterElement); } else { canonicalModelElement = getModelFor(element, lib); } diff --git a/lib/src/model/parameter.dart b/lib/src/model/parameter.dart index d54d9773e7..c938b9b6ef 100644 --- a/lib/src/model/parameter.dart +++ b/lib/src/model/parameter.dart @@ -13,9 +13,8 @@ class Parameter extends ModelElement with HasNoPage { @override final ParameterElement element; - Parameter(this.element, Library library, PackageGraph packageGraph, - {ParameterMember? originalMember}) - : super(library, packageGraph, originalMember); + Parameter(this.element, super.library, super.packageGraph, + {ParameterMember? super.originalMember}); String? get defaultValue => hasDefaultValue ? element.defaultValueCode : null;