@@ -27,7 +27,7 @@ class ElementBuilder {
27
27
LibraryElementImpl get libraryElement => libraryBuilder.element;
28
28
29
29
void buildElements ({
30
- required List <FragmentImpl > topFragments,
30
+ required Map < LibraryFragmentImpl , List <FragmentImpl > > topFragments,
31
31
required Map <FragmentImpl , List <FragmentImpl >> parentChildFragments,
32
32
}) {
33
33
_buildTopFragments (topFragments);
@@ -118,35 +118,60 @@ class ElementBuilder {
118
118
}
119
119
}
120
120
121
- void _buildTopFragments (List <FragmentImpl > topFragments) {
121
+ void _buildTopFragments (
122
+ Map <LibraryFragmentImpl , List <FragmentImpl >> topFragments,
123
+ ) {
122
124
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;
148
174
}
149
- lastFragments[fragment.name2] = fragment;
150
175
}
151
176
}
152
177
@@ -163,10 +188,12 @@ class ElementBuilder {
163
188
}
164
189
165
190
void _handleClassFragment (
191
+ LibraryFragmentImpl libraryFragment,
166
192
FragmentImpl ? lastFragment,
167
193
ClassFragmentImpl fragment,
168
194
) {
169
195
assert (! fragment.isSynthetic);
196
+ libraryFragment.addClass (fragment);
170
197
171
198
if (fragment.isAugmentation && lastFragment is ClassFragmentImpl ) {
172
199
lastFragment.addFragment (fragment);
@@ -182,10 +209,12 @@ class ElementBuilder {
182
209
}
183
210
184
211
void _handleEnumFragment (
212
+ LibraryFragmentImpl libraryFragment,
185
213
FragmentImpl ? lastFragment,
186
214
EnumFragmentImpl fragment,
187
215
) {
188
216
assert (! fragment.isSynthetic);
217
+ libraryFragment.addEnum (fragment);
189
218
190
219
if (fragment.isAugmentation && lastFragment is EnumFragmentImpl ) {
191
220
lastFragment.addFragment (fragment);
@@ -201,10 +230,12 @@ class ElementBuilder {
201
230
}
202
231
203
232
void _handleExtensionFragment (
233
+ LibraryFragmentImpl libraryFragment,
204
234
FragmentImpl ? lastFragment,
205
235
ExtensionFragmentImpl fragment,
206
236
) {
207
237
assert (! fragment.isSynthetic);
238
+ libraryFragment.addExtension (fragment);
208
239
209
240
if (fragment.isAugmentation && lastFragment is ExtensionFragmentImpl ) {
210
241
lastFragment.addFragment (fragment);
@@ -220,10 +251,12 @@ class ElementBuilder {
220
251
}
221
252
222
253
void _handleExtensionTypeFragment (
254
+ LibraryFragmentImpl libraryFragment,
223
255
FragmentImpl ? lastFragment,
224
256
ExtensionTypeFragmentImpl fragment,
225
257
) {
226
258
assert (! fragment.isSynthetic);
259
+ libraryFragment.addExtensionType (fragment);
227
260
228
261
if (fragment.isAugmentation && lastFragment is ExtensionTypeFragmentImpl ) {
229
262
lastFragment.addFragment (fragment);
@@ -474,10 +507,12 @@ class ElementBuilder {
474
507
}
475
508
476
509
void _handleMixinFragment (
510
+ LibraryFragmentImpl libraryFragment,
477
511
FragmentImpl ? lastFragment,
478
512
MixinFragmentImpl fragment,
479
513
) {
480
514
assert (! fragment.isSynthetic);
515
+ libraryFragment.addMixin (fragment);
481
516
482
517
if (fragment.isAugmentation && lastFragment is MixinFragmentImpl ) {
483
518
lastFragment.addFragment (fragment);
@@ -493,10 +528,10 @@ class ElementBuilder {
493
528
}
494
529
495
530
void _handleTopLevelFunctionFragment (
531
+ LibraryFragmentImpl libraryFragment,
496
532
FragmentImpl ? lastFragment,
497
533
TopLevelFunctionFragmentImpl fragment,
498
534
) {
499
- var libraryFragment = fragment.enclosingFragment as LibraryFragmentImpl ;
500
535
libraryFragment.addFunction (fragment);
501
536
502
537
if (lastFragment is TopLevelFunctionFragmentImpl &&
@@ -514,13 +549,11 @@ class ElementBuilder {
514
549
}
515
550
516
551
void _handleTopLevelGetterFragment (
552
+ LibraryFragmentImpl libraryFragment,
517
553
FragmentImpl ? lastFragment,
518
554
GetterFragmentImpl getterFragment,
519
555
) {
520
556
assert (! getterFragment.isSynthetic);
521
-
522
- var libraryFragment =
523
- getterFragment.enclosingFragment as LibraryFragmentImpl ;
524
557
libraryFragment.addGetter (getterFragment);
525
558
526
559
var lastVariableElement = _topLevelVariableElement (lastFragment);
@@ -566,13 +599,11 @@ class ElementBuilder {
566
599
}
567
600
568
601
void _handleTopLevelSetterFragment (
602
+ LibraryFragmentImpl libraryFragment,
569
603
FragmentImpl ? lastFragment,
570
604
SetterFragmentImpl setterFragment,
571
605
) {
572
606
assert (! setterFragment.isSynthetic);
573
-
574
- var libraryFragment =
575
- setterFragment.enclosingFragment as LibraryFragmentImpl ;
576
607
libraryFragment.addSetter (setterFragment);
577
608
578
609
var lastVariableElement = _topLevelVariableElement (lastFragment);
@@ -619,13 +650,11 @@ class ElementBuilder {
619
650
}
620
651
621
652
void _handleTopLevelVariableFragment (
653
+ LibraryFragmentImpl libraryFragment,
622
654
FragmentImpl ? lastVariableFragment,
623
655
TopLevelVariableFragmentImpl variableFragment,
624
656
) {
625
657
assert (! variableFragment.isSynthetic);
626
-
627
- var libraryFragment =
628
- variableFragment.enclosingFragment as LibraryFragmentImpl ;
629
658
libraryFragment.addTopLevelVariable (variableFragment);
630
659
631
660
if (variableFragment.isAugmentation &&
@@ -695,10 +724,10 @@ class ElementBuilder {
695
724
}
696
725
697
726
void _handleTypeAliasFragment (
727
+ LibraryFragmentImpl libraryFragment,
698
728
FragmentImpl ? lastFragment,
699
729
TypeAliasFragmentImpl fragment,
700
730
) {
701
- var libraryFragment = fragment.enclosingFragment as LibraryFragmentImpl ;
702
731
libraryFragment.addTypeAlias (fragment);
703
732
704
733
if (lastFragment is TypeAliasFragmentImpl && fragment.isAugmentation) {
@@ -834,8 +863,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
834
863
node.declaredFragment = fragment;
835
864
_linker.elementNodes[fragment] = node;
836
865
837
- _unitElement.addClass (fragment);
838
- _libraryBuilder.addTopFragment (fragment);
866
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
839
867
840
868
var holder = _EnclosingContext (
841
869
instanceElementBuilder: null ,
@@ -880,8 +908,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
880
908
node.declaredFragment = fragment;
881
909
_linker.elementNodes[fragment] = node;
882
910
883
- _unitElement.addClass (fragment);
884
- _libraryBuilder.addTopFragment (fragment);
911
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
885
912
886
913
var holder = _EnclosingContext (
887
914
instanceElementBuilder: null ,
@@ -979,8 +1006,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
979
1006
node.declaredFragment = fragment;
980
1007
_linker.elementNodes[fragment] = node;
981
1008
982
- _unitElement.addEnum (fragment);
983
- _libraryBuilder.addTopFragment (fragment);
1009
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
984
1010
985
1011
var holder = _EnclosingContext (
986
1012
instanceElementBuilder: null ,
@@ -1181,8 +1207,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1181
1207
node.declaredFragment = fragment;
1182
1208
_linker.elementNodes[fragment] = node;
1183
1209
1184
- _unitElement.addExtension (fragment);
1185
- _libraryBuilder.addTopFragment (fragment);
1210
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1186
1211
1187
1212
var holder = _EnclosingContext (
1188
1213
instanceElementBuilder: null ,
@@ -1222,8 +1247,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1222
1247
node.declaredFragment = fragment;
1223
1248
_linker.elementNodes[fragment] = node;
1224
1249
1225
- _unitElement.addExtensionType (fragment);
1226
- _libraryBuilder.addTopFragment (fragment);
1250
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1227
1251
1228
1252
var holder = _EnclosingContext (
1229
1253
instanceElementBuilder: null ,
@@ -1387,8 +1411,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1387
1411
getterFragment.enclosingElement3 = _unitElement;
1388
1412
executableFragment = getterFragment;
1389
1413
1390
- getterFragment.enclosingElement3 = _unitElement;
1391
- _libraryBuilder.addTopFragment (getterFragment);
1414
+ _libraryBuilder.addTopFragment (_unitElement, getterFragment);
1392
1415
} else if (node.isSetter) {
1393
1416
var setterFragment = SetterFragmentImpl (
1394
1417
name2: name2,
@@ -1401,8 +1424,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1401
1424
setterFragment.enclosingElement3 = _unitElement;
1402
1425
executableFragment = setterFragment;
1403
1426
1404
- setterFragment.enclosingElement3 = _unitElement;
1405
- _libraryBuilder.addTopFragment (setterFragment);
1427
+ _libraryBuilder.addTopFragment (_unitElement, setterFragment);
1406
1428
} else {
1407
1429
var fragment = TopLevelFunctionFragmentImpl (
1408
1430
name2: name2,
@@ -1415,8 +1437,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1415
1437
1416
1438
_enclosingContext.addFunction (name, fragment);
1417
1439
1418
- fragment.enclosingElement3 = _unitElement;
1419
- _libraryBuilder.addTopFragment (fragment);
1440
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1420
1441
}
1421
1442
1422
1443
executableFragment.hasImplicitReturnType = node.returnType == null ;
@@ -1458,8 +1479,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1458
1479
node.declaredFragment = fragment;
1459
1480
_linker.elementNodes[fragment] = node;
1460
1481
1461
- fragment.enclosingElement3 = _unitElement;
1462
- _libraryBuilder.addTopFragment (fragment);
1482
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1463
1483
1464
1484
var holder = _EnclosingContext (
1465
1485
instanceElementBuilder: null ,
@@ -1582,8 +1602,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1582
1602
node.declaredFragment = fragment;
1583
1603
_linker.elementNodes[fragment] = node;
1584
1604
1585
- fragment.enclosingElement3 = _unitElement;
1586
- _libraryBuilder.addTopFragment (fragment);
1605
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1587
1606
1588
1607
var holder = _EnclosingContext (
1589
1608
instanceElementBuilder: null ,
@@ -1735,8 +1754,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1735
1754
node.declaredFragment = fragment;
1736
1755
_linker.elementNodes[fragment] = node;
1737
1756
1738
- _unitElement.addMixin (fragment);
1739
- _libraryBuilder.addTopFragment (fragment);
1757
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1740
1758
1741
1759
var holder = _EnclosingContext (
1742
1760
instanceElementBuilder: null ,
@@ -1938,8 +1956,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
1938
1956
var refName = fragment.name2 ?? '${_nextUnnamedId ++}' ;
1939
1957
_enclosingContext.addTopLevelVariable (refName, fragment);
1940
1958
1941
- fragment.enclosingElement3 = _unitElement;
1942
- _libraryBuilder.addTopFragment (fragment);
1959
+ _libraryBuilder.addTopFragment (_unitElement, fragment);
1943
1960
1944
1961
_linker.elementNodes[fragment] = variable;
1945
1962
variable.declaredFragment = fragment;
0 commit comments