Skip to content

Commit 073446d

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Store FieldFormalParameterElementImpl.field directly.
Change-Id: Icdbb58fedaa2b1ba5314368474a683ebf513ff45 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449075 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent ea8da90 commit 073446d

File tree

5 files changed

+18
-34
lines changed

5 files changed

+18
-34
lines changed

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2970,13 +2970,10 @@ class FieldElementImpl extends PropertyInducingElementImpl
29702970

29712971
class FieldFormalParameterElementImpl extends FormalParameterElementImpl
29722972
implements FieldFormalParameterElement {
2973-
FieldFormalParameterElementImpl(super.firstFragment);
2974-
29752973
@override
2976-
FieldElementImpl? get field => switch (_firstFragment) {
2977-
FieldFormalParameterFragmentImpl(:FieldFragmentImpl field) => field.element,
2978-
_ => null,
2979-
};
2974+
FieldElementImpl? field;
2975+
2976+
FieldFormalParameterElementImpl(super.firstFragment);
29802977

29812978
@Deprecated('Use field instead')
29822979
@override
@@ -3004,11 +3001,6 @@ class FieldFormalParameterElementImpl extends FormalParameterElementImpl
30043001

30053002
class FieldFormalParameterFragmentImpl extends FormalParameterFragmentImpl
30063003
implements FieldFormalParameterFragment {
3007-
/// The field element associated with this field formal parameter, or `null`
3008-
/// if the parameter references a field that doesn't exist.
3009-
// TODO(scheglov): move to element
3010-
FieldFragmentImpl? field;
3011-
30123004
/// Initialize a newly created parameter element to have the given [name] and
30133005
/// [nameOffset].
30143006
FieldFormalParameterFragmentImpl({

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -742,10 +742,7 @@ class LibraryReader {
742742
parameter.element.type = type;
743743
parameter.constantInitializer = reader.readOptionalExpression();
744744
if (parameter is FieldFormalParameterFragmentImpl) {
745-
// TODO(scheglov): use element
746-
parameter.field =
747-
(reader.readElement() as FieldElementImpl?)?.firstFragment;
748-
// parameter.field = reader.readFragmentOrMember() as FieldFragmentImpl?;
745+
parameter.element.field = reader.readElement() as FieldElementImpl?;
749746
}
750747
}
751748
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,8 +645,7 @@ class BundleWriter {
645645

646646
if (element is FieldFormalParameterFragmentImpl) {
647647
// TODO(scheglov): formal parameter types? Anything else?
648-
// _resolutionSink.writeFragmentOrMember(element.field);
649-
_resolutionSink.writeElement(element.field?.element);
648+
_resolutionSink.writeElement(element.element.field);
650649
}
651650
});
652651
}

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1826,14 +1826,11 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
18261826

18271827
_addChildFragment(fieldFragment);
18281828

1829-
var formalParameterElement =
1830-
FieldFormalParameterFragmentImpl(
1831-
name: _getFragmentName(fieldNameToken),
1832-
nameOffset: null,
1833-
parameterKind: ParameterKind.REQUIRED,
1834-
)
1835-
..field = fieldFragment
1836-
..hasImplicitType = true;
1829+
var formalParameterFragment = FieldFormalParameterFragmentImpl(
1830+
name: _getFragmentName(fieldNameToken),
1831+
nameOffset: null,
1832+
parameterKind: ParameterKind.REQUIRED,
1833+
)..hasImplicitType = true;
18371834

18381835
{
18391836
var constructorFragment =
@@ -1842,7 +1839,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
18421839
)
18431840
..isAugmentation = extensionNode.augmentKeyword != null
18441841
..isConst = extensionNode.constKeyword != null
1845-
..formalParameters = [formalParameterElement];
1842+
..formalParameters = [formalParameterFragment];
18461843
constructorFragment.typeName = extensionFragment.name;
18471844

18481845
representation.constructorFragment = constructorFragment;

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -323,21 +323,20 @@ class LibraryBuilder {
323323
}
324324

325325
void resolveConstructorFieldFormals() {
326-
for (var interfaceFragment in element.topLevelElements) {
327-
if (interfaceFragment is! InterfaceFragmentImpl) {
326+
for (var interfaceElement in element.children) {
327+
if (interfaceElement is! InterfaceElementImpl) {
328328
continue;
329329
}
330330

331-
if (interfaceFragment is ClassFragmentImpl &&
332-
interfaceFragment.isMixinApplication) {
331+
if (interfaceElement is ClassElementImpl &&
332+
interfaceElement.isMixinApplication) {
333333
continue;
334334
}
335335

336-
var element = interfaceFragment.element;
337-
for (var constructor in interfaceFragment.constructors) {
336+
for (var constructor in interfaceElement.constructors) {
338337
for (var parameter in constructor.formalParameters) {
339-
if (parameter is FieldFormalParameterFragmentImpl) {
340-
parameter.field = element.getField(parameter.name ?? '')?.asElement;
338+
if (parameter is FieldFormalParameterElementImpl) {
339+
parameter.field = interfaceElement.getField(parameter.name ?? '');
341340
}
342341
}
343342
}

0 commit comments

Comments
 (0)