diff --git a/lib/resources/styles.css b/lib/resources/styles.css
index 64bfa61aa7..b3492baebc 100644
--- a/lib/resources/styles.css
+++ b/lib/resources/styles.css
@@ -661,6 +661,7 @@ footer a, footer a:hover {
}
.markdown.desc {
+ margin-bottom: 1em;
max-width: 700px;
}
diff --git a/lib/src/generator/templates.aot_renderers_for_html.dart b/lib/src/generator/templates.aot_renderers_for_html.dart
index 17156a9efe..2c7183723d 100644
--- a/lib/src/generator/templates.aot_renderers_for_html.dart
+++ b/lib/src/generator/templates.aot_renderers_for_html.dart
@@ -338,45 +338,29 @@ String renderClass(ClassTemplateData context0) {
buffer.write('''
''');
}
- buffer.writeln();
- if (context2.hasPotentiallyApplicableExtensions) {
- buffer.writeln();
- buffer.write('''
-
Available Extensions
- ''');
- var context5 = context2.potentiallyApplicableExtensionsSorted;
- for (var context6 in context5) {
- buffer.writeln();
- buffer.write('''
- - ''');
- buffer.write(context6.linkedName);
- buffer.write('''
''');
- }
- buffer.writeln();
- buffer.write('''
-
''');
- }
buffer.write('\n\n ');
- buffer.write(_renderClass_partial_container_annotations_8(context2));
+ buffer.write(_renderClass_partial_available_extensions_8(context2));
+ buffer.write('\n ');
+ buffer.write(_renderClass_partial_container_annotations_9(context2));
buffer.writeln();
buffer.write('''
''');
}
buffer.write('\n\n ');
- buffer.write(_renderClass_partial_constructors_9(context2));
+ buffer.write(_renderClass_partial_constructors_10(context2));
buffer.write('\n ');
- buffer.write(_renderClass_partial_instance_fields_10(context2));
+ buffer.write(_renderClass_partial_instance_fields_11(context2));
buffer.write('\n ');
- buffer.write(_renderClass_partial_instance_methods_11(context2));
+ buffer.write(_renderClass_partial_instance_methods_12(context2));
buffer.write('\n ');
- buffer.write(_renderClass_partial_instance_operators_12(context2));
+ buffer.write(_renderClass_partial_instance_operators_13(context2));
buffer.write('\n ');
- buffer.write(_renderClass_partial_static_properties_13(context2));
+ buffer.write(_renderClass_partial_static_properties_14(context2));
buffer.write('\n ');
- buffer.write(_renderClass_partial_static_methods_14(context2));
+ buffer.write(_renderClass_partial_static_methods_15(context2));
buffer.write('\n ');
- buffer.write(_renderClass_partial_static_constants_15(context2));
+ buffer.write(_renderClass_partial_static_constants_16(context2));
buffer.writeln();
buffer.write('''
@@ -384,7 +368,7 @@ String renderClass(ClassTemplateData context0) {
''');
- buffer.write(_renderClass_partial_footer_17(context0));
+ buffer.write(_renderClass_partial_footer_18(context0));
buffer.writeln();
return buffer.toString();
@@ -542,7 +526,9 @@ String renderEnum(EnumTemplateData context0) {
buffer.write('\n ');
buffer.write(_renderEnum_partial_mixed_in_types_7(context2));
buffer.write('\n ');
- buffer.write(_renderEnum_partial_container_annotations_8(context2));
+ buffer.write(_renderEnum_partial_available_extensions_8(context2));
+ buffer.write('\n ');
+ buffer.write(_renderEnum_partial_container_annotations_9(context2));
buffer.writeln();
buffer.write('''
@@ -559,7 +545,7 @@ String renderEnum(EnumTemplateData context0) {
var context3 = context2.publicEnumValues;
for (var context4 in context3) {
buffer.write('\n ');
- buffer.write(_renderEnum_partial_constant_9(context4));
+ buffer.write(_renderEnum_partial_constant_10(context4));
}
buffer.writeln();
buffer.write('''
@@ -567,24 +553,24 @@ String renderEnum(EnumTemplateData context0) {
''');
}
buffer.write('\n\n ');
- buffer.write(_renderEnum_partial_instance_fields_10(context2));
+ buffer.write(_renderEnum_partial_instance_fields_11(context2));
buffer.write('\n ');
- buffer.write(_renderEnum_partial_instance_methods_11(context2));
+ buffer.write(_renderEnum_partial_instance_methods_12(context2));
buffer.write('\n ');
- buffer.write(_renderEnum_partial_instance_operators_12(context2));
+ buffer.write(_renderEnum_partial_instance_operators_13(context2));
buffer.write('\n ');
- buffer.write(_renderEnum_partial_static_properties_13(context2));
+ buffer.write(_renderEnum_partial_static_properties_14(context2));
buffer.write('\n ');
- buffer.write(_renderEnum_partial_static_methods_14(context2));
+ buffer.write(_renderEnum_partial_static_methods_15(context2));
buffer.write('\n ');
- buffer.write(_renderEnum_partial_static_constants_15(context2));
+ buffer.write(_renderEnum_partial_static_constants_16(context2));
buffer.writeln();
buffer.write('''
''');
- buffer.write(_renderEnum_partial_footer_17(context0));
+ buffer.write(_renderEnum_partial_footer_18(context0));
buffer.writeln();
return buffer.toString();
@@ -817,29 +803,31 @@ String renderExtensionType(
buffer.write('''
''');
}
+ buffer.write('\n ');
+ buffer.write(_renderExtensionType_partial_available_extensions_6(context2));
buffer.writeln();
buffer.write('''
''');
- buffer.write(_renderExtensionType_partial_container_annotations_6(context2));
+ buffer.write(_renderExtensionType_partial_container_annotations_7(context2));
buffer.writeln();
buffer.write('''
''');
- buffer.write(_renderExtensionType_partial_constructors_7(context2));
+ buffer.write(_renderExtensionType_partial_constructors_8(context2));
buffer.write('\n ');
- buffer.write(_renderExtensionType_partial_instance_fields_8(context2));
+ buffer.write(_renderExtensionType_partial_instance_fields_9(context2));
buffer.write('\n ');
- buffer.write(_renderExtensionType_partial_instance_methods_9(context2));
+ buffer.write(_renderExtensionType_partial_instance_methods_10(context2));
buffer.write('\n ');
- buffer.write(_renderExtensionType_partial_instance_operators_10(context2));
+ buffer.write(_renderExtensionType_partial_instance_operators_11(context2));
buffer.write('\n ');
- buffer.write(_renderExtensionType_partial_static_properties_11(context2));
+ buffer.write(_renderExtensionType_partial_static_properties_12(context2));
buffer.write('\n ');
- buffer.write(_renderExtensionType_partial_static_methods_12(context2));
+ buffer.write(_renderExtensionType_partial_static_methods_13(context2));
buffer.write('\n ');
- buffer.write(_renderExtensionType_partial_static_constants_13(context2));
+ buffer.write(_renderExtensionType_partial_static_constants_14(context2));
buffer.writeln();
buffer.writeln();
buffer.write('''
@@ -847,7 +835,7 @@ String renderExtensionType(
''');
- buffer.write(_renderExtensionType_partial_footer_15(context0));
+ buffer.write(_renderExtensionType_partial_footer_16(context0));
buffer.writeln();
return buffer.toString();
@@ -1461,7 +1449,7 @@ String renderMixin(MixinTemplateData context0) {
if (context2.hasPublicSuperclassConstraints) {
buffer.writeln();
buffer.write('''
- Superclass Constraints
+ Superclass constraints
''');
var context3 = context2.publicSuperclassConstraints;
for (var context4 in context3) {
@@ -1483,7 +1471,7 @@ String renderMixin(MixinTemplateData context0) {
if (context2.hasPublicImplementers) {
buffer.writeln();
buffer.write('''
- - Mixin Applications
+ - Mixin applications
-
''');
var context5 = context2.publicImplementersSorted;
@@ -1499,32 +1487,34 @@ String renderMixin(MixinTemplateData context0) {
''');
}
+ buffer.write('\n ');
+ buffer.write(_renderMixin_partial_available_extensions_7(context2));
buffer.write('\n\n ');
- buffer.write(_renderMixin_partial_annotations_7(context2));
+ buffer.write(_renderMixin_partial_annotations_8(context2));
buffer.writeln();
buffer.write('''
''');
}
buffer.write('\n\n ');
- buffer.write(_renderMixin_partial_instance_fields_8(context2));
+ buffer.write(_renderMixin_partial_instance_fields_9(context2));
buffer.write('\n ');
- buffer.write(_renderMixin_partial_instance_methods_9(context2));
+ buffer.write(_renderMixin_partial_instance_methods_10(context2));
buffer.write('\n ');
- buffer.write(_renderMixin_partial_instance_operators_10(context2));
+ buffer.write(_renderMixin_partial_instance_operators_11(context2));
buffer.write('\n ');
- buffer.write(_renderMixin_partial_static_properties_11(context2));
+ buffer.write(_renderMixin_partial_static_properties_12(context2));
buffer.write('\n ');
- buffer.write(_renderMixin_partial_static_methods_12(context2));
+ buffer.write(_renderMixin_partial_static_methods_13(context2));
buffer.write('\n ');
- buffer.write(_renderMixin_partial_static_constants_13(context2));
+ buffer.write(_renderMixin_partial_static_constants_14(context2));
buffer.writeln();
buffer.write('''
''');
- buffer.write(_renderMixin_partial_footer_15(context0));
+ buffer.write(_renderMixin_partial_footer_16(context0));
buffer.writeln();
return buffer.toString();
@@ -2567,7 +2557,7 @@ String _renderClass_partial_mixed_in_types_7(Class context1) {
if (context1.hasPublicMixedInTypes) {
buffer.writeln();
buffer.write('''
- - Mixed in types
+ - Mixed-in types
-
{{ /hasPublicImplementers }}
+ {{ >available_extensions }}
{{ >container_annotations }}
diff --git a/lib/templates/mixin.html b/lib/templates/mixin.html
index 31bffe350e..7ab78e3818 100644
--- a/lib/templates/mixin.html
+++ b/lib/templates/mixin.html
@@ -16,7 +16,7 @@
{{ #hasPublicSuperclassConstraints }}
- - Superclass Constraints
+ - Superclass constraints
{{ #publicSuperclassConstraints }}
- {{{ linkedName }}}
@@ -28,7 +28,7 @@
{{ >interfaces }}
{{ #hasPublicImplementers }}
- - Mixin Applications
+ - Mixin applications
-
{{ #publicImplementersSorted }}
@@ -37,6 +37,7 @@
{{ /hasPublicImplementers }}
+ {{ >available_extensions }}
{{ >annotations }}
diff --git a/test/templates/class_test.dart b/test/templates/class_test.dart
index 84c0edf856..f57dd6c772 100644
--- a/test/templates/class_test.dart
+++ b/test/templates/class_test.dart
@@ -149,6 +149,21 @@ mixin M on _M {}
]);
}
+ void test_availableExtensions_direct() async {
+ await createPackageWithLibrary('''
+class C {}
+extension E on C {}
+''');
+ var baseLines = readLines(['lib', 'C-class.html']);
+
+ baseLines.expectMainContentContainsAllInOrder([
+ matches('- Available extensions
'),
+ matches(''),
+ matches('- E
'),
+ matches('
'),
+ ]);
+ }
+
void test_constructor_named() async {
await createPackageWithLibrary('''
class C {
diff --git a/test/templates/enum_test.dart b/test/templates/enum_test.dart
index ab30c295fb..7757950541 100644
--- a/test/templates/enum_test.dart
+++ b/test/templates/enum_test.dart
@@ -91,6 +91,8 @@ enum EnumWithDefaultConstructor {
/// Doc comment for [six].
six;
}
+
+extension Ext on E {}
'''),
],
resourceProvider: resourceProvider,
@@ -158,13 +160,22 @@ enum EnumWithDefaultConstructor {
expect(
eLines,
containsAllInOrder([
- matches('- Mixed in types
'),
+ matches('- Mixed-in types
'),
matches('M'
'<'
'T>'),
]));
});
+ test('enum page contains available extensions', () async {
+ expect(
+ eLines,
+ containsAllInOrder([
+ matches('- Available extensions
'),
+ matches('E'),
+ ]));
+ });
+
test('enum page contains annotations', () async {
eLines.expectMainContentContainsAllInOrder([
matches('- Annotations
'),
diff --git a/test/templates/extension_type_test.dart b/test/templates/extension_type_test.dart
index 928c860eb1..5c9a7cb381 100644
--- a/test/templates/extension_type_test.dart
+++ b/test/templates/extension_type_test.dart
@@ -140,6 +140,21 @@ extension type Two(List it) implements One {}
]);
}
+ void test_availableExtensions() async {
+ await createPackageWithLibrary('''
+extension type One(int it) {}
+extension E on One {}
+''');
+ var htmlLines = readLines(['lib', 'One-extension-type.html']);
+
+ htmlLines.expectMainContentContainsAllInOrder([
+ matches('- Available extensions
'),
+ matches(''),
+ matches('- E
'),
+ matches('
'),
+ ]);
+ }
+
void test_constructors() async {
await createPackageWithLibrary('''
extension type One(int it) {