summaryrefslogtreecommitdiff
path: root/lib/stdlib/src/erl_expand_records.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <bjorn@erlang.org>2023-01-17 08:32:05 +0100
committerBjörn Gustavsson <bjorn@erlang.org>2023-02-03 07:53:58 +0100
commite5d48a29bff32c2ce653e91a70a83660199f8a80 (patch)
tree4e7aa88c32ebf332e54cbdc6db87d8284b6981f6 /lib/stdlib/src/erl_expand_records.erl
parent119d9a2ef1564deed244b7e5fe745f04b353ecb0 (diff)
downloaderlang-e5d48a29bff32c2ce653e91a70a83660199f8a80.tar.gz
erl_expand_records: Handle map comprehensions
Diffstat (limited to 'lib/stdlib/src/erl_expand_records.erl')
-rw-r--r--lib/stdlib/src/erl_expand_records.erl9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/stdlib/src/erl_expand_records.erl b/lib/stdlib/src/erl_expand_records.erl
index 31442e5140..60c84286e5 100644
--- a/lib/stdlib/src/erl_expand_records.erl
+++ b/lib/stdlib/src/erl_expand_records.erl
@@ -289,6 +289,10 @@ expr({bc,Anno,E0,Qs0}, St0) ->
{Qs1,St1} = lc_tq(Anno, Qs0, St0),
{E1,St2} = expr(E0, St1),
{{bc,Anno,E1,Qs1},St2};
+expr({mc,Anno,E0,Qs0}, St0) ->
+ {Qs1,St1} = lc_tq(Anno, Qs0, St0),
+ {E1,St2} = expr(E0, St1),
+ {{mc,Anno,E1,Qs1},St2};
expr({tuple,Anno,Es0}, St0) ->
{Es1,St1} = expr_list(Es0, St0),
{{tuple,Anno,Es1},St1};
@@ -515,6 +519,11 @@ lc_tq(Anno, [{b_generate,AnnoG,P0,G0} | Qs0], St0) ->
{P1,St2} = pattern(P0, St1),
{Qs1,St3} = lc_tq(Anno, Qs0, St2),
{[{b_generate,AnnoG,P1,G1} | Qs1],St3};
+lc_tq(Anno, [{m_generate,AnnoG,P0,G0} | Qs0], St0) ->
+ {G1,St1} = expr(G0, St0),
+ {P1,St2} = pattern(P0, St1),
+ {Qs1,St3} = lc_tq(Anno, Qs0, St2),
+ {[{m_generate,AnnoG,P1,G1} | Qs1],St3};
lc_tq(Anno, [F0 | Qs0], #exprec{calltype=Calltype,raw_records=Records}=St0) ->
%% Allow record/2 and expand out as guard test.
IsOverriden = fun(FA) ->