fix breakage after unary operators
This commit is contained in:
parent
8a5c64ad45
commit
e13e81d1ca
@ -325,7 +325,7 @@ expr_to_fcode(Env, {record_t, FieldTypes}, {record, _Ann, Rec, Fields}) ->
|
|||||||
|
|
||||||
%% Lists
|
%% Lists
|
||||||
expr_to_fcode(Env, _Type, {list, _, Es}) ->
|
expr_to_fcode(Env, _Type, {list, _, Es}) ->
|
||||||
lists:foldr(fun(E, L) -> {binop, '::', expr_to_fcode(Env, E), L} end,
|
lists:foldr(fun(E, L) -> {op, '::', expr_to_fcode(Env, E), L} end,
|
||||||
nil, Es);
|
nil, Es);
|
||||||
|
|
||||||
%% Conditionals
|
%% Conditionals
|
||||||
@ -520,7 +520,8 @@ rename(Ren, Expr) ->
|
|||||||
{tuple, Es} -> {tuple, [rename(Ren, E) || E <- Es]};
|
{tuple, Es} -> {tuple, [rename(Ren, E) || E <- Es]};
|
||||||
{proj, E, I} -> {proj, rename(Ren, E), I};
|
{proj, E, I} -> {proj, rename(Ren, E), I};
|
||||||
{set_proj, R, I, E} -> {set_proj, rename(Ren, R), I, rename(Ren, E)};
|
{set_proj, R, I, E} -> {set_proj, rename(Ren, R), I, rename(Ren, E)};
|
||||||
{binop, Op, E1, E2} -> {binop, Op, rename(Ren, E1), rename(Ren, E2)};
|
{op, Op, E1, E2} -> {op, Op, rename(Ren, E1), rename(Ren, E2)};
|
||||||
|
{op, Op, E} -> {op, Op, rename(Ren, E)};
|
||||||
{'let', X, E, Body} ->
|
{'let', X, E, Body} ->
|
||||||
{Z, Ren1} = rename_binding(Ren, X),
|
{Z, Ren1} = rename_binding(Ren, X),
|
||||||
{'let', Z, rename(Ren, E), rename(Ren1, Body)};
|
{'let', Z, rename(Ren, E), rename(Ren1, Body)};
|
||||||
@ -837,8 +838,10 @@ pp_fexpr({proj, E, I}) ->
|
|||||||
pp_beside([pp_fexpr(E), pp_text("."), pp_text(I)]);
|
pp_beside([pp_fexpr(E), pp_text("."), pp_text(I)]);
|
||||||
pp_fexpr({set_proj, E, I, A}) ->
|
pp_fexpr({set_proj, E, I, A}) ->
|
||||||
pp_beside(pp_fexpr(E), pp_braces(pp_beside([pp_text(I), pp_text(" = "), pp_fexpr(A)])));
|
pp_beside(pp_fexpr(E), pp_braces(pp_beside([pp_text(I), pp_text(" = "), pp_fexpr(A)])));
|
||||||
pp_fexpr({binop, Op, A, B}) ->
|
pp_fexpr({op, Op, A, B}) ->
|
||||||
pp_parens(pp_par([pp_fexpr(A), pp_text(Op), pp_fexpr(B)]));
|
pp_parens(pp_par([pp_fexpr(A), pp_text(Op), pp_fexpr(B)]));
|
||||||
|
pp_fexpr({op, Op, A}) ->
|
||||||
|
pp_parens(pp_par([pp_text(Op), pp_fexpr(A)]));
|
||||||
pp_fexpr({'let', X, A, B}) ->
|
pp_fexpr({'let', X, A, B}) ->
|
||||||
pp_par([pp_beside([pp_text("let "), pp_text(X), pp_text(" = "), pp_fexpr(A), pp_text(" in")]),
|
pp_par([pp_beside([pp_text("let "), pp_text(X), pp_text(" = "), pp_fexpr(A), pp_text(" in")]),
|
||||||
pp_fexpr(B)]);
|
pp_fexpr(B)]);
|
||||||
@ -866,8 +869,8 @@ pp_case({'case', Pat, Split}) ->
|
|||||||
prettypr:sep([pp_beside(pp_pat(Pat), pp_text(" =>")),
|
prettypr:sep([pp_beside(pp_pat(Pat), pp_text(" =>")),
|
||||||
prettypr:nest(2, pp_split(Split))]).
|
prettypr:nest(2, pp_split(Split))]).
|
||||||
|
|
||||||
pp_pat({tuple, Xs}) -> pp_fexpr({tuple, [{var, X} || X <- Xs]});
|
pp_pat({tuple, Xs}) -> pp_fexpr({tuple, [{var, [X]} || X <- Xs]});
|
||||||
pp_pat({'::', X, Xs}) -> pp_fexpr({binop, '::', {var, X}, {var, Xs}});
|
pp_pat({'::', X, Xs}) -> pp_fexpr({op, '::', {var, [X]}, {var, [Xs]}});
|
||||||
pp_pat({con, As, I, Xs}) -> pp_fexpr({con, As, I, [{var, X} || X <- Xs]});
|
pp_pat({con, As, I, Xs}) -> pp_fexpr({con, As, I, [{var, [X]} || X <- Xs]});
|
||||||
pp_pat(Pat) -> pp_fexpr(Pat).
|
pp_pat(Pat) -> pp_fexpr(Pat).
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user