Skip to content

Tidy up ContainerAccessor.isInherited and super parameters #3812

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions lib/src/model/accessor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
8 changes: 4 additions & 4 deletions lib/src/model/inheriting_container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
9 changes: 4 additions & 5 deletions lib/src/model/method.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down
3 changes: 2 additions & 1 deletion lib/src/model/model_element.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
12 changes: 6 additions & 6 deletions lib/src/model/package_graph.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
5 changes: 2 additions & 3 deletions lib/src/model/parameter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down