getIterableGenericType method

DartType? getIterableGenericType(
  1. IterableType iterableType
)

Implementation

DartType? getIterableGenericType(IterableType iterableType) {
  // 1. Check explicit type arguments on the literal itself
  // e.g., `<String>[]` or `<Direction, String>{}`
  if (typeArguments case TypeArgumentList(
    :final arguments,
  ) when arguments.isNotEmpty) {
    return switch (iterableType) {
      IterableType.mapValue when arguments.length == 2 => arguments[1].type,
      IterableType.mapKey when arguments.length == 2 => arguments[0].type,
      IterableType.list ||
      IterableType.set when arguments.length == 1 => arguments[0].type,
      _ => null,
    };
  }

  // 2. Try to get type from context (parameter, return type, etc.)
  final contextType = _getContextType();
  if (contextType != null) {
    return _extractTypeArgument(contextType, iterableType);
  }

  return null;
}