File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -3675,6 +3675,7 @@ defmodule Enum do
3675
3675
"""
3676
3676
@ spec to_list ( t ) :: [ element ]
3677
3677
def to_list ( enumerable ) when is_list ( enumerable ) , do: enumerable
3678
+ def to_list ( % { __struct__: Range } = range ) , do: Range . to_list ( range )
3678
3679
def to_list ( % _ { } = enumerable ) , do: reverse ( enumerable ) |> :lists . reverse ( )
3679
3680
def to_list ( % { } = enumerable ) , do: Map . to_list ( enumerable )
3680
3681
def to_list ( enumerable ) , do: reverse ( enumerable ) |> :lists . reverse ( )
Original file line number Diff line number Diff line change @@ -389,6 +389,26 @@ defmodule Range do
389
389
end
390
390
end
391
391
392
+ @ doc """
393
+ Converts a range to a list.
394
+ """
395
+ @ doc since: "1.15.0"
396
+ def to_list ( first .. last // step )
397
+ when step > 0 and first <= last
398
+ when step < 0 and first >= last do
399
+ :lists . seq ( first , last , step )
400
+ end
401
+
402
+ def to_list ( _first .. _last // _step ) do
403
+ [ ]
404
+ end
405
+
406
+ # TODO: Remove me on v2.0
407
+ def to_list ( % { __struct__: Range , first: first , last: last } ) do
408
+ step = if first <= last , do: 1 , else: - 1
409
+ :lists . seq ( first , last , step )
410
+ end
411
+
392
412
@ doc """
393
413
Checks if two ranges are disjoint.
394
414
You can’t perform that action at this time.
0 commit comments