visitExtensionType method
Implementation
@override
StringSink visitExtensionType(ExtensionType spec, [StringSink? output]) {
final out = output ??= StringBuffer();
spec.docs.forEach(out.writeln);
for (var a in spec.annotations) {
visitAnnotation(a, out);
}
out.write('extension type ');
if (spec.constant) out.write('const ');
out.write(spec.name);
visitTypeParameters(spec.types.map((r) => r.type), out);
if (spec.primaryConstructorName.isNotEmpty) {
out.write('.${spec.primaryConstructorName}');
}
out.write('(');
_visitRepresentationDeclaration(spec.representationDeclaration, out);
out.write(')');
if (spec.implements.isNotEmpty) {
out
..write(' implements ')
..writeAll(
spec.implements.map<StringSink>((m) => m.type.accept(this)), ',');
}
out.writeln(' {');
for (var c in spec.constructors) {
visitConstructor(c, spec.name, out);
out.writeln();
}
for (var f in spec.fields) {
visitField(f, out);
out.writeln();
}
for (var m in spec.methods) {
visitMethod(m, out);
if (_isLambdaMethod(m)) {
out.writeln(';');
}
out.writeln();
}
out.writeln('}');
return out;
}