Skip to content

Commit 02d0567

Browse files
sabiwarajosevalim
authored andcommitted
Fix regression in Enum.dedup/1 (#10886)
1 parent 4582f87 commit 02d0567

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/elixir/lib/enum.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,7 @@ defmodule Enum do
786786
def dedup(enumerable) do
787787
Enum.reduce(enumerable, [], fn x, acc ->
788788
case acc do
789-
[^x, _] -> acc
789+
[^x | _] -> acc
790790
_ -> [x | acc]
791791
end
792792
end)

lib/elixir/test/elixir/enum_test.exs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,18 @@ defmodule EnumTest do
230230
assert Enum.dedup([nil]) == [nil]
231231
end
232232

233+
test "dedup/1 with streams" do
234+
dedup_stream = fn list -> list |> Stream.map(& &1) |> Enum.dedup() end
235+
236+
assert dedup_stream.([1, 1, 2, 1, 1, 2, 1]) == [1, 2, 1, 2, 1]
237+
assert dedup_stream.([2, 1, 1, 2, 1]) == [2, 1, 2, 1]
238+
assert dedup_stream.([1, 2, 3, 4]) == [1, 2, 3, 4]
239+
assert dedup_stream.([1, 1.0, 2.0, 2]) == [1, 1.0, 2.0, 2]
240+
assert dedup_stream.([]) == []
241+
assert dedup_stream.([nil, nil, true, {:value, true}]) == [nil, true, {:value, true}]
242+
assert dedup_stream.([nil]) == [nil]
243+
end
244+
233245
test "dedup_by/2" do
234246
assert Enum.dedup_by([{1, :x}, {2, :y}, {2, :z}, {1, :x}], fn {x, _} -> x end) ==
235247
[{1, :x}, {2, :y}, {1, :x}]

0 commit comments

Comments
 (0)