diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart index 67797eb8b1..3d6ac2bfaa 100644 --- a/lib/src/generator/templates.runtime_renderers.dart +++ b/lib/src/generator/templates.runtime_renderers.dart @@ -12509,18 +12509,6 @@ class _Renderer_Package extends RendererBase { parent: r); }, ), - 'publicLibraries': Property( - getValue: (CT_ c) => c.publicLibraries, - renderVariable: (CT_ c, Property self, - List remainingNames) => - self.renderSimpleVariable( - c, remainingNames, 'Iterable'), - renderIterable: (CT_ c, RendererBase r, - List ast, StringSink sink) { - return c.publicLibraries.map((e) => - _render_Library(e, ast, r.template, sink, parent: r)); - }, - ), 'referenceChildren': Property( getValue: (CT_ c) => c.referenceChildren, renderVariable: (CT_ c, Property self, @@ -16917,7 +16905,6 @@ const _invisibleGetters = { 'ModelNode': {'hashCode', 'runtimeType', 'sourceCode'}, 'ModelObjectBuilder': {'hashCode', 'runtimeType'}, 'PackageGraph': { - 'allCanonicalModelElements', 'allConstructedModelElements', 'allExtensionsAdded', 'allHrefs', @@ -16933,7 +16920,6 @@ const _invisibleGetters = { 'defaultPackageName', 'displayName', 'documentedExtensions', - 'documentedPackages', 'extensions', 'hasEmbedderSdk', 'hasFooterVersion', @@ -16941,7 +16927,6 @@ const _invisibleGetters = { 'implementors', 'inheritThrough', 'inheritanceManager', - 'invisibleAnnotations', 'libraries', 'libraryCount', 'libraryExports', @@ -16961,7 +16946,6 @@ const _invisibleGetters = { 'rendererFactory', 'resourceProvider', 'runtimeType', - 'sdk', 'sdkLibrarySources', 'specialClasses' }, diff --git a/lib/src/model/annotation.dart b/lib/src/model/annotation.dart index aecfbf4f6c..8f27147f12 100644 --- a/lib/src/model/annotation.dart +++ b/lib/src/model/annotation.dart @@ -5,6 +5,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/attribute.dart'; +import 'package:dartdoc/src/model/class.dart'; import 'package:dartdoc/src/model/getter_setter_combo.dart'; import 'package:dartdoc/src/model/library.dart'; import 'package:dartdoc/src/model/model_object_builder.dart'; @@ -53,11 +54,19 @@ class Annotation extends Attribute with ModelBuilder { } @override - bool get isPublic => - modelType.isPublic && - modelType is DefinedElementType && - !packageGraph.invisibleAnnotations - .contains((modelType as DefinedElementType).modelElement); + bool get isPublic { + final modelType = this.modelType; + if (!modelType.isPublic) { + return false; + } + if (modelType is! DefinedElementType) { + return false; + } + + var modelElement = modelType.modelElement; + return modelElement is Class && + packageGraph.isAnnotationVisible(modelElement); + } @override bool operator ==(Object other) => diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart index 333be988e0..8e8f578877 100644 --- a/lib/src/model/library.dart +++ b/lib/src/model/library.dart @@ -218,8 +218,7 @@ class Library extends ModelElement nameFromPath = _restoredUri; if (nameFromPath.startsWith(schemaToHide)) { - nameFromPath = - nameFromPath.substring(schemaToHide.length, nameFromPath.length); + nameFromPath = nameFromPath.substring(schemaToHide.length); } if (nameFromPath.endsWith('.dart')) { const dartExtensionLength = '.dart'.length; diff --git a/lib/src/model/package.dart b/lib/src/model/package.dart index ea44f73111..a94ac27001 100644 --- a/lib/src/model/package.dart +++ b/lib/src/model/package.dart @@ -254,14 +254,6 @@ class Package extends LibraryContainer @override Package get package => this; - // Workaround for mustache4dart issue where templates do not recognize - // inherited properties as being in-context. - @override - Iterable get publicLibraries { - assert(libraries.every((l) => l.packageMeta == packageMeta)); - return super.publicLibraries; - } - /// The default, unnamed category. /// /// This is initialized by [initializeCategories]. diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart index a35af50b4b..ca5ed0a6a9 100644 --- a/lib/src/model/package_graph.dart +++ b/lib/src/model/package_graph.dart @@ -36,11 +36,14 @@ import 'package:meta/meta.dart'; class PackageGraph with CommentReferable, Nameable, ModelBuilder { PackageGraph.uninitialized( this.config, - this.sdk, + DartSdk sdk, this.hasEmbedderSdk, this.rendererFactory, this.packageMetaProvider, - ) : packageMeta = config.topLevelPackageMeta { + ) : packageMeta = config.topLevelPackageMeta, + sdkLibrarySources = { + for (var lib in sdk.sdkLibraries) sdk.mapDartUri(lib.shortName): lib + } { // Make sure the default package exists, even if it has no libraries. // This can happen for packages that only contain embedder SDKs. Package.fromPackageMeta(packageMeta, this); @@ -48,6 +51,8 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { final InheritanceManager3 inheritanceManager = InheritanceManager3(); + final Map sdkLibrarySources; + void dispose() { // Clear out any cached tool snapshots and temporary directories. // TODO(jcollins-g): Consider ownership change for these objects @@ -132,7 +137,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { // Emit warnings for any local package that has no libraries. // This must be done after the [allModelElements] traversal to be sure that // all packages are picked up. - for (var package in documentedPackages) { + for (var package in _documentedPackages) { for (var library in package.libraries) { _addToImplementors(library.allClasses); _addToImplementors(library.mixins); @@ -356,12 +361,6 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { ResourceProvider get resourceProvider => config.resourceProvider; - final DartSdk sdk; - - late final Map sdkLibrarySources = { - for (var lib in sdk.sdkLibraries) sdk.mapDartUri(lib.shortName): lib - }; - final Map _macros = {}; final Map _htmlFragments = {}; bool allLibrariesAdded = false; @@ -491,7 +490,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { publicPackages.where((p) => p.isLocal).toList(growable: false); /// Documented packages are documented somewhere (local or remote). - Iterable get documentedPackages => + Iterable get _documentedPackages => packages.where((p) => p.documentedWhere != DocumentLocation.missing); /// A mapping of all the [Library]s that export a given [LibraryElement]. @@ -671,7 +670,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { /// The set of [Class] objects that are similar to 'pragma' in that we should /// never count them as documentable annotations. - late final Set invisibleAnnotations = () { + late final Set _invisibleAnnotations = () { var pragmaSpecialClass = specialClasses[SpecialClass.pragma]; if (pragmaSpecialClass == null) { return const {}; @@ -679,8 +678,8 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { return {pragmaSpecialClass}; }(); - bool isAnnotationVisible(Class clazz) => - !invisibleAnnotations.contains(clazz); + bool isAnnotationVisible(Class class_) => + !_invisibleAnnotations.contains(class_); @override String toString() { @@ -897,9 +896,6 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { for (var library in _localLibraries) ...library.allModelElements ]; - Iterable get allCanonicalModelElements => - allLocalModelElements.where((e) => e.isCanonical); - /// Glob lookups can be expensive. Cache per filename. final _configSetsNodocFor = HashMap(); @@ -958,7 +954,7 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder { // on ambiguous resolution (see below) will change where they // resolve based on internal implementation details. var sortedPackages = packages.toList(growable: false)..sort(byName); - var sortedDocumentedPackages = documentedPackages.toList(growable: false) + var sortedDocumentedPackages = _documentedPackages.toList(growable: false) ..sort(byName); // Packages are the top priority. children.addEntries(sortedPackages.generateEntries()); diff --git a/test/options_test.dart b/test/options_test.dart index aecaaa81ff..915adb5d19 100644 --- a/test/options_test.dart +++ b/test/options_test.dart @@ -217,7 +217,8 @@ An example in an unusual dir. ); final packageGraph = await (await createPackageBuilder()).buildPackageGraph(); - final classFoo = packageGraph.allCanonicalModelElements + final classFoo = packageGraph.allLocalModelElements + .where((e) => e.isCanonical) .whereType() .firstWhere((c) => c.name == 'Foo'); expect(classFoo.documentationAsHtml, @@ -366,7 +367,8 @@ class Foo {} ); final packageGraph = await (await createPackageBuilder()).buildPackageGraph(); - final classFoo = packageGraph.allCanonicalModelElements + final classFoo = packageGraph.allLocalModelElements + .where((e) => e.isCanonical) .whereType() .firstWhere((c) => c.name == 'Foo'); expect(classFoo.displayedCategories, isNotEmpty);