File 1810-Fix-minor-imparity-issues-between-various-generator-.patch of Package erlang
From 0f0e375d835bf83e3eae3f4b994634eaecdf8339 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?D=C3=A1niel=20Szoboszlay?= <dszoboszlay@gmail.com>
Date: Thu, 13 Jun 2024 12:52:59 +0200
Subject: [PATCH 1/2] Fix minor imparity issues between various generator types
---
lib/stdlib/src/erl_parse.yrl | 2 +-
lib/stdlib/src/qlc_pt.erl | 5 +++-
lib/stdlib/src/shell.erl | 2 ++
lib/syntax_tools/src/erl_syntax.erl | 8 +++---
lib/syntax_tools/src/erl_syntax_lib.erl | 26 +++++++++++++++-----
lib/syntax_tools/test/syntax_tools_SUITE.erl | 2 ++
6 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/lib/stdlib/src/erl_parse.yrl b/lib/stdlib/src/erl_parse.yrl
index 01540c00db..dd99245d33 100644
--- a/lib/stdlib/src/erl_parse.yrl
+++ b/lib/stdlib/src/erl_parse.yrl
@@ -933,7 +933,7 @@ processed (see section [Error Information](#module-error-information)).
-type af_qualifier() :: af_generator() | af_filter().
--doc "Abstract representation of a generator or a bitstring generator.".
+-doc "Abstract representation of a list, bitstring or map generator.".
-type af_generator() :: {'generate', anno(), af_pattern(), abstract_expr()}
| {'m_generate', anno(), af_assoc_exact(af_pattern()), abstract_expr()}
| {'b_generate', anno(), af_pattern(), abstract_expr()}.
diff --git a/lib/stdlib/src/qlc_pt.erl b/lib/stdlib/src/qlc_pt.erl
index 21c55555ae..d34b139781 100644
--- a/lib/stdlib/src/qlc_pt.erl
+++ b/lib/stdlib/src/qlc_pt.erl
@@ -292,10 +292,13 @@ record_attributes(Forms) ->
%% transformation.
%%
compile_messages(Forms, FormsNoShadows, Options, State) ->
- %% The qlc module cannot handle binary generators.
+ %% The qlc module can only handle list generators.
BGenF = fun(_QId,{b_generate,Anno,_P,_LE}=BGen, GA, A) ->
M = {loc(Anno),?APIMOD,binary_generator},
{BGen,[{get(?QLC_FILE),[M]}|GA],A};
+ (_QId,{m_generate,Anno,_P,_LE}=BGen, GA, A) ->
+ M = {loc(Anno),?APIMOD,map_generator},
+ {BGen,[{get(?QLC_FILE),[M]}|GA],A};
(_QId, Q, GA, A) ->
{Q,GA,A}
end,
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index 002f0d1678..22a335c739 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -644,6 +644,8 @@ expand_quals([{generate,A,P,E}|Qs], C) ->
[{generate,A,P,expand_expr(E, C)}|expand_quals(Qs, C)];
expand_quals([{b_generate,A,P,E}|Qs], C) ->
[{b_generate,A,P,expand_expr(E, C)}|expand_quals(Qs, C)];
+expand_quals([{m_generate,A,P,E}|Qs], C) ->
+ [{m_generate,A,P,expand_expr(E, C)}|expand_quals(Qs, C)];
expand_quals([E|Qs], C) ->
[expand_expr(E, C)|expand_quals(Qs, C)];
expand_quals([], _C) -> [].
diff --git a/lib/syntax_tools/src/erl_syntax.erl b/lib/syntax_tools/src/erl_syntax.erl
index a6fd397fda..84605345df 100644
--- a/lib/syntax_tools/src/erl_syntax.erl
+++ b/lib/syntax_tools/src/erl_syntax.erl
@@ -2650,7 +2650,7 @@ compact_list(Node) ->
copy_attrs(Node,
Node1));
_ ->
- Node
+ Node
end
end;
_ ->
@@ -3172,7 +3172,7 @@ revert_attribute(Node) ->
revert_attribute_1(module, [M], Pos, Node) ->
case revert_module_name(M) of
- {ok, A} ->
+ {ok, A} ->
{attribute, Pos, module, A};
error -> Node
end;
@@ -3189,7 +3189,7 @@ revert_attribute_1(module, [M, List], Pos, Node) ->
Node
end,
case revert_module_name(M) of
- {ok, A} ->
+ {ok, A} ->
{attribute, Pos, module, {A, Vs}};
error -> Node
end;
@@ -7528,7 +7528,7 @@ subtrees(T) ->
Ts]
end;
binary_generator ->
- [[binary_generator_pattern(T)],
+ [[binary_generator_pattern(T)],
[binary_generator_body(T)]];
bitstring_type ->
[[bitstring_type_m(T)],
--
2.43.0