Skip to content

Commit ecf5517

Browse files
authored
Fix DateRange slice step computation (#15560)
1 parent 251d3fe commit ecf5517

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

lib/elixir/lib/calendar/date_range.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ defmodule Date.Range do
8888
step: step
8989
} = range
9090
) do
91-
{:ok, size(range), &slice(first + &1 * step, step + &3 - 1, &2, calendar)}
91+
{:ok, size(range), &slice(first + &1 * step, step * &3, &2, calendar)}
9292
end
9393

9494
# TODO: Remove me on v2.0

lib/elixir/test/elixir/calendar/date_range_test.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ defmodule Date.RangeTest do
6565

6666
assert Enum.slice(@asc_range_2, 3, 3) == [~D[2000-01-07], ~D[2000-01-09], ~D[2000-01-11]]
6767
assert Enum.slice(@asc_range_2, -3, 3) == [~D[2000-12-28], ~D[2000-12-30], ~D[2001-01-01]]
68+
69+
assert Enum.slice(@asc_range_2, 0..4//2) == [~D[2000-01-01], ~D[2000-01-05], ~D[2000-01-09]]
70+
assert Enum.slice(@asc_range_2, 1..4//2) == [~D[2000-01-03], ~D[2000-01-07]]
6871
end
6972

7073
test "for descending range" do
@@ -73,6 +76,14 @@ defmodule Date.RangeTest do
7376

7477
assert Enum.slice(@desc_range_2, 3, 3) == [~D[2000-12-26], ~D[2000-12-24], ~D[2000-12-22]]
7578
assert Enum.slice(@desc_range_2, -3, 3) == [~D[2000-01-05], ~D[2000-01-03], ~D[2000-01-01]]
79+
80+
assert Enum.slice(@desc_range_2, 0..4//2) == [
81+
~D[2001-01-01],
82+
~D[2000-12-28],
83+
~D[2000-12-24]
84+
]
85+
86+
assert Enum.slice(@desc_range_2, 1..4//2) == [~D[2000-12-30], ~D[2000-12-26]]
7687
end
7788

7889
test "for empty range" do

0 commit comments

Comments
 (0)