Handle list comprehensions in pretty printer
This commit is contained in:
parent
d4f291f252
commit
64e2fff91a
@ -305,6 +305,8 @@ expr_p(_, {tuple, _, Es}) ->
|
|||||||
tuple(lists:map(fun expr/1, Es));
|
tuple(lists:map(fun expr/1, Es));
|
||||||
expr_p(_, {list, _, Es}) ->
|
expr_p(_, {list, _, Es}) ->
|
||||||
list(lists:map(fun expr/1, Es));
|
list(lists:map(fun expr/1, Es));
|
||||||
|
expr_p(_, {list_comp, _, E, Binds}) ->
|
||||||
|
list([follow(expr(E), hsep(text("|"), par(punctuate(text(","), lists:map(fun lc_bind/1, Binds)), 0)), 0)]);
|
||||||
expr_p(_, {record, _, Fs}) ->
|
expr_p(_, {record, _, Fs}) ->
|
||||||
record(lists:map(fun field/1, Fs));
|
record(lists:map(fun field/1, Fs));
|
||||||
expr_p(_, {map, Ann, KVs}) ->
|
expr_p(_, {map, Ann, KVs}) ->
|
||||||
@ -387,6 +389,13 @@ stmt_p({else, Else}) ->
|
|||||||
_ -> block_expr(200, text("else"), Else)
|
_ -> block_expr(200, text("else"), Else)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
lc_bind({comprehension_bind, P, E}) ->
|
||||||
|
follow(hsep(expr(P), text("<-")), expr(E));
|
||||||
|
lc_bind({comprehension_if, _, E}) ->
|
||||||
|
beside([text("if("), expr(E), text(")")]);
|
||||||
|
lc_bind(Let) ->
|
||||||
|
letdecl("let", Let).
|
||||||
|
|
||||||
-spec bin_prec(aeso_syntax:bin_op()) -> {integer(), integer(), integer()}.
|
-spec bin_prec(aeso_syntax:bin_op()) -> {integer(), integer(), integer()}.
|
||||||
bin_prec('..') -> { 0, 0, 0}; %% Always printed inside '[ ]'
|
bin_prec('..') -> { 0, 0, 0}; %% Always printed inside '[ ]'
|
||||||
bin_prec('=') -> { 0, 0, 0}; %% Always printed inside '[ ]'
|
bin_prec('=') -> { 0, 0, 0}; %% Always printed inside '[ ]'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user