Skip to content

Commit b43a501

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Remove LibraryElement.topLevelElements and units.
Change-Id: Idf7375b646f26d89cdc82620aa3ab4274aac1351 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449368 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent ce9aae4 commit b43a501

File tree

7 files changed

+44
-72
lines changed

7 files changed

+44
-72
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ class AnalysisDriver {
629629

630630
packageBundleBuilder.addLibrary(
631631
uriStr,
632-
libraryElement.units.map((e) {
632+
libraryElement.fragments.map((e) {
633633
return e.source.uri.toString();
634634
}).toList(),
635635
);

pkg/analyzer/lib/src/dart/analysis/search.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ class Search {
378378
Element element,
379379
) async {
380380
var prefixes = <String>{};
381-
for (var unit in library.units) {
381+
for (var unit in library.fragments) {
382382
var index = await _driver.getIndex(unit.source.fullName);
383383
if (index != null) {
384384
_IndexRequest request = _IndexRequest(index);
@@ -846,7 +846,7 @@ class Search {
846846

847847
List<SearchResult> results = <SearchResult>[];
848848
LibraryElementImpl libraryElement = element.libraryFragment.element;
849-
for (var unitElement in libraryElement.units) {
849+
for (var unitElement in libraryElement.fragments) {
850850
String unitPath = unitElement.source.fullName;
851851
var unitResult = await _driver.getResolvedUnit(unitPath);
852852
if (unitResult is ResolvedUnitResult) {
@@ -868,7 +868,7 @@ class Search {
868868
}
869869

870870
List<SearchResult> results = <SearchResult>[];
871-
for (var unitElement in element.units) {
871+
for (var unitElement in element.fragments) {
872872
String unitPath = unitElement.source.fullName;
873873
var unitResult = await _driver.getResolvedUnit(unitPath);
874874
if (unitResult is ResolvedUnitResultImpl) {
@@ -1005,7 +1005,7 @@ class Search {
10051005

10061006
List<SearchResult> results = <SearchResult>[];
10071007
var libraryElement = element.library;
1008-
for (var unitElement in libraryElement.units) {
1008+
for (var unitElement in libraryElement.fragments) {
10091009
String unitPath = unitElement.source.fullName;
10101010
var unitResult = await _driver.getResolvedUnit(unitPath);
10111011
if (unitResult is ResolvedUnitResult) {

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6296,20 +6296,6 @@ class LibraryElementImpl extends ElementImpl
62966296
return _firstFragment.source;
62976297
}
62986298

6299-
Iterable<FragmentImpl> get topLevelElements sync* {
6300-
for (var unit in units) {
6301-
yield* unit.accessors;
6302-
yield* unit.classes;
6303-
yield* unit.enums;
6304-
yield* unit.extensions;
6305-
yield* unit.extensionTypes;
6306-
yield* unit.functions;
6307-
yield* unit.mixins;
6308-
yield* unit.topLevelVariables;
6309-
yield* unit.typeAliases;
6310-
}
6311-
}
6312-
63136299
@override
63146300
@trackedDirectlyExpensive
63156301
List<TopLevelFunctionElementImpl> get topLevelFunctions {
@@ -6347,14 +6333,6 @@ class LibraryElementImpl extends ElementImpl
63476333
_typeAliases = value;
63486334
}
63496335

6350-
/// The compilation units this library consists of.
6351-
///
6352-
/// This includes the defining compilation unit and units included using the
6353-
/// `part` directive.
6354-
List<LibraryFragmentImpl> get units {
6355-
return [_firstFragment, ..._partUnits];
6356-
}
6357-
63586336
@override
63596337
@trackedIncludedInId
63606338
Uri get uri => _firstFragment.source.uri;
@@ -6641,7 +6619,7 @@ class LibraryElementImpl extends ElementImpl
66416619
@trackedInternal
66426620
void resetScope() {
66436621
_libraryDeclarations = null;
6644-
for (var fragment in units) {
6622+
for (var fragment in fragments) {
66456623
fragment._scope = null;
66466624
}
66476625
}
@@ -7009,9 +6987,9 @@ class LibraryFragmentImpl extends FragmentImpl
70096987

70106988
@override
70116989
LibraryFragment? get nextFragment {
7012-
var units = library.units;
7013-
var index = units.indexOf(this);
7014-
return units.elementAtOrNull(index + 1);
6990+
var fragments = library.fragments;
6991+
var index = fragments.indexOf(this);
6992+
return fragments.elementAtOrNull(index + 1);
70156993
}
70166994

70176995
@override
@@ -7050,10 +7028,10 @@ class LibraryFragmentImpl extends FragmentImpl
70507028

70517029
@override
70527030
LibraryFragment? get previousFragment {
7053-
var units = library.units;
7054-
var index = units.indexOf(this);
7031+
var fragments = library.fragments;
7032+
var index = fragments.indexOf(this);
70557033
if (index >= 1) {
7056-
return units[index - 1];
7034+
return fragments[index - 1];
70577035
}
70587036
return null;
70597037
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class ExportLocation {
9090
}
9191

9292
LibraryExportImpl exportOf(LibraryElementImpl library) {
93-
var fragment = library.units[fragmentIndex];
93+
var fragment = library.fragments[fragmentIndex];
9494
return fragment.libraryExports[exportIndex];
9595
}
9696

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class InformativeDataApplier {
4444
}
4545
elementFactory.isApplyingInformativeData = true;
4646

47-
for (var unitElement in libraryElement.units) {
47+
for (var unitElement in libraryElement.fragments) {
4848
var uri = unitElement.source.uri;
4949
if (unitsInformativeBytes[uri] case var infoBytes?) {
5050
_applyFromBytes(unitElement, infoBytes);

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

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class LibraryBuilder {
106106
}
107107

108108
void addExporters() {
109-
for (var (fragmentIndex, fragment) in element.units.indexed) {
109+
for (var (fragmentIndex, fragment) in element.fragments.indexed) {
110110
for (var (exportIndex, exportElement)
111111
in fragment.libraryExports.indexed) {
112112
var exportedLibrary = exportElement.exportedLibrary;
@@ -220,37 +220,32 @@ class LibraryBuilder {
220220
}
221221

222222
void buildEnumSyntheticConstructors() {
223-
bool hasConstructor(EnumFragmentImpl fragment) {
224-
for (var constructor in fragment.element.constructors) {
223+
bool hasConstructor(EnumElementImpl enumElement) {
224+
for (var constructor in enumElement.constructors) {
225225
if (constructor.isGenerative || constructor.name == 'new') {
226226
return true;
227227
}
228228
}
229229
return false;
230230
}
231231

232-
for (var enumFragment in element.topLevelElements) {
233-
if (enumFragment is! EnumFragmentImpl) continue;
234-
if (hasConstructor(enumFragment)) continue;
232+
for (var enumElement in element.enums) {
233+
if (hasConstructor(enumElement)) continue;
235234

236-
var fragment = ConstructorFragmentImpl(name: 'new')
235+
var constructorFragment = ConstructorFragmentImpl(name: 'new')
237236
..isConst = true
238-
..isSynthetic = true;
239-
fragment.typeName = enumFragment.name;
237+
..isSynthetic = true
238+
..typeName = enumElement.name;
239+
enumElement.firstFragment.addConstructor(constructorFragment);
240240

241-
var element = ConstructorElementImpl(
242-
name: fragment.name,
243-
reference: enumFragment.element.reference
241+
var constructorElement = ConstructorElementImpl(
242+
name: constructorFragment.name,
243+
reference: enumElement.reference
244244
.getChild('@constructor')
245245
.addChild('new'),
246-
firstFragment: fragment,
246+
firstFragment: constructorFragment,
247247
);
248-
enumFragment.element.addConstructor(element);
249-
250-
enumFragment.constructors = [
251-
...enumFragment.constructors,
252-
fragment,
253-
].toFixedList();
248+
enumElement.addConstructor(constructorElement);
254249
}
255250
}
256251

@@ -373,24 +368,23 @@ class LibraryBuilder {
373368
void setDefaultSupertypes() {
374369
var shouldResetClassHierarchies = false;
375370
var objectType = element.typeProvider.objectType;
376-
for (var interfaceFragment in element.topLevelElements) {
377-
switch (interfaceFragment) {
378-
case ClassFragmentImpl():
379-
var element = interfaceFragment.element;
380-
if (!element.isDartCoreObject) {
381-
if (element.supertype == null) {
382-
shouldResetClassHierarchies = true;
383-
element.supertype = objectType;
384-
}
385-
}
386-
case MixinFragmentImpl():
387-
var element = interfaceFragment.element;
388-
if (element.superclassConstraints.isEmpty) {
389-
shouldResetClassHierarchies = true;
390-
element.superclassConstraints = [objectType];
391-
}
371+
372+
for (var classElement in element.classes) {
373+
if (!classElement.isDartCoreObject) {
374+
if (classElement.supertype == null) {
375+
shouldResetClassHierarchies = true;
376+
classElement.supertype = objectType;
377+
}
392378
}
393379
}
380+
381+
for (var mixinElement in element.mixins) {
382+
if (mixinElement.superclassConstraints.isEmpty) {
383+
shouldResetClassHierarchies = true;
384+
mixinElement.superclassConstraints = [objectType];
385+
}
386+
}
387+
394388
if (shouldResetClassHierarchies) {
395389
element.session.classHierarchy.removeOfLibraries({uri});
396390
}

pkg/analyzer/test/src/summary/elements/library_fragment_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1509,7 +1509,7 @@ package:test/a.dart
15091509
for (var fragmentUri in fragmentUris) {
15101510
sink.writelnWithIndent(fragmentUri);
15111511
sink.withIndent(() {
1512-
var fragment = library.units.singleWhere((fragment) {
1512+
var fragment = library.fragments.singleWhere((fragment) {
15131513
return fragment.source.uri == fragmentUri;
15141514
});
15151515

0 commit comments

Comments
 (0)