Skip to content

Commit 7988665

Browse files
fshcheglovCommit Queue
authored andcommitted
Use sink.writeList consistently in BundleWriter
Remove the redundant _writeList method from BundleWriter and update all call sites to use the existing _sink.writeList() method directly. This change also refactors several manual list serialization loops in ResolutionSink to use the writeList helper. The result is less code duplication and more consistent, maintainable summary serialization logic. Change-Id: I1e3d7f9ed96d56bc393c30669e432a61558a254f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/442003 Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent ab44b20 commit 7988665

File tree

1 file changed

+57
-85
lines changed

1 file changed

+57
-85
lines changed

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

Lines changed: 57 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,12 @@ class BundleWriter {
182182
_resolutionSink._writeTypeList(fragment.interfaces);
183183

184184
_writeForLazyRead(() {
185-
_writeList(fragment.fields, _writeFieldFragment);
186-
_writeList(fragment.getters, _writeGetterFragment);
187-
_writeList(fragment.setters, _writeSetterFragment);
188-
_writeList(fragment.methods, _writeMethodFragment);
185+
_sink.writeList(fragment.fields, _writeFieldFragment);
186+
_sink.writeList(fragment.getters, _writeGetterFragment);
187+
_sink.writeList(fragment.setters, _writeSetterFragment);
188+
_sink.writeList(fragment.methods, _writeMethodFragment);
189189
if (!fragment.isMixinApplication) {
190-
_writeList(fragment.constructors, _writeConstructorFragment);
190+
_sink.writeList(fragment.constructors, _writeConstructorFragment);
191191
}
192192
});
193193
});
@@ -217,7 +217,10 @@ class BundleWriter {
217217
_writeTypeParameters(fragment.typeParameters, () {
218218
_sink.writeList(fragment.formalParameters, _writeParameterElement);
219219
_resolutionSink._writeMetadata(fragment.metadata);
220-
_resolutionSink._writeNodeList(fragment.constantInitializers);
220+
_resolutionSink.writeList(
221+
fragment.constantInitializers,
222+
_resolutionSink._writeNode,
223+
);
221224
});
222225
});
223226
}
@@ -295,17 +298,17 @@ class BundleWriter {
295298
_resolutionSink._writeTypeList(fragment.interfaces);
296299

297300
// TODO(scheglov): consider reading lazily
298-
_writeList(fragment.fields, _writeFieldFragment);
299-
_writeList(fragment.getters, _writeGetterFragment);
300-
_writeList(fragment.setters, _writeSetterFragment);
301-
_writeList(fragment.constructors, _writeConstructorFragment);
302-
_writeList(fragment.methods, _writeMethodFragment);
301+
_sink.writeList(fragment.fields, _writeFieldFragment);
302+
_sink.writeList(fragment.getters, _writeGetterFragment);
303+
_sink.writeList(fragment.setters, _writeSetterFragment);
304+
_sink.writeList(fragment.constructors, _writeConstructorFragment);
305+
_sink.writeList(fragment.methods, _writeMethodFragment);
303306
});
304307
});
305308
}
306309

307310
void _writeExportedReferences(List<ExportedReference> elements) {
308-
_writeList<ExportedReference>(elements, (exported) {
311+
_sink.writeList(elements, (exported) {
309312
var index = _references._indexOfReference(exported.reference);
310313
if (exported is ExportedReferenceDeclared) {
311314
_sink.writeByte(0);
@@ -353,10 +356,10 @@ class BundleWriter {
353356
_writeTemplateFragment(fragment, () {
354357
_writeTypeParameters(fragment.typeParameters, () {
355358
_resolutionSink._writeMetadata(fragment.metadata);
356-
_writeList(fragment.fields, _writeFieldFragment);
357-
_writeList(fragment.getters, _writeGetterFragment);
358-
_writeList(fragment.setters, _writeSetterFragment);
359-
_writeList(fragment.methods, _writeMethodFragment);
359+
_sink.writeList(fragment.fields, _writeFieldFragment);
360+
_sink.writeList(fragment.getters, _writeGetterFragment);
361+
_sink.writeList(fragment.setters, _writeSetterFragment);
362+
_sink.writeList(fragment.methods, _writeMethodFragment);
360363
});
361364
});
362365
}
@@ -395,11 +398,11 @@ class BundleWriter {
395398
_resolutionSink.writeType(fragment.typeErasure);
396399

397400
// TODO(scheglov): consider reading lazily
398-
_writeList(fragment.fields, _writeFieldFragment);
399-
_writeList(fragment.getters, _writeGetterFragment);
400-
_writeList(fragment.setters, _writeSetterFragment);
401-
_writeList(fragment.constructors, _writeConstructorFragment);
402-
_writeList(fragment.methods, _writeMethodFragment);
401+
_sink.writeList(fragment.fields, _writeFieldFragment);
402+
_sink.writeList(fragment.getters, _writeGetterFragment);
403+
_sink.writeList(fragment.setters, _writeSetterFragment);
404+
_sink.writeList(fragment.constructors, _writeConstructorFragment);
405+
_sink.writeList(fragment.methods, _writeMethodFragment);
403406
});
404407
});
405408
}
@@ -530,13 +533,6 @@ class BundleWriter {
530533
});
531534
}
532535

533-
void _writeList<T>(List<T> elements, void Function(T) writeElement) {
534-
_sink.writeUInt30(elements.length);
535-
for (var element in elements) {
536-
writeElement(element);
537-
}
538-
}
539-
540536
void _writeLoadLibraryFunctionReferences(LibraryElementImpl library) {
541537
var element = library.loadLibraryFunction;
542538
_writeReference(element.reference);
@@ -603,11 +599,11 @@ class BundleWriter {
603599
_resolutionSink._writeTypeList(fragment.interfaces);
604600

605601
// TODO(scheglov): consider reading lazily
606-
_writeList(fragment.fields, _writeFieldFragment);
607-
_writeList(fragment.getters, _writeGetterFragment);
608-
_writeList(fragment.setters, _writeSetterFragment);
609-
_writeList(fragment.constructors, _writeConstructorFragment);
610-
_writeList(fragment.methods, _writeMethodFragment);
602+
_sink.writeList(fragment.fields, _writeFieldFragment);
603+
_sink.writeList(fragment.getters, _writeGetterFragment);
604+
_sink.writeList(fragment.setters, _writeSetterFragment);
605+
_sink.writeList(fragment.constructors, _writeConstructorFragment);
606+
_sink.writeList(fragment.methods, _writeMethodFragment);
611607
});
612608
});
613609
}
@@ -643,7 +639,7 @@ class BundleWriter {
643639
_resolutionSink._writeMetadata(element.metadata);
644640

645641
_writeTypeParameters(element.typeParameters, () {
646-
_writeList(element.parameters, _writeParameterElement);
642+
_sink.writeList(element.parameters, _writeParameterElement);
647643
_resolutionSink.writeBool(element.element.inheritsCovariant);
648644
_resolutionSink.writeType(element.element.type);
649645
_resolutionSink._writeOptionalNode(element.constantInitializer);
@@ -795,28 +791,31 @@ class BundleWriter {
795791

796792
_sink.writeBool(unitElement.isSynthetic);
797793

798-
_writeList(unitElement.libraryImports, _writeLibraryImport);
799-
_writeList(unitElement.libraryExports, _writeLibraryExport);
794+
_sink.writeList(unitElement.libraryImports, _writeLibraryImport);
795+
_sink.writeList(unitElement.libraryExports, _writeLibraryExport);
800796

801797
// Write the metadata for parts here, even though we write parts below.
802798
// The reason is that resolution data must be in a single chunk.
803799
_writePartElementsMetadata(unitElement);
804800

805-
_writeList(unitElement.classes, _writeClassFragment);
806-
_writeList(unitElement.enums, _writeEnumFragment);
807-
_writeList(unitElement.extensions, _writeExtensionFragment);
808-
_writeList(unitElement.extensionTypes, _writeExtensionTypeFragment);
809-
_writeList(unitElement.functions, _writeTopLevelFunctionFragment);
810-
_writeList(unitElement.mixins, _writeMixinFragment);
811-
_writeList(unitElement.typeAliases, _writeTypeAliasFragment);
812-
813-
_writeList(unitElement.topLevelVariables, _writeTopLevelVariableFragment);
814-
_writeList(unitElement.getters, _writeGetterFragment);
815-
_writeList(unitElement.setters, _writeSetterFragment);
801+
_sink.writeList(unitElement.classes, _writeClassFragment);
802+
_sink.writeList(unitElement.enums, _writeEnumFragment);
803+
_sink.writeList(unitElement.extensions, _writeExtensionFragment);
804+
_sink.writeList(unitElement.extensionTypes, _writeExtensionTypeFragment);
805+
_sink.writeList(unitElement.functions, _writeTopLevelFunctionFragment);
806+
_sink.writeList(unitElement.mixins, _writeMixinFragment);
807+
_sink.writeList(unitElement.typeAliases, _writeTypeAliasFragment);
808+
809+
_sink.writeList(
810+
unitElement.topLevelVariables,
811+
_writeTopLevelVariableFragment,
812+
);
813+
_sink.writeList(unitElement.getters, _writeGetterFragment);
814+
_sink.writeList(unitElement.setters, _writeSetterFragment);
816815

817816
// Write parts after this library fragment, so that when we read, we
818817
// process fragments of declarations in the same order as we build them.
819-
_writeList(unitElement.parts, _writePartInclude);
818+
_sink.writeList(unitElement.parts, _writePartInclude);
820819
}
821820

822821
void _writeVariableGetterSetterLinking(
@@ -949,10 +948,7 @@ class ResolutionSink extends _SummaryDataWriter {
949948
writeEnum(TypeTag.InterfaceType);
950949
// TODO(scheglov): Write raw
951950
writeElement(type.element);
952-
writeUInt30(typeArguments.length);
953-
for (var i = 0; i < typeArguments.length; ++i) {
954-
writeType(typeArguments[i]);
955-
}
951+
_writeTypeList(typeArguments);
956952
_writeNullabilitySuffix(nullabilitySuffix);
957953
}
958954
_writeTypeAliasElementArguments(type);
@@ -994,10 +990,7 @@ class ResolutionSink extends _SummaryDataWriter {
994990
}
995991

996992
void _writeElementList(List<Element> elements) {
997-
writeUInt30(elements.length);
998-
for (var element in elements) {
999-
writeElement(element);
1000-
}
993+
writeList(elements, writeElement);
1001994
}
1002995

1003996
void _writeElementName(Element element) {
@@ -1008,8 +1001,7 @@ class ResolutionSink extends _SummaryDataWriter {
10081001
List<FormalParameterFragmentImpl> parameters, {
10091002
required bool withAnnotations,
10101003
}) {
1011-
writeUInt30(parameters.length);
1012-
for (var parameter in parameters) {
1004+
writeList(parameters, (parameter) {
10131005
_writeFormalParameterKind(parameter);
10141006
writeBool(parameter.hasImplicitType);
10151007
writeBool(parameter.isInitializingFormal);
@@ -1024,15 +1016,14 @@ class ResolutionSink extends _SummaryDataWriter {
10241016
if (withAnnotations) {
10251017
_writeMetadata(parameter.metadata);
10261018
}
1027-
}
1019+
});
10281020
}
10291021

10301022
void _writeFormalParameters2(
10311023
List<FormalParameterElementMixin> parameters, {
10321024
required bool withAnnotations,
10331025
}) {
1034-
writeUInt30(parameters.length);
1035-
for (var parameter in parameters) {
1026+
writeList(parameters, (parameter) {
10361027
_writeFormalParameterKind2(parameter);
10371028
writeBool(parameter.hasImplicitType);
10381029
writeBool(parameter.isInitializingFormal);
@@ -1047,7 +1038,7 @@ class ResolutionSink extends _SummaryDataWriter {
10471038
if (withAnnotations) {
10481039
_writeMetadata(parameter.metadata as MetadataImpl);
10491040
}
1050-
}
1041+
});
10511042
}
10521043

10531044
void _writeFragmentName(Fragment fragment) {
@@ -1077,13 +1068,6 @@ class ResolutionSink extends _SummaryDataWriter {
10771068
node.accept(astWriter);
10781069
}
10791070

1080-
void _writeNodeList(List<AstNode> nodes) {
1081-
writeUInt30(nodes.length);
1082-
for (var node in nodes) {
1083-
_writeNode(node);
1084-
}
1085-
}
1086-
10871071
void _writeNullabilitySuffix(NullabilitySuffix suffix) {
10881072
writeByte(suffix.index);
10891073
}
@@ -1121,10 +1105,7 @@ class ResolutionSink extends _SummaryDataWriter {
11211105
}
11221106

11231107
void _writeTypeList(List<DartType> types) {
1124-
writeUInt30(types.length);
1125-
for (var type in types) {
1126-
writeType(type);
1127-
}
1108+
writeList(types, writeType);
11281109
}
11291110

11301111
void _writeTypeParameters(
@@ -1134,10 +1115,7 @@ class ResolutionSink extends _SummaryDataWriter {
11341115
}) {
11351116
var typeParameters = typeParameterFragments.map((f) => f.element).toList();
11361117
localElements.withElements(typeParameters, () {
1137-
writeUInt30(typeParameters.length);
1138-
for (var typeParameter in typeParameterFragments) {
1139-
_writeFragmentName(typeParameter);
1140-
}
1118+
writeList(typeParameterFragments, _writeFragmentName);
11411119
for (var typeParameter in typeParameterFragments) {
11421120
writeType(typeParameter.bound);
11431121
if (withAnnotations) {
@@ -1154,10 +1132,7 @@ class ResolutionSink extends _SummaryDataWriter {
11541132
required bool withAnnotations,
11551133
}) {
11561134
localElements.withElements(typeParameters, () {
1157-
writeUInt30(typeParameters.length);
1158-
for (var typeParameter in typeParameters) {
1159-
_writeElementName(typeParameter);
1160-
}
1135+
writeList(typeParameters, _writeElementName);
11611136
for (var typeParameter in typeParameters) {
11621137
writeType(typeParameter.bound);
11631138
if (withAnnotations) {
@@ -1397,10 +1372,7 @@ class _SummaryDataWriter extends BufferedSink {
13971372
}
13981373

13991374
void _writeStringList(List<String> values) {
1400-
writeUInt30(values.length);
1401-
for (var value in values) {
1402-
_writeStringReference(value);
1403-
}
1375+
writeList(values, _writeStringReference);
14041376
}
14051377

14061378
void _writeStringReference(String string) {

0 commit comments

Comments
 (0)