Skip to content

Commit 46947ba

Browse files
authored
Rename Library.allClasses; tidy other collections (#3747)
1 parent 820505e commit 46947ba

11 files changed

+132
-151
lines changed

lib/src/element_type.dart

+6-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ library;
1010
import 'package:analyzer/dart/element/element.dart';
1111
import 'package:analyzer/dart/element/nullability_suffix.dart';
1212
import 'package:analyzer/dart/element/type.dart';
13+
import 'package:analyzer/dart/element/type_system.dart';
1314
import 'package:dartdoc/src/model/comment_referable.dart';
1415
import 'package:dartdoc/src/model/model.dart';
1516
import 'package:dartdoc/src/render/element_type_renderer.dart';
@@ -305,6 +306,8 @@ abstract class DefinedElementType extends ElementType {
305306
return canonicalClass.isPublic;
306307
}
307308

309+
TypeSystem get _typeSystem => library.element.typeSystem;
310+
308311
DartType get _bound => type;
309312

310313
/// This type, instantiated to bounds if it isn't already.
@@ -313,7 +316,7 @@ abstract class DefinedElementType extends ElementType {
313316
final bound = _bound;
314317
if (bound is InterfaceType &&
315318
!bound.typeArguments.every((t) => t is InterfaceType)) {
316-
return library.typeSystem.instantiateInterfaceToBounds(
319+
return _typeSystem.instantiateInterfaceToBounds(
317320
element: bound.element, nullabilitySuffix: _bound.nullabilitySuffix);
318321
} else {
319322
return _bound;
@@ -324,7 +327,7 @@ abstract class DefinedElementType extends ElementType {
324327
/// of [type].
325328
@override
326329
bool isSubtypeOf(ElementType type) =>
327-
library.typeSystem.isSubtypeOf(instantiatedType, type.instantiatedType);
330+
_typeSystem.isSubtypeOf(instantiatedType, type.instantiatedType);
328331

329332
/// Whether at least one supertype (including via mixins and interfaces) is
330333
/// equivalent to or a subtype of `this` when instantiated to bounds.
@@ -334,7 +337,7 @@ abstract class DefinedElementType extends ElementType {
334337
if (type is InterfaceType) {
335338
var superTypes = type.allSupertypes;
336339
for (var superType in superTypes) {
337-
if (library.typeSystem.isSubtypeOf(superType, instantiatedType)) {
340+
if (_typeSystem.isSubtypeOf(superType, instantiatedType)) {
338341
return true;
339342
}
340343
}

lib/src/generator/generator_frontend.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ class GeneratorFrontEnd implements Generator {
164164
indexAccumulator.add(lib);
165165
_generatorBackend.generateLibrary(packageGraph, lib);
166166

167-
for (var class_ in lib.allClasses.whereDocumented) {
167+
for (var class_ in lib.classesAndExceptions.whereDocumented) {
168168
indexAccumulator.add(class_);
169169
_generatorBackend.generateClass(packageGraph, lib, class_);
170170

lib/src/generator/templates.runtime_renderers.dart

+15-29
Original file line numberDiff line numberDiff line change
@@ -8093,18 +8093,6 @@ class _Renderer_Library extends RendererBase<Library> {
80938093
parent: r);
80948094
},
80958095
),
8096-
'allClasses': Property(
8097-
getValue: (CT_ c) => c.allClasses,
8098-
renderVariable: (CT_ c, Property<CT_> self,
8099-
List<String> remainingNames) =>
8100-
self.renderSimpleVariable(
8101-
c, remainingNames, 'List<Class>'),
8102-
renderIterable: (CT_ c, RendererBase<CT_> r,
8103-
List<MustachioNode> ast, StringSink sink) {
8104-
return c.allClasses.map((e) =>
8105-
_render_Class(e, ast, r.template, sink, parent: r));
8106-
},
8107-
),
81088096
'allModelElements': Property(
81098097
getValue: (CT_ c) => c.allModelElements,
81108098
renderVariable: (CT_ c, Property<CT_> self,
@@ -8188,6 +8176,18 @@ class _Renderer_Library extends RendererBase<Library> {
81888176
_render_Class(e, ast, r.template, sink, parent: r));
81898177
},
81908178
),
8179+
'classesAndExceptions': Property(
8180+
getValue: (CT_ c) => c.classesAndExceptions,
8181+
renderVariable: (CT_ c, Property<CT_> self,
8182+
List<String> remainingNames) =>
8183+
self.renderSimpleVariable(
8184+
c, remainingNames, 'List<Class>'),
8185+
renderIterable: (CT_ c, RendererBase<CT_> r,
8186+
List<MustachioNode> ast, StringSink sink) {
8187+
return c.classesAndExceptions.map((e) =>
8188+
_render_Class(e, ast, r.template, sink, parent: r));
8189+
},
8190+
),
81918191
'compilationUnitElement': Property(
81928192
getValue: (CT_ c) => c.compilationUnitElement,
81938193
renderVariable: (CT_ c, Property<CT_> self,
@@ -8655,19 +8655,6 @@ class _Renderer_Library extends RendererBase<Library> {
86558655
parent: r);
86568656
},
86578657
),
8658-
'typeSystem': Property(
8659-
getValue: (CT_ c) => c.typeSystem,
8660-
renderVariable: (CT_ c, Property<CT_> self,
8661-
List<String> remainingNames) =>
8662-
self.renderSimpleVariable(
8663-
c, remainingNames, 'TypeSystem'),
8664-
isNullValue: (CT_ c) => false,
8665-
renderValue: (CT_ c, RendererBase<CT_> r,
8666-
List<MustachioNode> ast, StringSink sink) {
8667-
renderSimple(c.typeSystem, ast, r.template, sink,
8668-
parent: r, getters: _invisibleGetters['TypeSystem']!);
8669-
},
8670-
),
86718658
'typedefs': Property(
86728659
getValue: (CT_ c) => c.typedefs,
86738660
renderVariable: (CT_ c, Property<CT_> self,
@@ -12435,7 +12422,7 @@ class _Renderer_Package extends RendererBase<Package> {
1243512422
}
1243612423
}
1243712424

12438-
String renderSearchPage(PackageTemplateData context, Template template) {
12425+
String renderError(PackageTemplateData context, Template template) {
1243912426
var buffer = StringBuffer();
1244012427
_render_PackageTemplateData(context, template.ast, template, buffer);
1244112428
return buffer.toString();
@@ -12673,13 +12660,13 @@ class _Renderer_PackageTemplateData extends RendererBase<PackageTemplateData> {
1267312660
}
1267412661
}
1267512662

12676-
String renderIndex(PackageTemplateData context, Template template) {
12663+
String renderSearchPage(PackageTemplateData context, Template template) {
1267712664
var buffer = StringBuffer();
1267812665
_render_PackageTemplateData(context, template.ast, template, buffer);
1267912666
return buffer.toString();
1268012667
}
1268112668

12682-
String renderError(PackageTemplateData context, Template template) {
12669+
String renderIndex(PackageTemplateData context, Template template) {
1268312670
var buffer = StringBuffer();
1268412671
_render_PackageTemplateData(context, template.ast, template, buffer);
1268512672
return buffer.toString();
@@ -16690,7 +16677,6 @@ const _invisibleGetters = {
1669016677
'name',
1669116678
'runtimeType'
1669216679
},
16693-
'TypeSystem': {'hashCode', 'runtimeType'},
1669416680
'int': {
1669516681
'bitLength',
1669616682
'hashCode',

lib/src/model/library.dart

+59-69
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import 'dart:collection';
66

77
import 'package:analyzer/dart/element/element.dart';
88
import 'package:analyzer/dart/element/scope.dart';
9-
import 'package:analyzer/dart/element/type_system.dart';
109
import 'package:analyzer/source/line_info.dart';
1110
// ignore: implementation_imports
1211
import 'package:analyzer/src/generated/sdk.dart' show SdkLibrary;
@@ -58,7 +57,7 @@ class Library extends ModelElement
5857
// Initialize the list of elements defined in this library and
5958
// exported via its export directives.
6059
...element.exportNamespace.definedNames.values,
61-
// TODO(jcollins-g): Consider switch to [_libraryElement.topLevelElements].
60+
// TODO(jcollins-g): Consider switch to `element.topLevelElements`.
6261
..._getDefinedElements(element.definingCompilationUnit),
6362
...element.parts
6463
.map((e) => e.uri)
@@ -110,21 +109,6 @@ class Library extends ModelElement
110109
CompilationUnitElement get compilationUnitElement =>
111110
element.definingCompilationUnit;
112111

113-
@override
114-
Iterable<Class> get classes => allClasses.where((c) => !c.isErrorOrException);
115-
116-
@override
117-
late final List<Extension> extensions = _exportedAndLocalElements
118-
.whereType<ExtensionElement>()
119-
.map((e) => getModelFor(e, this) as Extension)
120-
.toList(growable: false);
121-
122-
@override
123-
late final List<ExtensionType> extensionTypes = _exportedAndLocalElements
124-
.whereType<ExtensionTypeElement>()
125-
.map((e) => getModelFor(e, this) as ExtensionType)
126-
.toList(growable: false);
127-
128112
SdkLibrary? get _sdkLib =>
129113
packageGraph.sdkLibrarySources[element.librarySource];
130114

@@ -144,10 +128,6 @@ class Library extends ModelElement
144128
return true;
145129
}
146130

147-
@override
148-
Iterable<TopLevelVariable> get constants =>
149-
_variables.where((v) => v.isConst);
150-
151131
/// Map of each import prefix ('import "foo" as prefix;') to the set of
152132
/// libraries which are imported via that prefix.
153133
Map<String, Set<Library>> get _prefixToLibrary {
@@ -203,22 +183,6 @@ class Library extends ModelElement
203183
@override
204184
ModelElement? get enclosingElement => null;
205185

206-
@override
207-
late final List<Enum> enums = _exportedAndLocalElements
208-
.whereType<EnumElement>()
209-
.map((e) => getModelFor(e, this) as Enum)
210-
.toList(growable: false);
211-
212-
@override
213-
late final List<Mixin> mixins = _exportedAndLocalElements
214-
.whereType<MixinElement>()
215-
.map((e) => getModelFor(e, this) as Mixin)
216-
.toList(growable: false);
217-
218-
@override
219-
late final List<Class> exceptions =
220-
allClasses.where((c) => c.isErrorOrException).toList(growable: false);
221-
222186
@override
223187
String get filePath => '${library.dirName}/$fileName';
224188

@@ -235,12 +199,6 @@ class Library extends ModelElement
235199
@override
236200
String get belowSidebarPath => sidebarPath;
237201

238-
@override
239-
late final List<ModelFunction> functions = _exportedAndLocalElements
240-
.whereType<FunctionElement>()
241-
.map((e) => getModelFor(e, this) as ModelFunction)
242-
.toList(growable: false);
243-
244202
@override
245203
String? get href {
246204
if (!identical(canonicalModelElement, this)) {
@@ -328,30 +286,62 @@ class Library extends ModelElement
328286
late final PackageMeta? packageMeta =
329287
packageGraph.packageMetaProvider.fromElement(element, config.sdkDir);
330288

331-
/// All variables ("properties") except constants.
289+
late final List<Class> classesAndExceptions =
290+
_elementsOfType<ClassElement, Class>();
291+
332292
@override
333-
late final List<TopLevelVariable> properties =
334-
_variables.where((v) => !v.isConst).toList(growable: false);
293+
Iterable<Class> get classes =>
294+
classesAndExceptions.where((c) => !c.isErrorOrException);
335295

336296
@override
337-
late final List<Typedef> typedefs = _exportedAndLocalElements
338-
.whereType<TypeAliasElement>()
339-
.map((e) => packageGraph.getModelFor(e, this) as Typedef)
340-
.toList(growable: false);
297+
Iterable<TopLevelVariable> get constants =>
298+
_variables.where((v) => v.isConst);
341299

342-
TypeSystem get typeSystem => element.typeSystem;
300+
@override
301+
late final List<Enum> enums = _elementsOfType<EnumElement, Enum>();
343302

344-
late final List<Class> allClasses = _exportedAndLocalElements
345-
.whereType<ClassElement>()
346-
.map((e) => packageGraph.getModelFor(e, this) as Class)
303+
@override
304+
late final List<Class> exceptions = classesAndExceptions
305+
.where((c) => c.isErrorOrException)
347306
.toList(growable: false);
348307

308+
@override
309+
late final List<Extension> extensions =
310+
_elementsOfType<ExtensionElement, Extension>();
311+
312+
@override
313+
late final List<ExtensionType> extensionTypes =
314+
_elementsOfType<ExtensionTypeElement, ExtensionType>();
315+
316+
@override
317+
late final List<ModelFunction> functions =
318+
_elementsOfType<FunctionElement, ModelFunction>();
319+
320+
@override
321+
late final List<Mixin> mixins = _elementsOfType<MixinElement, Mixin>();
322+
323+
@override
324+
late final List<TopLevelVariable> properties =
325+
_variables.where((v) => !v.isConst).toList(growable: false);
326+
327+
@override
328+
late final List<Typedef> typedefs =
329+
_elementsOfType<TypeAliasElement, Typedef>();
330+
331+
List<U> _elementsOfType<T extends Element, U extends ModelElement>() =>
332+
_exportedAndLocalElements
333+
.whereType<T>()
334+
.map((e) => packageGraph.getModelFor(e, this) as U)
335+
.toList(growable: false);
336+
337+
/// All top-level variables, including "properties" and constants.
349338
List<TopLevelVariable> get _variables {
350-
var elements =
351-
_exportedAndLocalElements.whereType<TopLevelVariableElement>().toSet();
352-
elements.addAll(_exportedAndLocalElements
353-
.whereType<PropertyAccessorElement>()
354-
.map((a) => a.variable as TopLevelVariableElement));
339+
var elements = {
340+
..._exportedAndLocalElements.whereType<TopLevelVariableElement>(),
341+
..._exportedAndLocalElements
342+
.whereType<PropertyAccessorElement>()
343+
.map((a) => a.variable as TopLevelVariableElement)
344+
};
355345
var variables = <TopLevelVariable>[];
356346
for (var element in elements) {
357347
Accessor? getter;
@@ -378,15 +368,15 @@ class Library extends ModelElement
378368
late final HashMap<Element, Set<ModelElement>> modelElementsMap = () {
379369
var modelElements = HashMap<Element, Set<ModelElement>>();
380370
for (var modelElement in <ModelElement>[
381-
...library.constants,
382-
...library.functions,
383-
...library.properties,
384-
...library.typedefs,
385-
...library.extensions.expand((e) => [e, ...e.allModelElements]),
386-
...library.extensionTypes.expand((e) => [e, ...e.allModelElements]),
387-
...library.allClasses.expand((c) => [c, ...c.allModelElements]),
388-
...library.enums.expand((e) => [e, ...e.allModelElements]),
389-
...library.mixins.expand((m) => [m, ...m.allModelElements]),
371+
...constants,
372+
...functions,
373+
...properties,
374+
...typedefs,
375+
...extensions.expand((e) => [e, ...e.allModelElements]),
376+
...extensionTypes.expand((e) => [e, ...e.allModelElements]),
377+
...classesAndExceptions.expand((c) => [c, ...c.allModelElements]),
378+
...enums.expand((e) => [e, ...e.allModelElements]),
379+
...mixins.expand((m) => [m, ...m.allModelElements]),
390380
]) {
391381
modelElements
392382
.putIfAbsent(modelElement.element, () => {})
@@ -454,7 +444,7 @@ class Library extends ModelElement
454444
var libraryMembers = [
455445
...library.extensions,
456446
...library.extensionTypes,
457-
...library.allClasses,
447+
...library.classesAndExceptions,
458448
...library.enums,
459449
...library.mixins,
460450
...library.constants,

lib/src/model/package.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ class Package extends LibraryContainer
294294
addToCategories(
295295
extensionType, (c) => c.extensionTypes.add(extensionType));
296296
}
297-
for (var class_ in library.allClasses) {
297+
for (var class_ in library.classesAndExceptions) {
298298
addToCategories(class_, (c) => c.addClass(class_));
299299
}
300300
for (var enum_ in library.enums) {

lib/src/model/package_graph.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class PackageGraph with CommentReferable, Nameable {
151151
// all packages are picked up.
152152
for (var package in _documentedPackages) {
153153
for (var library in package.libraries) {
154-
_addToImplementers(library.allClasses);
154+
_addToImplementers(library.classesAndExceptions);
155155
_addToImplementers(library.mixins);
156156
_addToImplementers(library.extensionTypes);
157157
_extensions.addAll(library.extensions);
@@ -645,7 +645,7 @@ class PackageGraph with CommentReferable, Nameable {
645645
/// The String name representing the `Object` type.
646646
late final String dartCoreObject = libraries
647647
.firstWhereOrNull((library) => library.name == 'dart:core')
648-
?.allClasses
648+
?.classes
649649
.firstWhereOrNull((c) => c.name == 'Object')
650650
?.linkedName ??
651651
'Object';

lib/src/model/top_level_container.dart

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ import 'package:dartdoc/src/model_utils.dart' as model_utils;
1212
/// Do not call any methods or members excepting [name] and the private Lists
1313
/// below before finishing initialization of a [TopLevelContainer].
1414
mixin TopLevelContainer implements Nameable {
15+
/// All top-level classes except those that subtype [Error] or [Exception].
1516
Iterable<Class> get classes;
1617

18+
/// All classes that subtype [Error] or [Exception].
19+
Iterable<Class> get exceptions;
20+
1721
Iterable<Extension> get extensions;
1822

1923
Iterable<ExtensionType> get extensionTypes;
@@ -22,10 +26,10 @@ mixin TopLevelContainer implements Nameable {
2226

2327
Iterable<Mixin> get mixins;
2428

25-
Iterable<Class> get exceptions;
26-
29+
/// All top-level constants.
2730
Iterable<TopLevelVariable> get constants;
2831

32+
/// All top-level variables ("properties") except constants.
2933
Iterable<TopLevelVariable> get properties;
3034

3135
Iterable<ModelFunction> get functions;

0 commit comments

Comments
 (0)