Skip to content

Commit 25e7e41

Browse files
fshcheglovCommit Queue
authored andcommitted
Remove all read-assign helper methods.
Separate each `_readXyzFragments` routine into two clear steps: 1. An`_readXyzFragments()` that only deserializes and returns `List<...FragmentImpl>`. 2. Call-site code that assigns the returned list to the appropriate field on the target fragment. - Single-responsibility: Helpers now do one thing (deserialise), making them easier to reason about and less prone to hidden side effects. - Predictable API: Every `_read*` method now behaves uniformly; callers always receive a value instead of sometimes mutating state. Change-Id: I80faee01334a6b2581e1da46d2360e6adf113133 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437521 Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent cc79dd7 commit 25e7e41

File tree

1 file changed

+43
-42
lines changed

1 file changed

+43
-42
lines changed

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

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,8 @@ class LibraryReader {
306306
});
307307
}
308308

309-
void _readClassFragments(LibraryFragmentImpl libraryFragment) {
310-
libraryFragment.classes = _reader.readTypedList(() {
309+
List<ClassFragmentImpl> _readClassFragments() {
310+
return _reader.readTypedList(() {
311311
return _readTemplateFragment(
312312
create: (name) {
313313
var fragment = ClassFragmentImpl(name2: name, nameOffset: -1);
@@ -317,12 +317,12 @@ class LibraryReader {
317317
_lazyRead((membersOffset) {
318318
fragment.deferReadMembers(() {
319319
_reader.runAtOffset(membersOffset, () {
320-
_readFieldFragments(fragment);
320+
fragment.fields = _readFieldFragments();
321321
fragment.getters = _readGetterFragments();
322322
fragment.setters = _readSetterFragments();
323-
_readMethodFragments(fragment);
323+
fragment.methods = _readMethodFragments();
324324
if (!fragment.isMixinApplication) {
325-
_readConstructorFragments(fragment);
325+
fragment.constructors = _readConstructorFragments();
326326
}
327327

328328
// TODO(scheglov): this is ugly
@@ -377,8 +377,8 @@ class LibraryReader {
377377
});
378378
}
379379

380-
void _readConstructorFragments(InterfaceFragmentImpl interfaceFragment) {
381-
interfaceFragment.constructors = _reader.readTypedList(() {
380+
List<ConstructorFragmentImpl> _readConstructorFragments() {
381+
return _reader.readTypedList(() {
382382
return _readTemplateFragment(
383383
create: (name) {
384384
var fragment = ConstructorFragmentImpl(name2: name!, nameOffset: -1);
@@ -513,20 +513,20 @@ class LibraryReader {
513513
});
514514
}
515515

516-
void _readEnumFragments(LibraryFragmentImpl libraryFragment) {
517-
libraryFragment.enums = _reader.readTypedList(() {
516+
List<EnumFragmentImpl> _readEnumFragments() {
517+
return _reader.readTypedList(() {
518518
return _readTemplateFragment(
519519
create: (name) {
520520
var fragment = EnumFragmentImpl(name2: name, nameOffset: -1);
521521
fragment.readModifiers(_reader);
522522
fragment.typeParameters = _readTypeParameters();
523523

524524
// TODO(scheglov): consider reading lazily
525-
_readFieldFragments(fragment);
525+
fragment.fields = _readFieldFragments();
526526
fragment.getters = _readGetterFragments();
527527
fragment.setters = _readSetterFragments();
528-
_readConstructorFragments(fragment);
529-
_readMethodFragments(fragment);
528+
fragment.constructors = _readConstructorFragments();
529+
fragment.methods = _readMethodFragments();
530530
return fragment;
531531
},
532532
readResolution: (fragment, reader) {
@@ -599,17 +599,17 @@ class LibraryReader {
599599
});
600600
}
601601

602-
void _readExtensionFragments(LibraryFragmentImpl libraryFragment) {
603-
libraryFragment.extensions = _reader.readTypedList(() {
602+
List<ExtensionFragmentImpl> _readExtensionFragments() {
603+
return _reader.readTypedList(() {
604604
return _readTemplateFragment(
605605
create: (name) {
606606
var fragment = ExtensionFragmentImpl(name2: name, nameOffset: -1);
607607
fragment.readModifiers(_reader);
608608
fragment.typeParameters = _readTypeParameters();
609-
_readFieldFragments(fragment);
609+
fragment.fields = _readFieldFragments();
610610
fragment.getters = _readGetterFragments();
611611
fragment.setters = _readSetterFragments();
612-
_readMethodFragments(fragment);
612+
fragment.methods = _readMethodFragments();
613613
return fragment;
614614
},
615615
readResolution: (fragment, reader) {
@@ -653,8 +653,8 @@ class LibraryReader {
653653
});
654654
}
655655

656-
void _readExtensionTypeFragments(LibraryFragmentImpl libraryFragment) {
657-
libraryFragment.extensionTypes = _reader.readTypedList(() {
656+
List<ExtensionTypeFragmentImpl> _readExtensionTypeFragments() {
657+
return _reader.readTypedList(() {
658658
return _readTemplateFragment(
659659
create: (name) {
660660
var fragment = ExtensionTypeFragmentImpl(name2: name, nameOffset: -1);
@@ -664,11 +664,11 @@ class LibraryReader {
664664
fragment.typeParameters = _readTypeParameters();
665665

666666
// TODO(scheglov): consider reading lazily
667-
_readFieldFragments(fragment);
667+
fragment.fields = _readFieldFragments();
668668
fragment.getters = _readGetterFragments();
669669
fragment.setters = _readSetterFragments();
670-
_readConstructorFragments(fragment);
671-
_readMethodFragments(fragment);
670+
fragment.constructors = _readConstructorFragments();
671+
fragment.methods = _readMethodFragments();
672672
return fragment;
673673
},
674674
readResolution: (fragment, reader) {
@@ -702,12 +702,11 @@ class LibraryReader {
702702
});
703703
}
704704

705-
void _readFieldFragments(InstanceFragmentImpl instanceFragment) {
706-
instanceFragment.fields = _reader.readTypedList(() {
705+
List<FieldFragmentImpl> _readFieldFragments() {
706+
return _reader.readTypedList(() {
707707
return _readTemplateFragment(
708708
create: (name) {
709709
var fragment = FieldFragmentImpl(name2: name, nameOffset: -1);
710-
711710
fragment.readModifiers(_reader);
712711
return fragment;
713712
},
@@ -931,8 +930,8 @@ class LibraryReader {
931930
});
932931
}
933932

934-
void _readMethodFragments(InstanceFragmentImpl instanceFragment) {
935-
instanceFragment.methods = _reader.readTypedList(() {
933+
List<MethodFragmentImpl> _readMethodFragments() {
934+
return _reader.readTypedList(() {
936935
return _readTemplateFragment(
937936
create: (name) {
938937
var fragment = MethodFragmentImpl(name2: name, nameOffset: -1);
@@ -994,8 +993,8 @@ class LibraryReader {
994993
});
995994
}
996995

997-
void _readMixinFragments(LibraryFragmentImpl libraryFragment) {
998-
libraryFragment.mixins = _reader.readTypedList(() {
996+
List<MixinFragmentImpl> _readMixinFragments() {
997+
return _reader.readTypedList(() {
999998
return _readTemplateFragment(
1000999
create: (name) {
10011000
var fragment = MixinFragmentImpl(name2: name, nameOffset: -1);
@@ -1004,11 +1003,11 @@ class LibraryReader {
10041003
fragment.typeParameters = _readTypeParameters();
10051004

10061005
// TODO(scheglov): consider reading lazily
1007-
_readFieldFragments(fragment);
1006+
fragment.fields = _readFieldFragments();
10081007
fragment.getters = _readGetterFragments();
10091008
fragment.setters = _readSetterFragments();
1010-
_readConstructorFragments(fragment);
1011-
_readMethodFragments(fragment);
1009+
fragment.constructors = _readConstructorFragments();
1010+
fragment.methods = _readMethodFragments();
10121011
return fragment;
10131012
},
10141013
readResolution: (fragment, reader) {
@@ -1238,8 +1237,8 @@ class LibraryReader {
12381237
});
12391238
}
12401239

1241-
void _readTopLevelFunctionFragments(LibraryFragmentImpl libraryFragment) {
1242-
libraryFragment.functions = _reader.readTypedList(() {
1240+
List<TopLevelFunctionFragmentImpl> _readTopLevelFunctionFragments() {
1241+
return _reader.readTypedList(() {
12431242
return _readTemplateFragment(
12441243
create: (name) {
12451244
var fragment = TopLevelFunctionFragmentImpl(
@@ -1325,8 +1324,10 @@ class LibraryReader {
13251324
});
13261325
}
13271326

1328-
void _readTypeAliasFragments(LibraryFragmentImpl unitElement) {
1329-
unitElement.typeAliases = _reader.readTypedList(() {
1327+
List<TypeAliasFragmentImpl> _readTypeAliasFragments(
1328+
LibraryFragmentImpl unitElement,
1329+
) {
1330+
return _reader.readTypedList(() {
13301331
return _readTemplateFragment(
13311332
create: (name) {
13321333
var fragment = TypeAliasFragmentImpl(name2: name, nameOffset: -1);
@@ -1429,13 +1430,13 @@ class LibraryReader {
14291430
return _readLibraryExport(containerUnit: unitElement);
14301431
});
14311432

1432-
_readClassFragments(unitElement);
1433-
_readEnumFragments(unitElement);
1434-
_readExtensionFragments(unitElement);
1435-
_readExtensionTypeFragments(unitElement);
1436-
_readTopLevelFunctionFragments(unitElement);
1437-
_readMixinFragments(unitElement);
1438-
_readTypeAliasFragments(unitElement);
1433+
unitElement.classes = _readClassFragments();
1434+
unitElement.enums = _readEnumFragments();
1435+
unitElement.extensions = _readExtensionFragments();
1436+
unitElement.extensionTypes = _readExtensionTypeFragments();
1437+
unitElement.functions = _readTopLevelFunctionFragments();
1438+
unitElement.mixins = _readMixinFragments();
1439+
unitElement.typeAliases = _readTypeAliasFragments(unitElement);
14391440

14401441
unitElement.topLevelVariables = _readTopLevelVariableFragments();
14411442
unitElement.getters = _readGetterFragments();

0 commit comments

Comments
 (0)