types method

String types(
  1. DartType k, {
  2. Map<String, String>? refers,
})

Make generic type tree.

Implementation

String types(DartType k, {Map<String, String>? refers}) {
  if (k is TypeParameterType) {
    return refers?[k.element.displayName] ?? 'dynamic';
  }
  if (k is VoidType) {
    return 'dynamic';
  }
  if (k is! ParameterizedType || k.typeArguments.isEmpty) {
    return k.element?.displayName ?? 'dynamic';
  }
  final raw = k.element?.displayName ?? 'dynamic';
  final args = k.typeArguments.map((v) => types(v, refers: refers)).join(', ');
  return 'Types($raw, [$args], ()=>${constructor(k, refers: refers)})';
}