Skip to content

Commit fbe70c4

Browse files
committed
Inline Map.intersect/2 and delegate to :maps.merge_with/2
1 parent 893a41d commit fbe70c4

File tree

2 files changed

+2
-13
lines changed

2 files changed

+2
-13
lines changed

lib/elixir/lib/map.ex

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -642,19 +642,7 @@ defmodule Map do
642642
"""
643643
@spec merge(map, map, (key, value, value -> value)) :: map
644644
def merge(map1, map2, fun) when is_function(fun, 3) do
645-
if map_size(map1) > map_size(map2) do
646-
folder = fn key, val2, acc ->
647-
update(acc, key, val2, fn val1 -> fun.(key, val1, val2) end)
648-
end
649-
650-
:maps.fold(folder, map1, map2)
651-
else
652-
folder = fn key, val2, acc ->
653-
update(acc, key, val2, fn val1 -> fun.(key, val2, val1) end)
654-
end
655-
656-
:maps.fold(folder, map2, map1)
657-
end
645+
:maps.merge_with(fun, map1, map2)
658646
end
659647

660648
@doc """

lib/elixir/src/elixir_rewrite.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ inline(Mod, Fun, Arity) -> inner_inline(ex_to_erl, Mod, Fun, Arity).
145145
?inline(?list, to_integer, 2, erlang, list_to_integer);
146146
?inline(?list, to_tuple, 1, erlang, list_to_tuple);
147147

148+
?inline(?map, intersect, 2, maps, intersect);
148149
?inline(?map, keys, 1, maps, keys);
149150
?inline(?map, merge, 2, maps, merge);
150151
?inline(?map, to_list, 1, maps, to_list);

0 commit comments

Comments
 (0)