diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2014-02-01 04:20:00 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2014-02-01 04:20:00 +0100 |
commit | 81824d20efb18b08d53aa5bb7e1c764074f473e7 (patch) | |
tree | c4db0a3a653b3a3d09cf6dc9c3bbd1719a63df8a /lib/syntax_tools | |
parent | 53a9a250470c29334a07dddafb6b1adcde39596b (diff) | |
download | otp-81824d20efb18b08d53aa5bb7e1c764074f473e7.tar.gz otp-81824d20efb18b08d53aa5bb7e1c764074f473e7.tar.bz2 otp-81824d20efb18b08d53aa5bb7e1c764074f473e7.zip |
Support maps in erl_prettypr
Diffstat (limited to 'lib/syntax_tools')
-rw-r--r-- | lib/syntax_tools/src/erl_prettypr.erl | 26 |
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'. |