From 2fdf9f7cfaf8f2b81ea85749c6496759f3ae5970 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Fri, 2 Oct 2020 16:49:47 -0700 Subject: [PATCH 1/2] Adjust hierarchy for correct usage in mustache. Declare that Container mixes in TypeParameters, as the two classes which extend Container each already mix it in, and _head.html relies on a Container having a `hasGenericParameters` getter. Additional minor changes to Category for debugging, and for use in templates. --- lib/src/model/category.dart | 4 +--- lib/src/model/class.dart | 2 +- lib/src/model/container.dart | 2 +- lib/src/model/extension.dart | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/src/model/category.dart b/lib/src/model/category.dart index 9ae991b3c4..8d4eb3e5d9 100644 --- a/lib/src/model/category.dart +++ b/lib/src/model/category.dart @@ -88,7 +88,7 @@ class Category extends Nameable } else if (c is Extension) { _extensions.add(c); } else { - throw UnimplementedError('Unrecognized element'); + throw UnimplementedError('Unrecognized element: $c (${c.runtimeType})'); } } @@ -147,8 +147,6 @@ class Category extends Nameable @override String get href => isCanonical ? '${package.baseHref}$filePath' : null; - @Deprecated( - 'Public field is unused; will be removed as early as Dartdoc 1.0.0') String get categoryLabel => _categoryRenderer.renderCategoryLabel(this); @Deprecated( diff --git a/lib/src/model/class.dart b/lib/src/model/class.dart index 0fd67e918c..4496a29dfc 100644 --- a/lib/src/model/class.dart +++ b/lib/src/model/class.dart @@ -19,7 +19,7 @@ import 'package:meta/meta.dart'; /// **instance**: As with [Container], but also includes inherited children. /// **inherited**: Filtered getters giving only inherited children. class Class extends Container - with TypeParameters, Categorization, ExtensionTarget + with Categorization, ExtensionTarget implements EnclosedElement { // TODO(srawlins): To make final, remove public getter, setter, rename to be // public, and add `final` modifier. diff --git a/lib/src/model/container.dart b/lib/src/model/container.dart index 6c05b3c2f6..c5982d36a9 100644 --- a/lib/src/model/container.dart +++ b/lib/src/model/container.dart @@ -27,7 +27,7 @@ import 'package:meta/meta.dart'; /// **has** : boolean getters indicating whether the underlying getters are /// empty. Mostly for the templating system. /// **all** : Referring to all children. -abstract class Container extends ModelElement { +abstract class Container extends ModelElement with TypeParameters { Container(Element element, Library library, PackageGraph packageGraph) : super(element, library, packageGraph, null); diff --git a/lib/src/model/extension.dart b/lib/src/model/extension.dart index 9432ca98c6..8a4ebacd42 100644 --- a/lib/src/model/extension.dart +++ b/lib/src/model/extension.dart @@ -10,7 +10,7 @@ import 'package:dartdoc/src/quiver.dart' as quiver; /// Extension methods class Extension extends Container - with TypeParameters, Categorization + with Categorization implements EnclosedElement { ElementType extendedType; From d694e7f93c3accb4d99c0744d92cc3cbaf026c84 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Fri, 2 Oct 2020 16:56:08 -0700 Subject: [PATCH 2/2] Adjust TemplateData for correct template usage. * `navLinksWithGenerics` must contain Containers, so that fields like `hasGenericParameters` are statically available. * TemplateData must have a `homepage` field as it is referenced in `_search_sidebar` template, so it must always be available. --- lib/src/generator/template_data.dart | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/src/generator/template_data.dart b/lib/src/generator/template_data.dart index f48b9ee3b5..8ca6f7a49c 100644 --- a/lib/src/generator/template_data.dart +++ b/lib/src/generator/template_data.dart @@ -21,7 +21,7 @@ abstract class TemplateData { String get metaDescription; List get navLinks; - List get navLinksWithGenerics => []; + List get navLinksWithGenerics => []; Documentable get parent { if (navLinksWithGenerics.isEmpty) { return navLinks.isNotEmpty ? navLinks.last : null; @@ -33,6 +33,8 @@ abstract class TemplateData { bool get hasHomepage => false; + String get homepage => null; + String get htmlBase; T get self; String get version => htmlOptions.toolVersion; @@ -73,6 +75,7 @@ class PackageTemplateData extends TemplateData { @override bool get hasHomepage => package.hasHomepage; + @override String get homepage => package.homepage; /// empty for packages because they are at the root – not needed @@ -235,7 +238,7 @@ class ConstructorTemplateData extends TemplateData { @override List get navLinks => [packageGraph.defaultPackage, library]; @override - List get navLinksWithGenerics => [clazz]; + List get navLinksWithGenerics => [clazz]; @override @override String get htmlBase => '../../'; @@ -313,7 +316,7 @@ class MethodTemplateData extends TemplateData { @override List get navLinks => [packageGraph.defaultPackage, library]; @override - List get navLinksWithGenerics => [container]; + List get navLinksWithGenerics => [container]; @override String get htmlBase => '../../'; } @@ -347,7 +350,7 @@ class PropertyTemplateData extends TemplateData { @override List get navLinks => [packageGraph.defaultPackage, library]; @override - List get navLinksWithGenerics => [container]; + List get navLinksWithGenerics => [container]; @override String get htmlBase => '../../'; }