Skip to content

Commit fbb724c

Browse files
committed
Generate docs for enum static methods.
Fixes #3584 The GeneratorFrontEnd code was really long, and I think that made it easy to omit things. I've refactored it to reuse more code. Also, the repeated code had bugs: * For extensions and extension types, we likely _over_-documented, because we didn't omit things that we're canonical. * For enums, we omitted static methods and static fields (#3584). Also in this change: * Change some `clazz` and `eNum` parameter names to `class_` and `enum_`. More standard, and standard inside the analyzer. * Migrate methods_test.dart to use test_reflective_loader. * Add method tests for methods on classes, enums, mixins, extensions, and extension types. * In the shared testing code, add some code that prints out the in-memory files when a file cannot be read. Here's a snippet of what that looks like: ```none /temp/method_test/doc/ ├─ index.html ├─ __404error.html ├─ search.html ├─ lib/ │ ├─ lib-library.html │ ├─ lib-library-sidebar.html │ ├─ E-class.html │ ├─ E-enum-sidebar.html │ └─ E/ │ │ ├─ values-constant.html ```
1 parent 2760d25 commit fbb724c

14 files changed

+448
-574
lines changed

lib/src/generator/file_structure.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ abstract class FileStructure {
2424
// This should be the common case.
2525
FileStructure._fromModelElement(documentable),
2626
_ => throw UnimplementedError(
27-
'Tried to build a FileStructure for an unknown subtype of Documentable: ${documentable.runtimeType}')
27+
'Tried to build a FileStructure for an unknown subtype of '
28+
"Documentable: '${documentable.runtimeType}'")
2829
};
2930
}
3031

@@ -42,6 +43,8 @@ abstract class FileStructure {
4243
return switch (modelElement) {
4344
Library() => FileStructureImpl(modelElement.dirName, 'library'),
4445
Mixin() => FileStructureImpl(modelElement.name, 'mixin'),
46+
// Probably just an archaic state, but enums do not have a file suffix.
47+
Enum() => FileStructureImpl(modelElement.name, null),
4548
Class() => FileStructureImpl(modelElement.name, 'class'),
4649
ExtensionType() => FileStructureImpl(modelElement.name, 'extension-type'),
4750
Operator() => FileStructureImpl(

lib/src/generator/generator_backend.dart

+12-12
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@ abstract class GeneratorBackend {
125125
runtimeStats.incrementAccumulator('writtenCategoryFileCount');
126126
}
127127

128-
/// Emits documentation content for the [clazz].
129-
void generateClass(PackageGraph packageGraph, Library library, Class clazz) {
130-
var data = ClassTemplateData(options, packageGraph, library, clazz);
128+
/// Emits documentation content for the [class_].
129+
void generateClass(PackageGraph packageGraph, Library library, Class class_) {
130+
var data = ClassTemplateData(options, packageGraph, library, class_);
131131
var content = templates.renderClass(data);
132-
write(writer, clazz.filePath, data, content);
132+
write(writer, class_.filePath, data, content);
133133
runtimeStats.incrementAccumulator('writtenClassFileCount');
134134
}
135135

@@ -143,11 +143,11 @@ abstract class GeneratorBackend {
143143
runtimeStats.incrementAccumulator('writtenConstructorFileCount');
144144
}
145145

146-
/// Emits documentation content for the [eNum].
147-
void generateEnum(PackageGraph packageGraph, Library library, Enum eNum) {
148-
var data = EnumTemplateData(options, packageGraph, library, eNum);
146+
/// Emits documentation content for the [enum_].
147+
void generateEnum(PackageGraph packageGraph, Library library, Enum enum_) {
148+
var data = EnumTemplateData(options, packageGraph, library, enum_);
149149
var content = templates.renderEnum(data);
150-
write(writer, eNum.filePath, data, content);
150+
write(writer, enum_.filePath, data, content);
151151
runtimeStats.incrementAccumulator('writtenEnumFileCount');
152152
}
153153

@@ -189,9 +189,9 @@ abstract class GeneratorBackend {
189189

190190
/// Emits documentation content for the [method].
191191
void generateMethod(PackageGraph packageGraph, Library library,
192-
Container clazz, Method method) {
192+
Container container, Method method) {
193193
var data =
194-
MethodTemplateData(options, packageGraph, library, clazz, method);
194+
MethodTemplateData(options, packageGraph, library, container, method);
195195
var content = templates.renderMethod(data);
196196
write(writer, method.filePath, data, content);
197197
runtimeStats.incrementAccumulator('writtenMethodFileCount');
@@ -215,9 +215,9 @@ abstract class GeneratorBackend {
215215

216216
/// Emits documentation content for the [field].
217217
void generateProperty(PackageGraph packageGraph, Library library,
218-
Container clazz, Field field) {
218+
Container container, Field field) {
219219
var data =
220-
PropertyTemplateData(options, packageGraph, library, clazz, field);
220+
PropertyTemplateData(options, packageGraph, library, container, field);
221221
var content = templates.renderProperty(data);
222222
write(writer, field.filePath, data, content);
223223
runtimeStats.incrementAccumulator('writtenPropertyFileCount');

0 commit comments

Comments
 (0)