@@ -27,7 +27,7 @@ class ElementBuilder {
2727 LibraryElementImpl get libraryElement => libraryBuilder.element;
2828
2929 void buildElements ({
30- required List <FragmentImpl > topFragments,
30+ required Map < LibraryFragmentImpl , List <FragmentImpl > > topFragments,
3131 required Map <FragmentImpl , List <FragmentImpl >> parentChildFragments,
3232 }) {
3333 _buildTopFragments (topFragments);
@@ -118,35 +118,60 @@ class ElementBuilder {
118118 }
119119 }
120120
121- void _buildTopFragments (List <FragmentImpl > topFragments) {
121+ void _buildTopFragments (
122+ Map <LibraryFragmentImpl , List <FragmentImpl >> topFragments,
123+ ) {
122124 var lastFragments = < String ? , FragmentImpl > {};
123- for (var fragment in topFragments) {
124- var lastFragment = lastFragments[fragment.name2];
125- switch (fragment) {
126- case ClassFragmentImpl ():
127- _handleClassFragment (lastFragment, fragment);
128- case EnumFragmentImpl ():
129- _handleEnumFragment (lastFragment, fragment);
130- case ExtensionFragmentImpl ():
131- _handleExtensionFragment (lastFragment, fragment);
132- case ExtensionTypeFragmentImpl ():
133- _handleExtensionTypeFragment (lastFragment, fragment);
134- case GetterFragmentImpl ():
135- _handleTopLevelGetterFragment (lastFragment, fragment);
136- case MixinFragmentImpl ():
137- _handleMixinFragment (lastFragment, fragment);
138- case SetterFragmentImpl ():
139- _handleTopLevelSetterFragment (lastFragment, fragment);
140- case TopLevelFunctionFragmentImpl ():
141- _handleTopLevelFunctionFragment (lastFragment, fragment);
142- case TopLevelVariableFragmentImpl ():
143- _handleTopLevelVariableFragment (lastFragment, fragment);
144- case TypeAliasFragmentImpl ():
145- _handleTypeAliasFragment (lastFragment, fragment);
146- default :
147- throw UnimplementedError ('${fragment .runtimeType }' );
125+ for (var libraryFragmentEntry in topFragments.entries) {
126+ var libraryFragment = libraryFragmentEntry.key;
127+ for (var fragment in libraryFragmentEntry.value) {
128+ var lastFragment = lastFragments[fragment.name2];
129+ switch (fragment) {
130+ case ClassFragmentImpl ():
131+ _handleClassFragment (libraryFragment, lastFragment, fragment);
132+ case EnumFragmentImpl ():
133+ _handleEnumFragment (libraryFragment, lastFragment, fragment);
134+ case ExtensionFragmentImpl ():
135+ _handleExtensionFragment (libraryFragment, lastFragment, fragment);
136+ case ExtensionTypeFragmentImpl ():
137+ _handleExtensionTypeFragment (
138+ libraryFragment,
139+ lastFragment,
140+ fragment,
141+ );
142+ case GetterFragmentImpl ():
143+ _handleTopLevelGetterFragment (
144+ libraryFragment,
145+ lastFragment,
146+ fragment,
147+ );
148+ case MixinFragmentImpl ():
149+ _handleMixinFragment (libraryFragment, lastFragment, fragment);
150+ case SetterFragmentImpl ():
151+ _handleTopLevelSetterFragment (
152+ libraryFragment,
153+ lastFragment,
154+ fragment,
155+ );
156+ case TopLevelFunctionFragmentImpl ():
157+ _handleTopLevelFunctionFragment (
158+ libraryFragment,
159+ lastFragment,
160+ fragment,
161+ );
162+ case TopLevelVariableFragmentImpl ():
163+ _handleTopLevelVariableFragment (
164+ libraryFragment,
165+ lastFragment,
166+ fragment,
167+ );
168+ case TypeAliasFragmentImpl ():
169+ _handleTypeAliasFragment (libraryFragment, lastFragment, fragment);
170+ default :
171+ throw UnimplementedError ('${fragment .runtimeType }' );
172+ }
173+ lastFragments[fragment.name2] = fragment;
148174 }
149- lastFragments[fragment.name2] = fragment;
150175 }
151176 }
152177
@@ -163,10 +188,12 @@ class ElementBuilder {
163188 }
164189
165190 void _handleClassFragment (
191+ LibraryFragmentImpl libraryFragment,
166192 FragmentImpl ? lastFragment,
167193 ClassFragmentImpl fragment,
168194 ) {
169195 assert (! fragment.isSynthetic);
196+ libraryFragment.addClass (fragment);
170197
171198 if (fragment.isAugmentation && lastFragment is ClassFragmentImpl ) {
172199 lastFragment.addFragment (fragment);
@@ -182,10 +209,12 @@ class ElementBuilder {
182209 }
183210
184211 void _handleEnumFragment (
212+ LibraryFragmentImpl libraryFragment,
185213 FragmentImpl ? lastFragment,
186214 EnumFragmentImpl fragment,
187215 ) {
188216 assert (! fragment.isSynthetic);
217+ libraryFragment.addEnum (fragment);
189218
190219 if (fragment.isAugmentation && lastFragment is EnumFragmentImpl ) {
191220 lastFragment.addFragment (fragment);
@@ -201,10 +230,12 @@ class ElementBuilder {
201230 }
202231
203232 void _handleExtensionFragment (
233+ LibraryFragmentImpl libraryFragment,
204234 FragmentImpl ? lastFragment,
205235 ExtensionFragmentImpl fragment,
206236 ) {
207237 assert (! fragment.isSynthetic);
238+ libraryFragment.addExtension (fragment);
208239
209240 if (fragment.isAugmentation && lastFragment is ExtensionFragmentImpl ) {
210241 lastFragment.addFragment (fragment);
@@ -220,10 +251,12 @@ class ElementBuilder {
220251 }
221252
222253 void _handleExtensionTypeFragment (
254+ LibraryFragmentImpl libraryFragment,
223255 FragmentImpl ? lastFragment,
224256 ExtensionTypeFragmentImpl fragment,
225257 ) {
226258 assert (! fragment.isSynthetic);
259+ libraryFragment.addExtensionType (fragment);
227260
228261 if (fragment.isAugmentation && lastFragment is ExtensionTypeFragmentImpl ) {
229262 lastFragment.addFragment (fragment);
@@ -474,10 +507,12 @@ class ElementBuilder {
474507 }
475508
476509 void _handleMixinFragment (
510+ LibraryFragmentImpl libraryFragment,
477511 FragmentImpl ? lastFragment,
478512 MixinFragmentImpl fragment,
479513 ) {
480514 assert (! fragment.isSynthetic);
515+ libraryFragment.addMixin (fragment);
481516
482517 if (fragment.isAugmentation && lastFragment is MixinFragmentImpl ) {
483518 lastFragment.addFragment (fragment);
@@ -493,10 +528,10 @@ class ElementBuilder {
493528 }
494529
495530 void _handleTopLevelFunctionFragment (
531+ LibraryFragmentImpl libraryFragment,
496532 FragmentImpl ? lastFragment,
497533 TopLevelFunctionFragmentImpl fragment,
498534 ) {
499- var libraryFragment = fragment.enclosingFragment as LibraryFragmentImpl ;
500535 libraryFragment.addFunction (fragment);
501536
502537 if (lastFragment is TopLevelFunctionFragmentImpl &&
@@ -514,13 +549,11 @@ class ElementBuilder {
514549 }
515550
516551 void _handleTopLevelGetterFragment (
552+ LibraryFragmentImpl libraryFragment,
517553 FragmentImpl ? lastFragment,
518554 GetterFragmentImpl getterFragment,
519555 ) {
520556 assert (! getterFragment.isSynthetic);
521-
522- var libraryFragment =
523- getterFragment.enclosingFragment as LibraryFragmentImpl ;
524557 libraryFragment.addGetter (getterFragment);
525558
526559 var lastVariableElement = _topLevelVariableElement (lastFragment);
@@ -566,13 +599,11 @@ class ElementBuilder {
566599 }
567600
568601 void _handleTopLevelSetterFragment (
602+ LibraryFragmentImpl libraryFragment,
569603 FragmentImpl ? lastFragment,
570604 SetterFragmentImpl setterFragment,
571605 ) {
572606 assert (! setterFragment.isSynthetic);
573-
574- var libraryFragment =
575- setterFragment.enclosingFragment as LibraryFragmentImpl ;
576607 libraryFragment.addSetter (setterFragment);
577608
578609 var lastVariableElement = _topLevelVariableElement (lastFragment);
@@ -619,13 +650,11 @@ class ElementBuilder {
619650 }
620651
621652 void _handleTopLevelVariableFragment (
653+ LibraryFragmentImpl libraryFragment,
622654 FragmentImpl ? lastVariableFragment,
623655 TopLevelVariableFragmentImpl variableFragment,
624656 ) {
625657 assert (! variableFragment.isSynthetic);
626-
627- var libraryFragment =
628- variableFragment.enclosingFragment as LibraryFragmentImpl ;
629658 libraryFragment.addTopLevelVariable (variableFragment);
630659
631660 if (variableFragment.isAugmentation &&
@@ -695,10 +724,10 @@ class ElementBuilder {
695724 }
696725
697726 void _handleTypeAliasFragment (
727+ LibraryFragmentImpl libraryFragment,
698728 FragmentImpl ? lastFragment,
699729 TypeAliasFragmentImpl fragment,
700730 ) {
701- var libraryFragment = fragment.enclosingFragment as LibraryFragmentImpl ;
702731 libraryFragment.addTypeAlias (fragment);
703732
704733 if (lastFragment is TypeAliasFragmentImpl && fragment.isAugmentation) {
@@ -834,8 +863,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
834863 node.declaredFragment = fragment;
835864 _linker.elementNodes[fragment] = node;
836865
837- _unitElement.addClass (fragment);
838- _libraryBuilder.addTopFragment (fragment);
866+ _libraryBuilder.addTopFragment (_unitElement, fragment);
839867
840868 var holder = _EnclosingContext (
841869 instanceElementBuilder: null ,
@@ -880,8 +908,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
880908 node.declaredFragment = fragment;
881909 _linker.elementNodes[fragment] = node;
882910
883- _unitElement.addClass (fragment);
884- _libraryBuilder.addTopFragment (fragment);
911+ _libraryBuilder.addTopFragment (_unitElement, fragment);
885912
886913 var holder = _EnclosingContext (
887914 instanceElementBuilder: null ,
@@ -979,8 +1006,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
9791006 node.declaredFragment = fragment;
9801007 _linker.elementNodes[fragment] = node;
9811008
982- _unitElement.addEnum (fragment);
983- _libraryBuilder.addTopFragment (fragment);
1009+ _libraryBuilder.addTopFragment (_unitElement, fragment);
9841010
9851011 var holder = _EnclosingContext (
9861012 instanceElementBuilder: null ,
@@ -1181,8 +1207,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
11811207 node.declaredFragment = fragment;
11821208 _linker.elementNodes[fragment] = node;
11831209
1184- _unitElement.addExtension (fragment);
1185- _libraryBuilder.addTopFragment (fragment);
1210+ _libraryBuilder.addTopFragment (_unitElement, fragment);
11861211
11871212 var holder = _EnclosingContext (
11881213 instanceElementBuilder: null ,
@@ -1222,8 +1247,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
12221247 node.declaredFragment = fragment;
12231248 _linker.elementNodes[fragment] = node;
12241249
1225- _unitElement.addExtensionType (fragment);
1226- _libraryBuilder.addTopFragment (fragment);
1250+ _libraryBuilder.addTopFragment (_unitElement, fragment);
12271251
12281252 var holder = _EnclosingContext (
12291253 instanceElementBuilder: null ,
@@ -1387,8 +1411,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
13871411 getterFragment.enclosingElement3 = _unitElement;
13881412 executableFragment = getterFragment;
13891413
1390- getterFragment.enclosingElement3 = _unitElement;
1391- _libraryBuilder.addTopFragment (getterFragment);
1414+ _libraryBuilder.addTopFragment (_unitElement, getterFragment);
13921415 } else if (node.isSetter) {
13931416 var setterFragment = SetterFragmentImpl (
13941417 name2: name2,
@@ -1401,8 +1424,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
14011424 setterFragment.enclosingElement3 = _unitElement;
14021425 executableFragment = setterFragment;
14031426
1404- setterFragment.enclosingElement3 = _unitElement;
1405- _libraryBuilder.addTopFragment (setterFragment);
1427+ _libraryBuilder.addTopFragment (_unitElement, setterFragment);
14061428 } else {
14071429 var fragment = TopLevelFunctionFragmentImpl (
14081430 name2: name2,
@@ -1415,8 +1437,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
14151437
14161438 _enclosingContext.addFunction (name, fragment);
14171439
1418- fragment.enclosingElement3 = _unitElement;
1419- _libraryBuilder.addTopFragment (fragment);
1440+ _libraryBuilder.addTopFragment (_unitElement, fragment);
14201441 }
14211442
14221443 executableFragment.hasImplicitReturnType = node.returnType == null ;
@@ -1458,8 +1479,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
14581479 node.declaredFragment = fragment;
14591480 _linker.elementNodes[fragment] = node;
14601481
1461- fragment.enclosingElement3 = _unitElement;
1462- _libraryBuilder.addTopFragment (fragment);
1482+ _libraryBuilder.addTopFragment (_unitElement, fragment);
14631483
14641484 var holder = _EnclosingContext (
14651485 instanceElementBuilder: null ,
@@ -1582,8 +1602,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
15821602 node.declaredFragment = fragment;
15831603 _linker.elementNodes[fragment] = node;
15841604
1585- fragment.enclosingElement3 = _unitElement;
1586- _libraryBuilder.addTopFragment (fragment);
1605+ _libraryBuilder.addTopFragment (_unitElement, fragment);
15871606
15881607 var holder = _EnclosingContext (
15891608 instanceElementBuilder: null ,
@@ -1735,8 +1754,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
17351754 node.declaredFragment = fragment;
17361755 _linker.elementNodes[fragment] = node;
17371756
1738- _unitElement.addMixin (fragment);
1739- _libraryBuilder.addTopFragment (fragment);
1757+ _libraryBuilder.addTopFragment (_unitElement, fragment);
17401758
17411759 var holder = _EnclosingContext (
17421760 instanceElementBuilder: null ,
@@ -1938,8 +1956,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
19381956 var refName = fragment.name2 ?? '${_nextUnnamedId ++}' ;
19391957 _enclosingContext.addTopLevelVariable (refName, fragment);
19401958
1941- fragment.enclosingElement3 = _unitElement;
1942- _libraryBuilder.addTopFragment (fragment);
1959+ _libraryBuilder.addTopFragment (_unitElement, fragment);
19431960
19441961 _linker.elementNodes[fragment] = variable;
19451962 variable.declaredFragment = fragment;
0 commit comments