Skip to content

Commit 22417c8

Browse files
authored
Tidy up ContainerAccessor.isInherited and super parameters (#3812)
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.
1 parent 346638e commit 22417c8

File tree

6 files changed

+28
-31
lines changed

6 files changed

+28
-31
lines changed

lib/src/model/accessor.dart

+10-12
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class Accessor extends ModelElement {
2929
late GetterSetterCombo enclosingCombo;
3030

3131
Accessor(this.element, super.library, super.packageGraph,
32-
[ExecutableMember? super.originalMember]);
32+
{ExecutableMember? super.originalMember});
3333

3434
@override
3535
CharacterLocation? get characterLocation => element.isSynthetic
@@ -185,24 +185,22 @@ class ContainerAccessor extends Accessor with ContainerMember, Inheritable {
185185
}
186186

187187
late final Container _enclosingElement;
188-
bool _isInherited = false;
188+
189+
@override
190+
final bool isInherited;
189191

190192
@override
191193
bool get isCovariant => isSetter && parameters.first.isCovariant;
192194

193-
ContainerAccessor(super.element, super.library, super.packageGraph) {
195+
ContainerAccessor(super.element, super.library, super.packageGraph)
196+
: isInherited = false {
194197
_enclosingElement = super.enclosingElement as Container;
195198
}
196199

197-
ContainerAccessor.inherited(PropertyAccessorElement element, Library library,
198-
PackageGraph packageGraph, this._enclosingElement,
199-
{ExecutableMember? originalMember})
200-
: super(element, library, packageGraph, originalMember) {
201-
_isInherited = true;
202-
}
203-
204-
@override
205-
bool get isInherited => _isInherited;
200+
ContainerAccessor.inherited(
201+
super.element, super.library, super.packageGraph, this._enclosingElement,
202+
{super.originalMember})
203+
: isInherited = true;
206204

207205
@override
208206
Container get enclosingElement => _enclosingElement;

lib/src/model/inheriting_container.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -503,11 +503,11 @@ abstract class InheritingContainer extends Container {
503503
return typeChain;
504504
}();
505505

506-
/// Add a single Field to _fields.
506+
/// Creates a single Field.
507507
///
508-
/// If [field] is not specified, pick the FieldElement from the PropertyAccessorElement
509-
/// whose enclosing class inherits from the other (defaulting to the getter)
510-
/// and construct a Field using that.
508+
/// If [field] is not specified, picks the [FieldElement] from the
509+
/// [PropertyAccessorElement] whose enclosing class inherits from the other
510+
/// (defaulting to the getter) and constructs a [Field] using that.
511511
Field _createSingleField(
512512
PropertyAccessorElement? getterElement,
513513
PropertyAccessorElement? setterElement,

lib/src/model/method.dart

+4-5
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@ class Method extends ModelElement
2828
_calcTypeParameters();
2929
}
3030

31-
Method.inherited(this.element, this._enclosingContainer, Library library,
32-
PackageGraph packageGraph,
33-
{ExecutableMember? originalMember})
34-
: _isInherited = true,
35-
super(library, packageGraph, originalMember) {
31+
Method.inherited(
32+
this.element, this._enclosingContainer, super.library, super.packageGraph,
33+
{ExecutableMember? super.originalMember})
34+
: _isInherited = true {
3635
_calcTypeParameters();
3736
}
3837

lib/src/model/model_element.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ abstract class ModelElement
7676

7777
final PackageGraph _packageGraph;
7878

79-
ModelElement(this._library, this._packageGraph, [this._originalMember]);
79+
ModelElement(this._library, this._packageGraph, {Member? originalMember})
80+
: _originalMember = originalMember;
8081

8182
/// Returns a [ModelElement] for an [Element], which can be a
8283
/// property-inducing element or not.

lib/src/model/package_graph.dart

+6-6
Original file line numberDiff line numberDiff line change
@@ -785,14 +785,14 @@ class PackageGraph with CommentReferable, Nameable {
785785
preferredClass: preferredClass as InheritingContainer?);
786786
} else {
787787
if (lib != null) {
788-
if (element is PropertyInducingElement) {
789-
var getter =
790-
element.getter != null ? getModelFor(element.getter!, lib) : null;
791-
var setter =
792-
element.setter != null ? getModelFor(element.setter!, lib) : null;
788+
if (element case PropertyInducingElement(:var getter, :var setter)) {
789+
var getterElement =
790+
getter == null ? null : getModelFor(getter, lib) as Accessor;
791+
var setterElement =
792+
setter == null ? null : getModelFor(setter, lib) as Accessor;
793793
canonicalModelElement = getModelForPropertyInducingElement(
794794
element, lib,
795-
getter: getter as Accessor?, setter: setter as Accessor?);
795+
getter: getterElement, setter: setterElement);
796796
} else {
797797
canonicalModelElement = getModelFor(element, lib);
798798
}

lib/src/model/parameter.dart

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ class Parameter extends ModelElement with HasNoPage {
1313
@override
1414
final ParameterElement element;
1515

16-
Parameter(this.element, Library library, PackageGraph packageGraph,
17-
{ParameterMember? originalMember})
18-
: super(library, packageGraph, originalMember);
16+
Parameter(this.element, super.library, super.packageGraph,
17+
{ParameterMember? super.originalMember});
1918

2019
String? get defaultValue => hasDefaultValue ? element.defaultValueCode : null;
2120

0 commit comments

Comments
 (0)