Skip to content

Commit 40a85e2

Browse files
committed
fix up enum / mixin as well
1 parent 26cd594 commit 40a85e2

18 files changed

+513
-809
lines changed

lib/src/generator/templates.aot_renderers_for_html.dart

Lines changed: 245 additions & 411 deletions
Large diffs are not rendered by default.

lib/src/generator/templates.aot_renderers_for_md.dart

Lines changed: 203 additions & 286 deletions
Large diffs are not rendered by default.

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1696,6 +1696,13 @@ class _Renderer_Class extends RendererBase<Class> {
16961696
parent: r);
16971697
},
16981698
),
1699+
'hasModifiers': Property(
1700+
getValue: (CT_ c) => c.hasModifiers,
1701+
renderVariable: (CT_ c, Property<CT_> self,
1702+
List<String> remainingNames) =>
1703+
self.renderSimpleVariable(c, remainingNames, 'bool'),
1704+
getBool: (CT_ c) => c.hasModifiers == true,
1705+
),
16991706
'hasPublicMixedInTypes': Property(
17001707
getValue: (CT_ c) => c.hasPublicMixedInTypes,
17011708
renderVariable: (CT_ c, Property<CT_> self,
@@ -4284,7 +4291,20 @@ class _Renderer_Enum extends RendererBase<Enum> {
42844291
_propertyMapCache.putIfAbsent(
42854292
CT_,
42864293
() => {
4287-
..._Renderer_Class.propertyMap<CT_>(),
4294+
..._Renderer_InheritingContainer.propertyMap<CT_>(),
4295+
'inheritanceChain': Property(
4296+
getValue: (CT_ c) => c.inheritanceChain,
4297+
renderVariable: (CT_ c, Property<CT_> self,
4298+
List<String> remainingNames) =>
4299+
self.renderSimpleVariable(
4300+
c, remainingNames, 'List<InheritingContainer>'),
4301+
renderIterable: (CT_ c, RendererBase<CT_> r,
4302+
List<MustachioNode> ast, StringSink sink) {
4303+
return c.inheritanceChain.map((e) =>
4304+
_render_InheritingContainer(e, ast, r.template, sink,
4305+
parent: r));
4306+
},
4307+
),
42884308
'kind': Property(
42894309
getValue: (CT_ c) => c.kind,
42904310
renderVariable:
@@ -4515,13 +4535,6 @@ class _Renderer_Extension extends RendererBase<Extension> {
45154535
parent: r);
45164536
},
45174537
),
4518-
'hasPublicConstructors': Property(
4519-
getValue: (CT_ c) => c.hasPublicConstructors,
4520-
renderVariable: (CT_ c, Property<CT_> self,
4521-
List<String> remainingNames) =>
4522-
self.renderSimpleVariable(c, remainingNames, 'bool'),
4523-
getBool: (CT_ c) => c.hasPublicConstructors == true,
4524-
),
45254538
'href': Property(
45264539
getValue: (CT_ c) => c.href,
45274540
renderVariable:
@@ -4579,19 +4592,6 @@ class _Renderer_Extension extends RendererBase<Extension> {
45794592
_render_String(c.name, ast, r.template, sink, parent: r);
45804593
},
45814594
),
4582-
'publicConstructorsSorted': Property(
4583-
getValue: (CT_ c) => c.publicConstructorsSorted,
4584-
renderVariable: (CT_ c, Property<CT_> self,
4585-
List<String> remainingNames) =>
4586-
self.renderSimpleVariable(
4587-
c, remainingNames, 'Iterable<Constructor>'),
4588-
renderIterable: (CT_ c, RendererBase<CT_> r,
4589-
List<MustachioNode> ast, StringSink sink) {
4590-
return c.publicConstructorsSorted.map((e) =>
4591-
_render_Constructor(e, ast, r.template, sink,
4592-
parent: r));
4593-
},
4594-
),
45954595
'referenceChildren': Property(
45964596
getValue: (CT_ c) => c.referenceChildren,
45974597
renderVariable: (CT_ c, Property<CT_> self,
@@ -13346,11 +13346,11 @@ class _Renderer_TopLevelContainer extends RendererBase<TopLevelContainer> {
1334613346
renderVariable: (CT_ c, Property<CT_> self,
1334713347
List<String> remainingNames) =>
1334813348
self.renderSimpleVariable(
13349-
c, remainingNames, 'Iterable<Class>'),
13349+
c, remainingNames, 'Iterable<Container>'),
1335013350
renderIterable: (CT_ c, RendererBase<CT_> r,
1335113351
List<MustachioNode> ast, StringSink sink) {
1335213352
return c.publicClassesSorted.map((e) =>
13353-
_render_Class(e, ast, r.template, sink, parent: r));
13353+
_render_Container(e, ast, r.template, sink, parent: r));
1335413354
},
1335513355
),
1335613356
'publicConstants': Property(

lib/src/model/class.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ class Class extends InheritingContainer with Constructable {
214214
@override
215215
String get kind => 'class';
216216

217+
List<InheritingContainer> _inheritanceChain;
218+
217219
/// Not the same as superChain as it may include mixins.
218220
/// It's really not even the same as ordinary Dart inheritance, either,
219221
/// because we pretend that interfaces are part of the inheritance chain
220222
/// to include them in the set of things we might link to for documentation
221223
/// purposes in abstract classes.
222-
List<InheritingContainer> _inheritanceChain;
223-
224224
@override
225225
List<InheritingContainer> get inheritanceChain {
226226
if (_inheritanceChain == null) {

lib/src/model/enum.dart

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,26 @@ import 'package:analyzer/dart/element/element.dart';
77
import 'package:dartdoc/src/model/model.dart';
88
import 'package:dartdoc/src/render/enum_field_renderer.dart';
99

10-
class Enum extends Class {
10+
class Enum extends InheritingContainer {
1111
Enum(ClassElement element, Library library, PackageGraph packageGraph)
1212
: super(element, library, packageGraph);
1313

14+
List<InheritingContainer> _inheritanceChain;
15+
16+
@override
17+
List<InheritingContainer> get inheritanceChain {
18+
if (_inheritanceChain == null) {
19+
_inheritanceChain = [];
20+
_inheritanceChain.add(this);
21+
22+
for (var c
23+
in superChain.map((e) => (e.modelElement as InheritingContainer))) {
24+
_inheritanceChain.addAll(c.inheritanceChain);
25+
}
26+
}
27+
return _inheritanceChain.toList(growable: false);
28+
}
29+
1430
@override
1531
String get kind => 'enum';
1632
}
@@ -64,7 +80,7 @@ class EnumField extends Field {
6480
assert(!(canonicalLibrary == null || canonicalEnclosingContainer == null));
6581
assert(canonicalLibrary == library);
6682
assert(canonicalEnclosingContainer == enclosingElement);
67-
return '${package.baseHref}${enclosingElement.library.dirName}/${(enclosingElement as Class).fileName}';
83+
return '${package.baseHref}${enclosingElement.library.dirName}/${enclosingElement.fileName}';
6884
}
6985

7086
@override

lib/src/model/extension.dart

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,4 @@ class Extension extends Container implements EnclosedElement {
127127
...super.referenceChildren,
128128
};
129129
}
130-
131-
@override
132-
bool get hasPublicConstructors => false;
133-
134-
@override
135-
Iterable<Constructor> get publicConstructorsSorted => [];
136130
}

lib/src/model/field.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class Field extends ModelElement
5656
}
5757

5858
@override
59-
ModelElement get enclosingElement {
59+
Container get enclosingElement {
6060
_enclosingContainer ??=
6161
ModelElement.from(field.enclosingElement, library, packageGraph);
6262
return _enclosingContainer;

lib/src/model/inheriting_container.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,11 +289,9 @@ abstract class InheritingContainer extends Container
289289
// [packageGraph.specialClasses] is not available yet.
290290
bool _isDartCoreObject(ClassElement e) =>
291291
e.name == 'Object' && e.library.name == 'dart.core';
292-
if (!(inheritanceChainElements
292+
assert(inheritanceChainElements
293293
.contains(imap[nameObj].enclosingElement) ||
294-
_isDartCoreObject(imap[nameObj].enclosingElement))) {
295-
print('wtf');
296-
}
294+
_isDartCoreObject(imap[nameObj].enclosingElement));
297295

298296
// If the concrete object from [InheritanceManager3.getInheritedConcreteMap2]
299297
// is farther from this class in the inheritance chain than the one

lib/src/model/top_level_container.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ abstract class TopLevelContainer implements Nameable {
5151
Iterable<Class> get publicClasses => model_utils.filterNonPublic(classes);
5252

5353
List<Class> _publicClassesSorted;
54-
Iterable<Class> get publicClassesSorted =>
54+
// TODO(jcollins-g): Setting this type parameter to `Container` magically
55+
// fixes a number of type problems in the AOT compiler, but I am mystified as
56+
// to why that should be the case.
57+
Iterable<Container> get publicClassesSorted =>
5558
_publicClassesSorted ??= publicClasses.toList()..sort(byName);
5659

5760
Iterable<Extension> get publicExtensions =>
File renamed without changes.

0 commit comments

Comments
 (0)