File 2412-stdlib-Optimize-printing-of-maps-a-bit.patch of Package erlang

From 7ac51a967ecf75d692b40d6fac62f838d4ae510c Mon Sep 17 00:00:00 2001
From: Hans Bolinder <hasse@erlang.org>
Date: Thu, 25 Apr 2019 09:02:09 +0200
Subject: [PATCH 2/3] stdlib: Optimize printing of maps a bit

---
 lib/stdlib/src/io_lib.erl | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/lib/stdlib/src/io_lib.erl b/lib/stdlib/src/io_lib.erl
index 2b5a374cf2..21d66c5529 100644
--- a/lib/stdlib/src/io_lib.erl
+++ b/lib/stdlib/src/io_lib.erl
@@ -412,14 +412,25 @@ write_port(Port) ->
 write_ref(Ref) ->
     erlang:ref_to_list(Ref).
 
+write_map(_, 1, _E) -> "#{}";
 write_map(Map, D, E) when is_integer(D) ->
-    [$#,${,write_map_body(maps:to_list(Map), D, D - 1, E),$}].
+    I = maps:iterator(Map),
+    case maps:next(I) of
+        {K, V, NextI} ->
+            D0 = D - 1,
+            W = write_map_assoc(K, V, D0, E),
+            [$#,${,[W | write_map_body(NextI, D0, D0, E)],$}];
+        none -> "#{}"
+    end.
 
-write_map_body(_, 1, _D0, _E) -> "...";
-write_map_body([], _, _D0, _E) -> [];
-write_map_body([{K,V}], _D, D0, E) -> write_map_assoc(K, V, D0, E);
-write_map_body([{K,V}|KVs], D, D0, E) ->
-    [write_map_assoc(K, V, D0, E),$, | write_map_body(KVs, D - 1, D0, E)].
+write_map_body(_, 1, _D0, _E) -> ",...";
+write_map_body(I, D, D0, E) ->
+    case maps:next(I) of
+        {K, V, NextI} ->
+            W = write_map_assoc(K, V, D0, E),
+            [$,,W|write_map_body(NextI, D - 1, D0, E)];
+        none -> ""
+    end.
 
 write_map_assoc(K, V, D, E) ->
     [write1(K, D, E)," => ",write1(V, D, E)].
-- 
2.16.4

openSUSE Build Service is sponsored by