aboutsummaryrefslogtreecommitdiffstats
path: root/lib/syntax_tools/src/erl_prettypr.erl
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-02-04 12:18:23 +0100
committerBjörn-Egil Dahlberg <[email protected]>2014-02-04 12:18:23 +0100
commit8d71ab498974b5f0623eac50c4f94f62fc229a94 (patch)
treefe74a3b97bff794f60f42a951b6ee3fa95f4fe16 /lib/syntax_tools/src/erl_prettypr.erl
parent9171d1886015e4d36601ed360f6d479a5a95abab (diff)
parent81824d20efb18b08d53aa5bb7e1c764074f473e7 (diff)
downloadotp-8d71ab498974b5f0623eac50c4f94f62fc229a94.tar.gz
otp-8d71ab498974b5f0623eac50c4f94f62fc229a94.tar.bz2
otp-8d71ab498974b5f0623eac50c4f94f62fc229a94.zip
Merge branch 'nox/syntax_tools/maps-support/OTP-11663'
* nox/syntax_tools/maps-support/OTP-11663: Support maps in erl_prettypr Complete support of maps in erl_syntax
Diffstat (limited to 'lib/syntax_tools/src/erl_prettypr.erl')
-rw-r--r--lib/syntax_tools/src/erl_prettypr.erl26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/syntax_tools/src/erl_prettypr.erl b/lib/syntax_tools/src/erl_prettypr.erl
index 1ffcf31134..4d6e88f58b 100644
--- a/lib/syntax_tools/src/erl_prettypr.erl
+++ b/lib/syntax_tools/src/erl_prettypr.erl
@@ -892,6 +892,32 @@ lay_2(Node, Ctxt) ->
beside(floating(text(".")), D2)),
maybe_parentheses(D3, Prec, Ctxt);
+ map_expr ->
+ {PrecL, Prec, _} = inop_prec('#'),
+ Ctxt1 = reset_prec(Ctxt),
+ D1 = par(seq(erl_syntax:map_expr_fields(Node),
+ floating(text(",")), Ctxt1, fun lay/2)),
+ D2 = beside(text("#{"), beside(D1, floating(text("}")))),
+ D3 = case erl_syntax:map_expr_argument(Node) of
+ none ->
+ D2;
+ A ->
+ beside(lay(A, set_prec(Ctxt, PrecL)), D2)
+ end,
+ maybe_parentheses(D3, Prec, Ctxt);
+
+ map_field_assoc ->
+ Ctxt1 = reset_prec(Ctxt),
+ D1 = lay(erl_syntax:map_field_assoc_name(Node), Ctxt1),
+ D2 = lay(erl_syntax:map_field_assoc_value(Node), Ctxt1),
+ par([D1, floating(text("=>")), D2], Ctxt1#ctxt.break_indent);
+
+ map_field_exact ->
+ Ctxt1 = reset_prec(Ctxt),
+ D1 = lay(erl_syntax:map_field_exact_name(Node), Ctxt1),
+ D2 = lay(erl_syntax:map_field_exact_value(Node), Ctxt1),
+ par([D1, floating(text(":=")), D2], Ctxt1#ctxt.break_indent);
+
rule ->
%% Comments on the name will be repeated; cf.
%% `function'.