visitRecordType method
Implementation
@override
StringSink visitRecordType(RecordType spec, [StringSink? output]) {
final out = (output ??= StringBuffer())..write('(');
visitAll<Reference>(spec.positionalFieldTypes, out, (spec) {
spec.accept(this, out);
});
if (spec.namedFieldTypes.isNotEmpty) {
if (spec.positionalFieldTypes.isNotEmpty) {
out.write(', ');
}
out.write('{');
visitAll<MapEntry<String, Reference>>(spec.namedFieldTypes.entries, out,
(entry) {
entry.value.accept(this, out);
out.write(' ${entry.key}');
});
out.write('}');
} else if (spec.positionalFieldTypes.length == 1) {
out.write(',');
}
out.write(')');
// It doesn't really make sense to use records without
// `_useNullSafetySyntax`, but since code_builder is generally very
// permissive, follow it here too.
if (_useNullSafetySyntax && (spec.isNullable ?? false)) {
out.write('?');
}
return out;
}