Skip to content

Commit fcf91c7

Browse files
committed
Elements. Require VariableElementImpl for VariableMember.
Change-Id: I956e892b5e0f6adc512b650a721109950704bafc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/417122 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 0e9cd07 commit fcf91c7

File tree

3 files changed

+38
-25
lines changed

3 files changed

+38
-25
lines changed

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4350,7 +4350,7 @@ abstract class FieldElementOrMember
43504350
class FieldFormalParameterElementImpl extends ParameterElementImpl
43514351
implements FieldFormalParameterElement, FieldFormalParameterFragment {
43524352
@override
4353-
FieldElementOrMember? field;
4353+
FieldElementImpl? field;
43544354

43554355
/// Initialize a newly created parameter element to have the given [name] and
43564356
/// [nameOffset].

pkg/analyzer/lib/src/dart/element/member.dart

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ abstract class ExecutableMember extends Member
445445
class FieldFormalParameterMember extends ParameterMember
446446
implements FieldFormalParameterElement {
447447
factory FieldFormalParameterMember({
448-
required FieldFormalParameterElement declaration,
448+
required FieldFormalParameterElementImpl declaration,
449449
required MapSubstitution substitution,
450450
}) {
451451
var freshTypeParameters = _SubstitutedTypeParameters(
@@ -460,14 +460,19 @@ class FieldFormalParameterMember extends ParameterMember
460460
}
461461

462462
FieldFormalParameterMember._({
463-
required FieldFormalParameterElement super.declaration,
463+
required FieldFormalParameterElementImpl super.declaration,
464464
required super.substitution,
465465
required super.typeParameters,
466466
}) : super._();
467467

468+
@override
469+
FieldFormalParameterElementImpl get declaration {
470+
return _declaration as FieldFormalParameterElementImpl;
471+
}
472+
468473
@override
469474
FieldElementOrMember? get field {
470-
var field = (declaration as FieldFormalParameterElement).field;
475+
var field = declaration.field;
471476
if (field == null) {
472477
return null;
473478
}
@@ -497,7 +502,7 @@ class FieldMember extends VariableMember
497502
/// Initialize a newly created element to represent a field, based on the
498503
/// [declaration], with applied [substitution].
499504
FieldMember({
500-
required FieldElement super.declaration,
505+
required FieldElementImpl super.declaration,
501506
required super.substitution,
502507
});
503508

@@ -539,7 +544,7 @@ class FieldMember extends VariableMember
539544
}
540545

541546
@override
542-
PropertyAccessorElement? get getter {
547+
PropertyAccessorElementOrMember? get getter {
543548
var baseGetter = declaration.getter;
544549
if (baseGetter == null) {
545550
return null;
@@ -603,7 +608,7 @@ class FieldMember extends VariableMember
603608
Element2 get nonSynthetic2 => _element2.nonSynthetic2;
604609

605610
@override
606-
PropertyAccessorElement? get setter {
611+
PropertyAccessorElementOrMember? get setter {
607612
var baseSetter = declaration.setter;
608613
if (baseSetter == null) {
609614
return null;
@@ -667,24 +672,26 @@ class FieldMember extends VariableMember
667672
@override
668673
void visitChildren2<T>(ElementVisitor2<T> visitor) {}
669674

670-
/// If the given [field]'s type is different when any type parameters from the
675+
/// If the given [element]'s type is different when any type parameters from the
671676
/// defining type's declaration are replaced with the actual type arguments
672677
/// from the [definingType], create a field member representing the given
673678
/// field. Return the member that was created, or the base field if no member
674679
/// was created.
675680
static FieldElementOrMember from(
676-
FieldElementOrMember field, InterfaceType definingType) {
681+
FieldElementImpl element,
682+
InterfaceType definingType,
683+
) {
677684
if (definingType.typeArguments.isEmpty) {
678-
return field;
685+
return element;
679686
}
680687
return FieldMember(
681-
declaration: field,
688+
declaration: element,
682689
substitution: Substitution.fromInterfaceType(definingType),
683690
);
684691
}
685692

686-
static FieldElement from2(
687-
FieldElement element,
693+
static FieldElementOrMember from2(
694+
FieldElementImpl element,
688695
MapSubstitution substitution,
689696
) {
690697
if (substitution.map.isEmpty) {
@@ -1112,7 +1119,7 @@ class ParameterMember extends VariableMember
11121119
final List<TypeParameterElement> typeParameters;
11131120

11141121
factory ParameterMember({
1115-
required ParameterElement declaration,
1122+
required ParameterElementImpl declaration,
11161123
required MapSubstitution substitution,
11171124
}) {
11181125
var freshTypeParameters = _SubstitutedTypeParameters(
@@ -1129,7 +1136,7 @@ class ParameterMember extends VariableMember
11291136
/// Initialize a newly created element to represent a parameter, based on the
11301137
/// [declaration], with applied [substitution].
11311138
ParameterMember._({
1132-
required ParameterElement super.declaration,
1139+
required ParameterElementImpl super.declaration,
11331140
required super.substitution,
11341141
required this.typeParameters,
11351142
});
@@ -1282,24 +1289,27 @@ class ParameterMember extends VariableMember
12821289

12831290
static ParameterElementMixin from(
12841291
ParameterElementMixin element, MapSubstitution substitution) {
1292+
ParameterElementImpl declaration;
12851293
var combined = substitution;
12861294
if (element is ParameterMember) {
12871295
var member = element;
1288-
element = member.declaration;
1296+
declaration = member.declaration;
12891297

12901298
var map = <TypeParameterElement2, DartType>{
12911299
for (var MapEntry(:key, :value) in member.substitution.map.entries)
12921300
key: substitution.substituteType(value),
12931301
};
12941302
combined = Substitution.fromMap2(map);
1303+
} else {
1304+
declaration = element as ParameterElementImpl;
12951305
}
12961306

12971307
if (combined.map.isEmpty) {
12981308
return element;
12991309
}
13001310

13011311
return ParameterMember(
1302-
declaration: element,
1312+
declaration: declaration,
13031313
substitution: combined,
13041314
);
13051315
}
@@ -1518,7 +1528,7 @@ class SetterMember extends PropertyAccessorMember
15181528
class SuperFormalParameterMember extends ParameterMember
15191529
implements SuperFormalParameterElement {
15201530
factory SuperFormalParameterMember({
1521-
required SuperFormalParameterElement declaration,
1531+
required SuperFormalParameterElementImpl declaration,
15221532
required MapSubstitution substitution,
15231533
}) {
15241534
var freshTypeParameters = _SubstitutedTypeParameters(
@@ -1533,11 +1543,16 @@ class SuperFormalParameterMember extends ParameterMember
15331543
}
15341544

15351545
SuperFormalParameterMember._({
1536-
required SuperFormalParameterElement super.declaration,
1546+
required SuperFormalParameterElementImpl super.declaration,
15371547
required super.substitution,
15381548
required super.typeParameters,
15391549
}) : super._();
15401550

1551+
@override
1552+
SuperFormalParameterElementImpl get declaration {
1553+
return _declaration as SuperFormalParameterElementImpl;
1554+
}
1555+
15411556
@override
15421557
bool get hasDefaultValue => declaration.hasDefaultValue;
15431558

@@ -1546,9 +1561,7 @@ class SuperFormalParameterMember extends ParameterMember
15461561

15471562
@override
15481563
ParameterElement? get superConstructorParameter {
1549-
var superConstructorParameter =
1550-
(declaration as SuperFormalParameterElementImpl)
1551-
.superConstructorParameter;
1564+
var superConstructorParameter = declaration.superConstructorParameter;
15521565
if (superConstructorParameter == null) {
15531566
return null;
15541567
}
@@ -1574,7 +1587,7 @@ abstract class VariableMember extends Member
15741587
/// Initialize a newly created element to represent a variable, based on the
15751588
/// [declaration], with applied [substitution].
15761589
VariableMember({
1577-
required VariableElement super.declaration,
1590+
required VariableElementImpl super.declaration,
15781591
required super.substitution,
15791592
});
15801593

pkg/analyzer/lib/src/summary2/bundle_reader.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ abstract class ElementLinkedData<E extends ElementImpl> {
326326
}
327327
}
328328
if (parameter is FieldFormalParameterElementImpl) {
329-
parameter.field = reader.readElement() as FieldElementOrMember?;
329+
parameter.field = reader.readElement() as FieldElementImpl?;
330330
}
331331
}
332332
}
@@ -2011,7 +2011,7 @@ class ResolutionReader {
20112011
if (element is ExecutableElement) {
20122012
element = ExecutableMember.from2(element, substitution);
20132013
} else {
2014-
element as FieldElement;
2014+
element as FieldElementImpl;
20152015
element = FieldMember.from2(element, substitution);
20162016
}
20172017
}

0 commit comments

Comments
 (0)