buildTypeSubstitutionMap function

Map<String, DartType> buildTypeSubstitutionMap(
  1. ClassElement element,
  2. List<DartType> typeArguments
)

Implementation

Map<String, DartType> buildTypeSubstitutionMap(
  ClassElement element,
  List<DartType> typeArguments,
) {
  final typeParameters = element.typeParameters;

  if (typeParameters.isEmpty ||
      typeArguments.isEmpty ||
      typeParameters.length != typeArguments.length) {
    return const {};
  }

  final substitutions = <String, DartType>{};

  for (var i = 0; i < typeParameters.length; i++) {
    final name = typeParameters[i].name;
    if (name == null) {
      continue;
    }

    final typeArgument = typeArguments[i];
    if (typeArgument is DynamicType) {
      continue;
    }

    substitutions[name] = typeArgument;
  }

  if (substitutions.length != typeParameters.length) {
    return const {};
  }

  return substitutions;
}