Skip to content

Refactor containers to better reflect current Dart behavior #2770

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
8 changes: 0 additions & 8 deletions lib/src/generator/generator_frontend.dart
Original file line number Diff line number Diff line change
Expand Up @@ -168,14 +168,6 @@ class GeneratorFrontEnd implements Generator {
indexAccumulator.add(mixin);
_generatorBackend.generateMixin(writer, packageGraph, lib, mixin);

for (var constructor in filterNonDocumented(mixin.constructors)) {
if (!constructor.isCanonical) continue;

indexAccumulator.add(constructor);
_generatorBackend.generateConstructor(
writer, packageGraph, lib, mixin, constructor);
}

for (var constant in filterNonDocumented(mixin.constantFields)) {
if (!constant.isCanonical) continue;
indexAccumulator.add(constant);
Expand Down
33 changes: 25 additions & 8 deletions lib/src/generator/template_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -173,34 +173,51 @@ class LibraryTemplateData extends TemplateData<Library>
}

/// Template data for Dart 2.1-style mixin declarations.
class MixinTemplateData extends ClassTemplateData<Mixin> {
final Mixin mixin;

class MixinTemplateData extends InheritingContainerTemplateData<Mixin> {
MixinTemplateData(
TemplateOptions htmlOptions,
PackageGraph packageGraph,
Library library,
this.mixin,
Mixin mixin,
LibrarySidebar _sidebarForLibrary,
ContainerSidebar _sidebarForContainer)
: super(htmlOptions, packageGraph, library, mixin, _sidebarForLibrary,
_sidebarForContainer);

Mixin get mixin => clazz;

@override
Mixin get self => mixin;
}

/// Template data for Dart classes.
class ClassTemplateData extends InheritingContainerTemplateData<Class> {
ClassTemplateData(
TemplateOptions htmlOptions,
PackageGraph packageGraph,
Library library,
Class clazz,
LibrarySidebar _sidebarForLibrary,
ContainerSidebar _sidebarForContainer)
: super(htmlOptions, packageGraph, library, clazz, _sidebarForLibrary,
_sidebarForContainer);

@override
Class get clazz => super.clazz;
}

/// Base template data class for [Class], [Enum], and [Mixin].
class ClassTemplateData<T extends Class> extends TemplateData<T>
abstract class InheritingContainerTemplateData<T extends InheritingContainer>
extends TemplateData<T>
implements TemplateDataWithLibrary<T>, TemplateDataWithContainer<T> {
final Class clazz;
final InheritingContainer clazz;
@override
final Library library;
Class _objectType;
final LibrarySidebar _sidebarForLibrary;
final ContainerSidebar _sidebarForContainer;

ClassTemplateData(
InheritingContainerTemplateData(
TemplateOptions htmlOptions,
PackageGraph packageGraph,
this.library,
Expand Down Expand Up @@ -335,7 +352,7 @@ class ConstructorTemplateData extends TemplateData<Constructor>
'for the Dart programming language.';
}

class EnumTemplateData extends ClassTemplateData<Enum> {
class EnumTemplateData extends InheritingContainerTemplateData<Enum> {
EnumTemplateData(
TemplateOptions htmlOptions,
PackageGraph packageGraph,
Expand Down
Loading