@@ -121,18 +121,13 @@ class BundleWriter {
121121 _writeTypeAliasElements (libraryElement.typeAliases);
122122
123123 _sink.writeList (libraryElement.topLevelVariables, (element) {
124- _writeReference2 (element.reference);
124+ _writeReference (element.reference);
125125 _sink.writeList (element.fragments, _writeFragmentId);
126126 });
127127
128128 _writeGetterElements (libraryElement.getters);
129129 _writeSetterElements (libraryElement.setters);
130-
131- _sink.writeList (libraryElement.topLevelVariables, (variableElement) {
132- _writeReference2 (variableElement.reference);
133- _writeOptionalReference (variableElement.getter2? .reference);
134- _writeOptionalReference (variableElement.setter2? .reference);
135- });
130+ _writeVariableGetterSetterLinking (libraryElement.topLevelVariables);
136131
137132 // Write resolution data for the library.
138133 _writeResolutionOffset ();
@@ -149,7 +144,7 @@ class BundleWriter {
149144
150145 void _writeClassElements (List <ClassElementImpl > elements) {
151146 _sink.writeList (elements, (element) {
152- _writeReference2 (element.reference);
147+ _writeReference (element.reference);
153148 _sink.writeList (element.fragments, (fragment) {
154149 _writeFragmentId (fragment);
155150 });
@@ -200,7 +195,7 @@ class BundleWriter {
200195
201196 void _writeConstructorElements (List <ConstructorElementImpl > elements) {
202197 _sink.writeList (elements, (element) {
203- _writeReference2 (element.reference);
198+ _writeReference (element.reference);
204199 _sink.writeList (element.fragments, _writeFragmentId);
205200 });
206201 }
@@ -264,7 +259,7 @@ class BundleWriter {
264259
265260 void _writeEnumElements (List <EnumElementImpl > elements) {
266261 _sink.writeList (elements, (element) {
267- _writeReference2 (element.reference);
262+ _writeReference (element.reference);
268263 _sink.writeList (element.fragments, (fragment) {
269264 _writeFragmentId (fragment);
270265 });
@@ -329,7 +324,7 @@ class BundleWriter {
329324
330325 void _writeExtensionElements (List <ExtensionElementImpl > elements) {
331326 _sink.writeList (elements, (element) {
332- _writeReference2 (element.reference);
327+ _writeReference (element.reference);
333328 _sink.writeList (element.fragments, (fragment) {
334329 _writeFragmentId (fragment);
335330 });
@@ -368,7 +363,7 @@ class BundleWriter {
368363
369364 void _writeExtensionTypeElements (List <ExtensionTypeElementImpl > elements) {
370365 _sink.writeList (elements, (element) {
371- _writeReference2 (element.reference);
366+ _writeReference (element.reference);
372367 _sink.writeList (element.fragments, (fragment) {
373368 _writeFragmentId (fragment);
374369 });
@@ -417,7 +412,7 @@ class BundleWriter {
417412
418413 void _writeFieldElements (List <FieldElementImpl > elements) {
419414 _sink.writeList (elements, (element) {
420- _writeReference2 (element.reference);
415+ _writeReference (element.reference);
421416 _sink.writeList (element.fragments, _writeFragmentId);
422417 });
423418 }
@@ -480,7 +475,7 @@ class BundleWriter {
480475
481476 void _writeGetterElements (List <GetterElementImpl > elements) {
482477 _sink.writeList (elements, (element) {
483- _writeReference2 (element.reference);
478+ _writeReference (element.reference);
484479 _sink.writeList (element.fragments, _writeFragmentId);
485480
486481 _writeElementResolution (() {
@@ -532,7 +527,7 @@ class BundleWriter {
532527 void _writeLibraryImportPrefixFragment (PrefixFragmentImpl ? fragment) {
533528 _sink.writeOptionalObject (fragment, (fragment) {
534529 _writeFragmentName (fragment);
535- _writeReference2 (fragment.element.reference);
530+ _writeReference (fragment.element.reference);
536531 _sink.writeBool (fragment.isDeferred);
537532 });
538533 }
@@ -546,12 +541,12 @@ class BundleWriter {
546541
547542 void _writeLoadLibraryFunctionReferences (LibraryElementImpl library) {
548543 var element = library.loadLibraryFunction2;
549- _writeReference2 (element.reference);
544+ _writeReference (element.reference);
550545 }
551546
552547 void _writeMethodElements (List <MethodElementImpl > elements) {
553548 _sink.writeList (elements, (element) {
554- _writeReference2 (element.reference);
549+ _writeReference (element.reference);
555550 _sink.writeList (element.fragments, _writeFragmentId);
556551
557552 _writeElementResolution (() {
@@ -579,7 +574,7 @@ class BundleWriter {
579574
580575 void _writeMixinElements (List <MixinElementImpl > elements) {
581576 _sink.writeList (elements, (element) {
582- _writeReference2 (element.reference);
577+ _writeReference (element.reference);
583578 _sink.writeList (element.fragments, (fragment) {
584579 _writeFragmentId (fragment);
585580 });
@@ -639,10 +634,7 @@ class BundleWriter {
639634 }
640635
641636 void _writeOptionalReference (Reference ? reference) {
642- _sink.writeOptionalObject (reference, (reference) {
643- var index = _references._indexOfReference (reference);
644- _sink.writeUInt30 (index);
645- });
637+ _sink.writeOptionalObject (reference, _writeReference);
646638 }
647639
648640 // TODO(scheglov): Deduplicate parameter writing implementation.
@@ -687,7 +679,7 @@ class BundleWriter {
687679 _writeDirectiveUri (element.uri);
688680 }
689681
690- void _writeReference2 (Reference ? reference) {
682+ void _writeReference (Reference reference) {
691683 var index = _references._indexOfReference (reference);
692684 _sink.writeUInt30 (index);
693685 }
@@ -700,7 +692,7 @@ class BundleWriter {
700692
701693 void _writeSetterElements (List <SetterElementImpl > elements) {
702694 _sink.writeList (elements, (element) {
703- _writeReference2 (element.reference);
695+ _writeReference (element.reference);
704696 _sink.writeList (element.fragments, _writeFragmentId);
705697
706698 _writeElementResolution (() {
@@ -726,7 +718,7 @@ class BundleWriter {
726718 List <TopLevelFunctionElementImpl > elements,
727719 ) {
728720 _sink.writeList (elements, (element) {
729- _writeReference2 (element.reference);
721+ _writeReference (element.reference);
730722 _sink.writeList (element.fragments, _writeFragmentId);
731723
732724 _writeElementResolution (() {
@@ -761,7 +753,7 @@ class BundleWriter {
761753
762754 void _writeTypeAliasElements (List <TypeAliasElementImpl > elements) {
763755 _sink.writeList (elements, (element) {
764- _writeReference2 (element.reference);
756+ _writeReference (element.reference);
765757 _sink.writeList (element.fragments, _writeFragmentId);
766758 // TODO(scheglov): resolution too?
767759 });
@@ -835,7 +827,7 @@ class BundleWriter {
835827 List <PropertyInducingElementImpl > variables,
836828 ) {
837829 _sink.writeList (variables, (variable) {
838- _writeReference2 (variable.reference);
830+ _writeReference (variable.reference);
839831 _writeOptionalReference (variable.getter2? .reference);
840832 _writeOptionalReference (variable.setter2? .reference);
841833 });
@@ -1338,21 +1330,22 @@ class _BundleWriterReferences {
13381330 }
13391331 }
13401332
1341- int _indexOfReference (Reference ? reference) {
1342- if (reference == null ) return 0 ;
1343- if (reference.parent == null ) return 0 ;
1344-
1333+ int _indexOfReference (Reference reference) {
13451334 var index = reference.index;
13461335 if (index != null ) return index;
13471336
1348- var parentIndex = _indexOfReference (reference.parent);
1349- _referenceParents.add (parentIndex);
1350- _referenceNames.add (reference.name);
1337+ if (reference.parent case var parent? ) {
1338+ var parentIndex = _indexOfReference (parent);
1339+ _referenceParents.add (parentIndex);
1340+ _referenceNames.add (reference.name);
13511341
1352- index = _references.length;
1353- reference.index = index;
1354- _references.add (reference);
1355- return index;
1342+ index = _references.length;
1343+ reference.index = index;
1344+ _references.add (reference);
1345+ return index;
1346+ } else {
1347+ return 0 ;
1348+ }
13561349 }
13571350}
13581351
0 commit comments