Skip to content

Commit

Permalink
dartfmt
Browse files Browse the repository at this point in the history
  • Loading branch information
jcollins-g committed May 18, 2021
1 parent 8d46a1e commit 9926992
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 26 deletions.
9 changes: 6 additions & 3 deletions lib/src/element_type.dart
Expand Up @@ -404,8 +404,10 @@ mixin CallableElementTypeMixin implements ElementType {

Iterable<ElementType> _typeArguments;
Iterable<ElementType> get typeArguments =>
_typeArguments ??= type.aliasArguments?.map((f) => ElementType.from(f, library, packageGraph))
?.toList() ?? [];
_typeArguments ??= type.aliasArguments
?.map((f) => ElementType.from(f, library, packageGraph))
?.toList() ??
[];
}

/// A callable type that may or may not be backed by a declaration using the generic
Expand All @@ -417,7 +419,8 @@ class CallableElementType extends ParameterizedElementType
: super(t, library, packageGraph, element, returnedFrom);

@override
String get name => super.name != null && super.name.isNotEmpty ? super.name : 'Function';
String get name =>
super.name != null && super.name.isNotEmpty ? super.name : 'Function';

@override
ElementTypeRenderer<CallableElementType> get _renderer =>
Expand Down
3 changes: 2 additions & 1 deletion lib/src/model/typedef.dart
Expand Up @@ -34,7 +34,8 @@ class Typedef extends ModelElement
String get genericParameters => _renderer.renderGenericParameters(this);

@override
String get linkedGenericParameters => _renderer.renderLinkedGenericParameters(this);
String get linkedGenericParameters =>
_renderer.renderLinkedGenericParameters(this);

@override
String get filePath => '${library.dirName}/$fileName';
Expand Down
27 changes: 20 additions & 7 deletions lib/src/render/type_parameters_renderer.dart
Expand Up @@ -21,8 +21,11 @@ class TypeParametersRendererHtml implements TypeParametersRenderer {
return '';
}
var joined = typeParameters.typeParameters
.map((t) => [...t.annotations.map((a) => a.linkedNameWithParameters), t.name].join(' ')
).join('</span>, <span class="type-parameter">');
.map((t) => [
...t.annotations.map((a) => a.linkedNameWithParameters),
t.name
].join(' '))
.join('</span>, <span class="type-parameter">');
return '&lt;<wbr><span class="type-parameter">$joined</span>&gt;';
}

Expand All @@ -32,8 +35,11 @@ class TypeParametersRendererHtml implements TypeParametersRenderer {
return '';
}
var joined = typeParameters.typeParameters
.map((t) => [...t.annotations.map((a) => a.linkedNameWithParameters), t.linkedName].join(' ')
).join('</span>, <span class="type-parameter">');
.map((t) => [
...t.annotations.map((a) => a.linkedNameWithParameters),
t.linkedName
].join(' '))
.join('</span>, <span class="type-parameter">');
return '<span class="signature">&lt;<wbr><span class="type-parameter">$joined</span>&gt;</span>';
}
}
Expand All @@ -42,12 +48,19 @@ class TypeParametersRendererMd implements TypeParametersRenderer {
const TypeParametersRendererMd();

@override
String renderGenericParameters(TypeParameters typeParameters) =>
_compose(typeParameters.typeParameters, (t) => [...t.annotations.map((a) => a.linkedNameWithParameters), t.name].join(' '));
String renderGenericParameters(TypeParameters typeParameters) => _compose(
typeParameters.typeParameters,
(t) => [...t.annotations.map((a) => a.linkedNameWithParameters), t.name]
.join(' '));

@override
String renderLinkedGenericParameters(TypeParameters typeParameters) =>
_compose(typeParameters.typeParameters, (t) => [...t.annotations.map((a) => a.linkedNameWithParameters), t.linkedName].join(' '));
_compose(
typeParameters.typeParameters,
(t) => [
...t.annotations.map((a) => a.linkedNameWithParameters),
t.linkedName
].join(' '));

String _compose(List<TypeParameter> typeParameters,
String Function(TypeParameter) mapfn) {
Expand Down
31 changes: 23 additions & 8 deletions lib/src/render/typedef_renderer.dart
Expand Up @@ -20,45 +20,60 @@ abstract class TypedefRenderer {
class TypedefRendererHtml extends TypedefRenderer {
const TypedefRendererHtml();

String _renderTypeParameters(Iterable<TypeParameter> typeParameters, String Function(TypeParameter t) getName) {
String _renderTypeParameters(Iterable<TypeParameter> typeParameters,
String Function(TypeParameter t) getName) {
if (typeParameters.isEmpty) {
return '';
}

final buffer = StringBuffer('&lt;<wbr><span class="type-parameter">');
buffer.writeAll(typeParameters.map((t) => [...t.annotations.map((a) => a.linkedNameWithParameters), getName(t)].join(' ')),
buffer.writeAll(
typeParameters.map((t) => [
...t.annotations.map((a) => a.linkedNameWithParameters),
getName(t)
].join(' ')),
'</span>, <span class="type-parameter">');
buffer.write('</span>&gt;');

return buffer.toString();
}

@override
String renderGenericParameters(Typedef typedef) => _renderTypeParameters(typedef.typeParameters, (t) => t.name);
String renderGenericParameters(Typedef typedef) =>
_renderTypeParameters(typedef.typeParameters, (t) => t.name);

@override
String renderLinkedGenericParameters(Typedef typedef) => _renderTypeParameters(typedef.typeParameters, (t) => t.linkedName);
String renderLinkedGenericParameters(Typedef typedef) =>
_renderTypeParameters(typedef.typeParameters, (t) => t.linkedName);
}

/// A markdown renderer for a [Typedef].
class TypedefRendererMd extends TypedefRenderer {
const TypedefRendererMd();

String _renderTypeParameters(Iterable<TypeParameter> typeParameters, String Function(TypeParameter t) getName) {
String _renderTypeParameters(Iterable<TypeParameter> typeParameters,
String Function(TypeParameter t) getName) {
if (typeParameters.isEmpty) {
return '';
}

final buffer = StringBuffer('&lt;{');
buffer.writeAll(typeParameters.map((t) => [...t.annotations.map((a) => a.linkedNameWithParameters), getName(t)].join(' ')), ', ');
buffer.writeAll(
typeParameters.map((t) => [
...t.annotations.map((a) => a.linkedNameWithParameters),
getName(t)
].join(' ')),
', ');
buffer.write('}>');

return buffer.toString();
}

@override
String renderGenericParameters(Typedef typedef) => _renderTypeParameters(typedef.typeParameters, (t) => t.name);
String renderGenericParameters(Typedef typedef) =>
_renderTypeParameters(typedef.typeParameters, (t) => t.name);

@override
String renderLinkedGenericParameters(Typedef typedef) => _renderTypeParameters(typedef.typeParameters, (t) => t.linkedName);
String renderLinkedGenericParameters(Typedef typedef) =>
_renderTypeParameters(typedef.typeParameters, (t) => t.linkedName);
}
10 changes: 7 additions & 3 deletions test/end2end/model_special_cases_test.dart
Expand Up @@ -151,9 +151,13 @@ void main() {
mn = C.instanceMethods.firstWhere((m) => m.name == 'mn');
});

test('Verify annotations and their type arguments render on type parameters for typedefs', () {
expect((F.aliasedType as FunctionType).typeFormals.first.metadata, isNotEmpty);
expect((F.aliasedType as FunctionType).parameters.first.metadata, isNotEmpty);
test(
'Verify annotations and their type arguments render on type parameters for typedefs',
() {
expect((F.aliasedType as FunctionType).typeFormals.first.metadata,
isNotEmpty);
expect((F.aliasedType as FunctionType).parameters.first.metadata,
isNotEmpty);
// TODO(jcollins-g): add rendering verification once we have data from
// analyzer.
}, skip: 'dart-lang/sdk#46064');
Expand Down
12 changes: 8 additions & 4 deletions test/end2end/model_test.dart
Expand Up @@ -3794,10 +3794,14 @@ String topLevelFunction(int param1, bool param2, Cool coolBeans,
});

test('return type', () {
expect(oldgeneric.modelType.linkedName,
equals('Function(<span class=\"parameter\" id=\"GenericTypedef-param-input\"><span class=\"type-annotation\">T</span></span>) → T'));
expect(generic.modelType.linkedName,
equals('List<span class="signature">&lt;<wbr><span class="type-parameter">S</span>&gt;</span> Function&lt;<wbr><span class="type-parameter">S</span>&gt;<span class="signature">(<span class="parameter" id="param-"><span class="type-annotation">T</span>, </span><span class="parameter" id="param-"><span class="type-annotation">int</span>, </span><span class="parameter" id="param-"><span class="type-annotation">bool</span></span>)</span>'));
expect(
oldgeneric.modelType.linkedName,
equals(
'Function(<span class=\"parameter\" id=\"GenericTypedef-param-input\"><span class=\"type-annotation\">T</span></span>) → T'));
expect(
generic.modelType.linkedName,
equals(
'List<span class="signature">&lt;<wbr><span class="type-parameter">S</span>&gt;</span> Function&lt;<wbr><span class="type-parameter">S</span>&gt;<span class="signature">(<span class="parameter" id="param-"><span class="type-annotation">T</span>, </span><span class="parameter" id="param-"><span class="type-annotation">int</span>, </span><span class="parameter" id="param-"><span class="type-annotation">bool</span></span>)</span>'));
});

test('name with generics', () {
Expand Down

0 comments on commit 9926992

Please sign in to comment.