File 3147-stdlib-Fix-map-comprehension-result-when-a-key-value.patch of Package erlang

From 56ead490923abe0ea79f680a54b664a3ad80b3e3 Mon Sep 17 00:00:00 2001
From: lucioleKi <isabell@erlang.org>
Date: Wed, 29 Jan 2025 11:54:58 +0100
Subject: [PATCH] stdlib: Fix map comprehension result when a key value is
 replaced

Fix https://github.com/erlang/otp/issues/9348
---
 lib/stdlib/src/erl_eval.erl        | 2 +-
 lib/stdlib/test/erl_eval_SUITE.erl | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/stdlib/src/erl_eval.erl b/lib/stdlib/src/erl_eval.erl
index e752dc3484..53544164ab 100644
--- a/lib/stdlib/src/erl_eval.erl
+++ b/lib/stdlib/src/erl_eval.erl
@@ -1257,7 +1257,7 @@ eval_bc1(E, [], Bs, Lf, Ef, FUVs, Acc) ->
 
 eval_mc(E, Qs, Bs, Lf, Ef, RBs, FUVs) ->
     L = eval_mc1(E, Qs, Bs, Lf, Ef, FUVs, []),
-    Map = maps:from_list(L),
+    Map = maps:from_list(reverse(L)),
     ret_expr(Map, Bs, RBs).
 
 eval_mc1(E, [Q|Qs], Bs0, Lf, Ef, FUVs, Acc0) ->
diff --git a/lib/stdlib/test/erl_eval_SUITE.erl b/lib/stdlib/test/erl_eval_SUITE.erl
index 674204ff7c..33187c765d 100644
--- a/lib/stdlib/test/erl_eval_SUITE.erl
+++ b/lib/stdlib/test/erl_eval_SUITE.erl
@@ -2211,7 +2211,12 @@ eep58(Config) when is_list(Config) ->
     check(fun() -> [X || X := X <- #{a => 1, b => b}] end,
           "[X || X := X <- #{a => 1, b => b}].",
 	  [b]),
-
+    check(fun() -> #{A => B || {A, B} <- [{1, 2}, {1, 3}]} end,
+          "#{A => B || {A, B} <- [{1, 2}, {1, 3}]}.",
+	  #{1 => 3}),
+    check(fun() -> #{A => B || X <- [1, 5], {A, B} <- [{X, X+1}, {X, X+3}]} end,
+          "#{A => B || X <- [1, 5], {A, B} <- [{X, X+1}, {X, X+3}]}.",
+	  #{1 => 4,5 => 8}),
     error_check("[K+V || K := V <- a].", {bad_generator,a}),
     error_check("[K+V || K := V <- [-1|#{}]].", {bad_generator,[-1|#{}]}),
 
-- 
2.43.0

openSUSE Build Service is sponsored by