Skip to content

Commit 877e8de

Browse files
scheglovCommit Queue
authored andcommitted
Elements. AugmentedInstanceElement remove fields, accessors.
Change-Id: Icaa3d0dcdd6aeea8c180e21e407091639c791020 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/414186 Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent bcb5094 commit 877e8de

File tree

18 files changed

+52
-266
lines changed

18 files changed

+52
-266
lines changed

pkg/analyzer/api.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,14 +3007,9 @@ package:analyzer/dart/element/element.dart:
30073007
firstFragment (getter: ExtensionTypeElement)
30083008
AugmentedInstanceElement (class extends Object):
30093009
new (constructor: AugmentedInstanceElement Function())
3010-
accessors (getter: List<PropertyAccessorElement>)
3011-
fields (getter: List<FieldElement>)
30123010
firstFragment (getter: InstanceElement)
30133011
metadata (getter: List<ElementAnnotation>)
30143012
thisType (getter: DartType)
3015-
getField (method: FieldElement? Function(String))
3016-
getGetter (method: PropertyAccessorElement? Function(String))
3017-
getSetter (method: PropertyAccessorElement? Function(String))
30183013
AugmentedInterfaceElement (class extends Object implements AugmentedInstanceElement):
30193014
new (constructor: AugmentedInterfaceElement Function())
30203015
firstFragment (getter: InterfaceElement)

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

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,6 @@ abstract class AugmentedExtensionTypeElement
9999
///
100100
/// Clients may not extend, implement or mix-in this class.
101101
abstract class AugmentedInstanceElement {
102-
/// The accessors (getters and setters) declared in this element.
103-
///
104-
/// [PropertyAccessorElement]s replace corresponding elements,
105-
/// other [PropertyAccessorElement]s are appended.
106-
List<PropertyAccessorElement> get accessors;
107-
108-
/// The fields declared in this element.
109-
///
110-
/// `FieldAugmentationElement`s replace corresponding elements, other
111-
/// [FieldElement]s are appended.
112-
List<FieldElement> get fields;
113-
114102
/// The declaration (not augmentation) that owns this result.
115103
InstanceElement get firstFragment;
116104

@@ -122,15 +110,6 @@ abstract class AugmentedInstanceElement {
122110

123111
/// The type of `this` expression.
124112
DartType get thisType;
125-
126-
/// Returns the field from [fields] that has the given [name].
127-
FieldElement? getField(String name);
128-
129-
/// Returns the getter from [accessors] that has the given [name].
130-
PropertyAccessorElement? getGetter(String name);
131-
132-
/// Returns the setter from [accessors] that has the given [name].
133-
PropertyAccessorElement? getSetter(String name);
134113
}
135114

136115
/// The result of applying augmentations to a [InterfaceElement].

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ import 'package:meta/meta.dart';
100100
// TODO(scheglov): Clean up the list of implicitly analyzed files.
101101
class AnalysisDriver {
102102
/// The version of data format, should be incremented on every format change.
103-
static const int DATA_VERSION = 441;
103+
static const int DATA_VERSION = 442;
104104

105105
/// The number of exception contexts allowed to write. Once this field is
106106
/// zero, we stop writing any new exception contexts in this process.

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

Lines changed: 18 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ class ClassElementImpl2 extends InterfaceElementImpl2
696696

697697
// With 2+ static const fields with the type of this class.
698698
var numberOfElements = 0;
699-
for (var field in fields) {
699+
for (var field in fields2) {
700700
if (field.isStatic && field.isConst && field.type == thisType) {
701701
numberOfElements++;
702702
}
@@ -3724,12 +3724,13 @@ class EnumElementImpl2 extends InterfaceElementImpl2
37243724

37253725
@override
37263726
List<FieldElementOrMember> get constants {
3727-
return fields.where((field) => field.isEnumConstant).toList();
3727+
return constants2.map((e) => e.asElement).toList();
37283728
}
37293729

37303730
@override
3731-
List<FieldElement2OrMember> get constants2 =>
3732-
constants.map((e) => e.asElement2).toList();
3731+
List<FieldElementImpl2> get constants2 {
3732+
return fields2.where((field) => field.isEnumConstant).toList();
3733+
}
37333734

37343735
@override
37353736
List<EnumElementImpl> get fragments {
@@ -4108,7 +4109,7 @@ class ExtensionElementImpl extends InstanceElementImpl
41084109

41094110
@override
41104111
PropertyAccessorElementOrMember? getGetter(String getterName) {
4111-
for (var accessor in element.accessors) {
4112+
for (var accessor in accessors) {
41124113
if (accessor.isGetter && accessor.name == getterName) {
41134114
return accessor;
41144115
}
@@ -4128,10 +4129,7 @@ class ExtensionElementImpl extends InstanceElementImpl
41284129

41294130
@override
41304131
PropertyAccessorElement? getSetter(String setterName) {
4131-
return InterfaceElementImpl.getSetterFromAccessors(
4132-
setterName,
4133-
element.accessors,
4134-
);
4132+
return InterfaceElementImpl.getSetterFromAccessors(setterName, accessors);
41354133
}
41364134
}
41374135

@@ -5838,12 +5836,6 @@ abstract class InstanceElementImpl2 extends ElementImpl2
58385836
AugmentedInstanceElement,
58395837
InstanceElement2,
58405838
TypeParameterizedElement2 {
5841-
@override
5842-
List<FieldElementOrMember> fields = [];
5843-
5844-
@override
5845-
List<PropertyAccessorElementOrMember> accessors = [];
5846-
58475839
@override
58485840
InstanceElement2 get baseElement => this;
58495841

@@ -5867,20 +5859,22 @@ abstract class InstanceElementImpl2 extends ElementImpl2
58675859
LibraryElement2 get enclosingElement2 => firstFragment.library;
58685860

58695861
@override
5870-
List<FieldElement2> get fields2 {
5862+
List<FieldElementImpl2> get fields2 {
58715863
_readMembers();
5872-
return fields.map((e) => e.asElement2 as FieldElement2?).nonNulls.toList();
5864+
return firstFragment.fields
5865+
.map((e) => e.asElement2 as FieldElementImpl2)
5866+
.toList();
58735867
}
58745868

58755869
@override
58765870
InstanceElementImpl get firstFragment;
58775871

58785872
@override
5879-
List<GetterElement2OrMember> get getters2 {
5873+
List<GetterElementImpl> get getters2 {
58805874
_readMembers();
5881-
return accessors
5875+
return firstFragment.accessors
58825876
.where((e) => e.isGetter)
5883-
.map((e) => e.asElement2 as GetterElement2OrMember)
5877+
.map((e) => e.asElement2 as GetterElementImpl)
58845878
.nonNulls
58855879
.toList();
58865880
}
@@ -5928,11 +5922,11 @@ abstract class InstanceElementImpl2 extends ElementImpl2
59285922
AnalysisSession? get session => firstFragment.session;
59295923

59305924
@override
5931-
List<SetterElement> get setters2 {
5925+
List<SetterElementImpl> get setters2 {
59325926
_readMembers();
5933-
return accessors
5927+
return firstFragment.accessors
59345928
.where((e) => e.isSetter)
5935-
.map((e) => e.asElement2 as SetterElement?)
5929+
.map((e) => e.asElement2 as SetterElementImpl?)
59365930
.nonNulls
59375931
.toList();
59385932
}
@@ -5948,34 +5942,10 @@ abstract class InstanceElementImpl2 extends ElementImpl2
59485942
multiline: multiline, preferTypeAlias: preferTypeAlias);
59495943

59505944
@override
5951-
FieldElementOrMember? getField(String name) {
5952-
var length = fields.length;
5953-
for (var i = 0; i < length; i++) {
5954-
var field = fields[i];
5955-
if (field.name == name) {
5956-
return field;
5957-
}
5958-
}
5959-
return null;
5960-
}
5961-
5962-
@override
5963-
FieldElement2? getField2(String name) {
5945+
FieldElementImpl2? getField2(String name) {
59645946
return fields2.firstWhereOrNull((e) => e.name3 == name);
59655947
}
59665948

5967-
@override
5968-
PropertyAccessorElement? getGetter(String name) {
5969-
var length = accessors.length;
5970-
for (var i = 0; i < length; i++) {
5971-
var accessor = accessors[i];
5972-
if (accessor.isGetter && accessor.name == name) {
5973-
return accessor;
5974-
}
5975-
}
5976-
return null;
5977-
}
5978-
59795949
@override
59805950
GetterElement? getGetter2(String name) {
59815951
return getters2.firstWhereOrNull((e) => e.name3 == name);
@@ -5986,15 +5956,6 @@ abstract class InstanceElementImpl2 extends ElementImpl2
59865956
return methods2.firstWhereOrNull((e) => e.lookupName == name);
59875957
}
59885958

5989-
@override
5990-
PropertyAccessorElement? getSetter(String name) {
5991-
if (!name.endsWith('=')) {
5992-
name += '=';
5993-
}
5994-
return accessors.firstWhereOrNull(
5995-
(accessor) => accessor.isSetter && accessor.name == name);
5996-
}
5997-
59985959
@override
59995960
SetterElement? getSetter2(String name) {
60005961
return setters2.firstWhereOrNull((e) => e.name3 == name);

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

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,8 @@ class InheritanceManager3 {
474474
}
475475

476476
element.methods2.map((e) => e.asElement).forEach(addMember);
477-
element.accessors.forEach(addMember);
477+
element.getters2.map((e) => e.asElement).forEach(addMember);
478+
element.setters2.map((e) => e.asElement).forEach(addMember);
478479
}
479480

480481
void _addMixinMembers({
@@ -1198,25 +1199,20 @@ class InheritanceManager3 {
11981199
var declared = <Name, ExecutableElementOrMember>{};
11991200
var libraryUri = fragment.librarySource.uri;
12001201

1201-
var methods = element.methods2;
1202-
for (var i = 0; i < methods.length; i++) {
1203-
var method = methods[i];
1204-
if (!method.isStatic) {
1205-
var name = Name.forElement(method);
1206-
if (name != null) {
1207-
declared[name] = method.asElement;
1208-
}
1202+
void addMember(ExecutableElementOrMember member) {
1203+
if (!member.isStatic) {
1204+
var name = Name(libraryUri, member.name);
1205+
declared[name] = member;
12091206
}
12101207
}
12111208

1212-
var accessors = element.accessors;
1213-
for (var i = 0; i < accessors.length; i++) {
1214-
var accessor = accessors[i];
1215-
if (!accessor.isStatic) {
1216-
var name = Name(libraryUri, accessor.name);
1217-
declared[name] = accessor;
1218-
}
1219-
}
1209+
element.methods2.map((e) => e.asElement).forEach(addMember);
1210+
element.getters2
1211+
.map((e) => e.asElement as PropertyAccessorElementImpl)
1212+
.forEach(addMember);
1213+
element.setters2
1214+
.map((e) => e.asElement as PropertyAccessorElementImpl)
1215+
.forEach(addMember);
12201216

12211217
return declared;
12221218
}

pkg/analyzer/lib/src/generated/resolver.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2336,16 +2336,16 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
23362336
// to be visited in the context of the constructor field initializer node.
23372337
//
23382338
var fieldName = node.fieldName;
2339-
var fieldElement = enclosingClass!.getField(fieldName.name);
2340-
fieldName.element = fieldElement.asElement2;
2339+
var fieldElement = enclosingClass!.getField2(fieldName.name);
2340+
fieldName.element = fieldElement;
23412341
var fieldType = fieldElement?.type ?? UnknownInferredType.instance;
23422342
var expression = node.expression;
23432343
analyzeExpression(expression, SharedTypeSchemaView(fieldType));
23442344
expression = popRewrite()!;
23452345
var whyNotPromoted = flowAnalysis.flow?.whyNotPromoted(expression);
23462346
if (fieldElement != null) {
23472347
var enclosingConstructor = enclosingFunction as ConstructorElementImpl2;
2348-
checkForFieldInitializerNotAssignable(node, fieldElement.asElement2,
2348+
checkForFieldInitializerNotAssignable(node, fieldElement,
23492349
isConstConstructor: enclosingConstructor.isConst,
23502350
whyNotPromoted: whyNotPromoted);
23512351
}

0 commit comments

Comments
 (0)