Skip to content

Commit 68e0749

Browse files
authored
Privatize several members on PackageGraph (#3578)
1 parent 69302eb commit 68e0749

File tree

6 files changed

+32
-50
lines changed

6 files changed

+32
-50
lines changed

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12509,18 +12509,6 @@ class _Renderer_Package extends RendererBase<Package> {
1250912509
parent: r);
1251012510
},
1251112511
),
12512-
'publicLibraries': Property(
12513-
getValue: (CT_ c) => c.publicLibraries,
12514-
renderVariable: (CT_ c, Property<CT_> self,
12515-
List<String> remainingNames) =>
12516-
self.renderSimpleVariable(
12517-
c, remainingNames, 'Iterable<Library>'),
12518-
renderIterable: (CT_ c, RendererBase<CT_> r,
12519-
List<MustachioNode> ast, StringSink sink) {
12520-
return c.publicLibraries.map((e) =>
12521-
_render_Library(e, ast, r.template, sink, parent: r));
12522-
},
12523-
),
1252412512
'referenceChildren': Property(
1252512513
getValue: (CT_ c) => c.referenceChildren,
1252612514
renderVariable: (CT_ c, Property<CT_> self,
@@ -16917,7 +16905,6 @@ const _invisibleGetters = {
1691716905
'ModelNode': {'hashCode', 'runtimeType', 'sourceCode'},
1691816906
'ModelObjectBuilder': {'hashCode', 'runtimeType'},
1691916907
'PackageGraph': {
16920-
'allCanonicalModelElements',
1692116908
'allConstructedModelElements',
1692216909
'allExtensionsAdded',
1692316910
'allHrefs',
@@ -16933,15 +16920,13 @@ const _invisibleGetters = {
1693316920
'defaultPackageName',
1693416921
'displayName',
1693516922
'documentedExtensions',
16936-
'documentedPackages',
1693716923
'extensions',
1693816924
'hasEmbedderSdk',
1693916925
'hasFooterVersion',
1694016926
'hashCode',
1694116927
'implementors',
1694216928
'inheritThrough',
1694316929
'inheritanceManager',
16944-
'invisibleAnnotations',
1694516930
'libraries',
1694616931
'libraryCount',
1694716932
'libraryExports',
@@ -16961,7 +16946,6 @@ const _invisibleGetters = {
1696116946
'rendererFactory',
1696216947
'resourceProvider',
1696316948
'runtimeType',
16964-
'sdk',
1696516949
'sdkLibrarySources',
1696616950
'specialClasses'
1696716951
},

lib/src/model/annotation.dart

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analyzer/dart/element/element.dart';
66
import 'package:dartdoc/src/element_type.dart';
77
import 'package:dartdoc/src/model/attribute.dart';
8+
import 'package:dartdoc/src/model/class.dart';
89
import 'package:dartdoc/src/model/getter_setter_combo.dart';
910
import 'package:dartdoc/src/model/library.dart';
1011
import 'package:dartdoc/src/model/model_object_builder.dart';
@@ -53,11 +54,19 @@ class Annotation extends Attribute with ModelBuilder {
5354
}
5455

5556
@override
56-
bool get isPublic =>
57-
modelType.isPublic &&
58-
modelType is DefinedElementType &&
59-
!packageGraph.invisibleAnnotations
60-
.contains((modelType as DefinedElementType).modelElement);
57+
bool get isPublic {
58+
final modelType = this.modelType;
59+
if (!modelType.isPublic) {
60+
return false;
61+
}
62+
if (modelType is! DefinedElementType) {
63+
return false;
64+
}
65+
66+
var modelElement = modelType.modelElement;
67+
return modelElement is Class &&
68+
packageGraph.isAnnotationVisible(modelElement);
69+
}
6170

6271
@override
6372
bool operator ==(Object other) =>

lib/src/model/library.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,7 @@ class Library extends ModelElement
218218

219219
nameFromPath = _restoredUri;
220220
if (nameFromPath.startsWith(schemaToHide)) {
221-
nameFromPath =
222-
nameFromPath.substring(schemaToHide.length, nameFromPath.length);
221+
nameFromPath = nameFromPath.substring(schemaToHide.length);
223222
}
224223
if (nameFromPath.endsWith('.dart')) {
225224
const dartExtensionLength = '.dart'.length;

lib/src/model/package.dart

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,6 @@ class Package extends LibraryContainer
254254
@override
255255
Package get package => this;
256256

257-
// Workaround for mustache4dart issue where templates do not recognize
258-
// inherited properties as being in-context.
259-
@override
260-
Iterable<Library> get publicLibraries {
261-
assert(libraries.every((l) => l.packageMeta == packageMeta));
262-
return super.publicLibraries;
263-
}
264-
265257
/// The default, unnamed category.
266258
///
267259
/// This is initialized by [initializeCategories].

lib/src/model/package_graph.dart

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,23 @@ import 'package:meta/meta.dart';
3636
class PackageGraph with CommentReferable, Nameable, ModelBuilder {
3737
PackageGraph.uninitialized(
3838
this.config,
39-
this.sdk,
39+
DartSdk sdk,
4040
this.hasEmbedderSdk,
4141
this.rendererFactory,
4242
this.packageMetaProvider,
43-
) : packageMeta = config.topLevelPackageMeta {
43+
) : packageMeta = config.topLevelPackageMeta,
44+
sdkLibrarySources = {
45+
for (var lib in sdk.sdkLibraries) sdk.mapDartUri(lib.shortName): lib
46+
} {
4447
// Make sure the default package exists, even if it has no libraries.
4548
// This can happen for packages that only contain embedder SDKs.
4649
Package.fromPackageMeta(packageMeta, this);
4750
}
4851

4952
final InheritanceManager3 inheritanceManager = InheritanceManager3();
5053

54+
final Map<Source?, SdkLibrary> sdkLibrarySources;
55+
5156
void dispose() {
5257
// Clear out any cached tool snapshots and temporary directories.
5358
// TODO(jcollins-g): Consider ownership change for these objects
@@ -132,7 +137,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
132137
// Emit warnings for any local package that has no libraries.
133138
// This must be done after the [allModelElements] traversal to be sure that
134139
// all packages are picked up.
135-
for (var package in documentedPackages) {
140+
for (var package in _documentedPackages) {
136141
for (var library in package.libraries) {
137142
_addToImplementors(library.allClasses);
138143
_addToImplementors(library.mixins);
@@ -356,12 +361,6 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
356361

357362
ResourceProvider get resourceProvider => config.resourceProvider;
358363

359-
final DartSdk sdk;
360-
361-
late final Map<Source?, SdkLibrary> sdkLibrarySources = {
362-
for (var lib in sdk.sdkLibraries) sdk.mapDartUri(lib.shortName): lib
363-
};
364-
365364
final Map<String, String> _macros = {};
366365
final Map<String, String> _htmlFragments = {};
367366
bool allLibrariesAdded = false;
@@ -491,7 +490,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
491490
publicPackages.where((p) => p.isLocal).toList(growable: false);
492491

493492
/// Documented packages are documented somewhere (local or remote).
494-
Iterable<Package> get documentedPackages =>
493+
Iterable<Package> get _documentedPackages =>
495494
packages.where((p) => p.documentedWhere != DocumentLocation.missing);
496495

497496
/// A mapping of all the [Library]s that export a given [LibraryElement].
@@ -671,16 +670,16 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
671670

672671
/// The set of [Class] objects that are similar to 'pragma' in that we should
673672
/// never count them as documentable annotations.
674-
late final Set<Class> invisibleAnnotations = () {
673+
late final Set<Class> _invisibleAnnotations = () {
675674
var pragmaSpecialClass = specialClasses[SpecialClass.pragma];
676675
if (pragmaSpecialClass == null) {
677676
return const <Class>{};
678677
}
679678
return {pragmaSpecialClass};
680679
}();
681680

682-
bool isAnnotationVisible(Class clazz) =>
683-
!invisibleAnnotations.contains(clazz);
681+
bool isAnnotationVisible(Class class_) =>
682+
!_invisibleAnnotations.contains(class_);
684683

685684
@override
686685
String toString() {
@@ -897,9 +896,6 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
897896
for (var library in _localLibraries) ...library.allModelElements
898897
];
899898

900-
Iterable<ModelElement> get allCanonicalModelElements =>
901-
allLocalModelElements.where((e) => e.isCanonical);
902-
903899
/// Glob lookups can be expensive. Cache per filename.
904900
final _configSetsNodocFor = HashMap<String, bool>();
905901

@@ -958,7 +954,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
958954
// on ambiguous resolution (see below) will change where they
959955
// resolve based on internal implementation details.
960956
var sortedPackages = packages.toList(growable: false)..sort(byName);
961-
var sortedDocumentedPackages = documentedPackages.toList(growable: false)
957+
var sortedDocumentedPackages = _documentedPackages.toList(growable: false)
962958
..sort(byName);
963959
// Packages are the top priority.
964960
children.addEntries(sortedPackages.generateEntries());

test/options_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,8 @@ An example in an unusual dir.
217217
);
218218
final packageGraph =
219219
await (await createPackageBuilder()).buildPackageGraph();
220-
final classFoo = packageGraph.allCanonicalModelElements
220+
final classFoo = packageGraph.allLocalModelElements
221+
.where((e) => e.isCanonical)
221222
.whereType<Class>()
222223
.firstWhere((c) => c.name == 'Foo');
223224
expect(classFoo.documentationAsHtml,
@@ -366,7 +367,8 @@ class Foo {}
366367
);
367368
final packageGraph =
368369
await (await createPackageBuilder()).buildPackageGraph();
369-
final classFoo = packageGraph.allCanonicalModelElements
370+
final classFoo = packageGraph.allLocalModelElements
371+
.where((e) => e.isCanonical)
370372
.whereType<Class>()
371373
.firstWhere((c) => c.name == 'Foo');
372374
expect(classFoo.displayedCategories, isNotEmpty);

0 commit comments

Comments
 (0)