Add fann() to nil
This commit is contained in:
parent
7648732879
commit
835b186499
@ -61,7 +61,7 @@
|
|||||||
-type fann() :: [ {line, aeso_syntax:ann_line()} ].
|
-type fann() :: [ {line, aeso_syntax:ann_line()} ].
|
||||||
|
|
||||||
-type fexpr() :: {lit, fann(), flit()}
|
-type fexpr() :: {lit, fann(), flit()}
|
||||||
| nil
|
| {nil, fann()}
|
||||||
| {var, fann(), var_name()}
|
| {var, fann(), var_name()}
|
||||||
| {def, fann(), fun_name(), [fexpr()]}
|
| {def, fann(), fun_name(), [fexpr()]}
|
||||||
| {remote, fann(), [ftype()], ftype(), fexpr(), fun_name(), [fexpr()]}
|
| {remote, fann(), [ftype()], ftype(), fexpr(), fun_name(), [fexpr()]}
|
||||||
@ -95,7 +95,7 @@
|
|||||||
| {bool, false | true}
|
| {bool, false | true}
|
||||||
| {int, integer()}
|
| {int, integer()}
|
||||||
| {string, binary()}
|
| {string, binary()}
|
||||||
| nil
|
| {nil, fann()}
|
||||||
| {'::', var_name(), var_name()}
|
| {'::', var_name(), var_name()}
|
||||||
| {con, fann(), arities(), tag(), [var_name()]}
|
| {con, fann(), arities(), tag(), [var_name()]}
|
||||||
| {tuple, fann(), [var_name()]}
|
| {tuple, fann(), [var_name()]}
|
||||||
@ -667,14 +667,14 @@ 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) -> {op, to_fann(aeso_syntax:get_ann(E)), '::', [expr_to_fcode(Env, E), L]} end,
|
lists:foldr(fun(E, L) -> {op, to_fann(aeso_syntax:get_ann(E)), '::', [expr_to_fcode(Env, E), L]} end,
|
||||||
nil, Es);
|
{nil, []}, Es);
|
||||||
|
|
||||||
expr_to_fcode(Env, _Type, {app, _, {'..', _}, [A, B]}) ->
|
expr_to_fcode(Env, _Type, {app, _, {'..', _}, [A, B]}) ->
|
||||||
{def_u, Ann, FromTo, _} = resolve_fun(Env, ["ListInternal", "from_to"]),
|
{def_u, Ann, FromTo, _} = resolve_fun(Env, ["ListInternal", "from_to"]),
|
||||||
{def, Ann, FromTo, [expr_to_fcode(Env, A), expr_to_fcode(Env, B)]};
|
{def, Ann, FromTo, [expr_to_fcode(Env, A), expr_to_fcode(Env, B)]};
|
||||||
|
|
||||||
expr_to_fcode(Env, _Type, {list_comp, As, Yield, []}) ->
|
expr_to_fcode(Env, _Type, {list_comp, As, Yield, []}) ->
|
||||||
{op, to_fann(As), '::', [expr_to_fcode(Env, Yield), nil]};
|
{op, to_fann(As), '::', [expr_to_fcode(Env, Yield), {nil, []}]};
|
||||||
expr_to_fcode(Env, _Type, {list_comp, As, Yield, [{comprehension_bind, Pat = {typed, _, _, PatType}, BindExpr}|Rest]}) ->
|
expr_to_fcode(Env, _Type, {list_comp, As, Yield, [{comprehension_bind, Pat = {typed, _, _, PatType}, BindExpr}|Rest]}) ->
|
||||||
Arg = fresh_name(),
|
Arg = fresh_name(),
|
||||||
Env1 = bind_var(Env, Arg),
|
Env1 = bind_var(Env, Arg),
|
||||||
@ -686,7 +686,7 @@ expr_to_fcode(Env, _Type, {list_comp, As, Yield, [{comprehension_bind, Pat = {ty
|
|||||||
expr_to_fcode(Env, Type, {list_comp, As, Yield, [{comprehension_if, _, Cond}|Rest]}) ->
|
expr_to_fcode(Env, Type, {list_comp, As, Yield, [{comprehension_if, _, Cond}|Rest]}) ->
|
||||||
make_if(expr_to_fcode(Env, Cond),
|
make_if(expr_to_fcode(Env, Cond),
|
||||||
expr_to_fcode(Env, Type, {list_comp, As, Yield, Rest}),
|
expr_to_fcode(Env, Type, {list_comp, As, Yield, Rest}),
|
||||||
nil
|
{nil, []}
|
||||||
);
|
);
|
||||||
expr_to_fcode(Env, Type, {list_comp, As, Yield, [LV = {letval, _, _, _}|Rest]}) ->
|
expr_to_fcode(Env, Type, {list_comp, As, Yield, [LV = {letval, _, _, _}|Rest]}) ->
|
||||||
expr_to_fcode(Env, Type, {block, As, [LV, {list_comp, As, Yield, Rest}]});
|
expr_to_fcode(Env, Type, {block, As, [LV, {list_comp, As, Yield, Rest}]});
|
||||||
@ -865,7 +865,7 @@ alts_to_fcode(Env, Type, X, Alts, Switch) ->
|
|||||||
| {bool, false | true}
|
| {bool, false | true}
|
||||||
| {int, integer()}
|
| {int, integer()}
|
||||||
| {string, binary()}
|
| {string, binary()}
|
||||||
| nil
|
| {nil, fann()}
|
||||||
| {'::', fpat(), fpat()}
|
| {'::', fpat(), fpat()}
|
||||||
| {tuple, fann(), [fpat()]}
|
| {tuple, fann(), [fpat()]}
|
||||||
| {con, fann(), arities(), tag(), [fpat()]}
|
| {con, fann(), arities(), tag(), [fpat()]}
|
||||||
@ -950,7 +950,7 @@ merge_alt(I, X, {P, A}, [{Q, As} | Rest]) ->
|
|||||||
({bool, B}, {bool, B}) -> match;
|
({bool, B}, {bool, B}) -> match;
|
||||||
({int, N}, {int, N}) -> match;
|
({int, N}, {int, N}) -> match;
|
||||||
({string, S}, {string, S}) -> match;
|
({string, S}, {string, S}) -> match;
|
||||||
(nil, nil) -> match;
|
({nil, []}, {nil, []}) -> match;
|
||||||
({'::', _, _}, {'::', _, _}) -> match;
|
({'::', _, _}, {'::', _, _}) -> match;
|
||||||
({con, _, _, C, _}, {con, _, _, C, _}) -> match;
|
({con, _, _, C, _}, {con, _, _, C, _}) -> match;
|
||||||
({con, _, _, _, _}, {con, _, _, _, _}) -> mismatch;
|
({con, _, _, _, _}, {con, _, _, _, _}) -> mismatch;
|
||||||
@ -978,7 +978,7 @@ expand(I, X, P, Q, Case = {'case', Ps, E}) ->
|
|||||||
({bool, _}) -> bool;
|
({bool, _}) -> bool;
|
||||||
({int, _}) -> int;
|
({int, _}) -> int;
|
||||||
({string, _}) -> string;
|
({string, _}) -> string;
|
||||||
(nil) -> list;
|
({nil, _}) -> list;
|
||||||
({'::', _, _}) -> list;
|
({'::', _, _}) -> list;
|
||||||
({con, _, As, _, _}) -> {variant, As}
|
({con, _, As, _, _}) -> {variant, As}
|
||||||
end,
|
end,
|
||||||
@ -988,7 +988,7 @@ expand(I, X, P, Q, Case = {'case', Ps, E}) ->
|
|||||||
bool -> {[MkCase({bool, B}, 0) || B <- [false, true]], []};
|
bool -> {[MkCase({bool, B}, 0) || B <- [false, true]], []};
|
||||||
int -> {[MkCase(Q, 0)], [{P, Case}]};
|
int -> {[MkCase(Q, 0)], [{P, Case}]};
|
||||||
string -> {[MkCase(Q, 0)], [{P, Case}]};
|
string -> {[MkCase(Q, 0)], [{P, Case}]};
|
||||||
list -> {[MkCase(nil, 0), MkCase({'::', fresh_name(), fresh_name()}, 2)], []};
|
list -> {[MkCase({nil, []}, 0), MkCase({'::', fresh_name(), fresh_name()}, 2)], []};
|
||||||
{variant, As} -> {[MkCase({con, [], As, C - 1, [fresh_name() || _ <- lists:seq(1, Ar)]}, Ar)
|
{variant, As} -> {[MkCase({con, [], As, C - 1, [fresh_name() || _ <- lists:seq(1, Ar)]}, Ar)
|
||||||
|| {C, Ar} <- indexed(As)], []}
|
|| {C, Ar} <- indexed(As)], []}
|
||||||
end.
|
end.
|
||||||
@ -1004,7 +1004,7 @@ split_pat(P = {var, FAnn, _}) -> {{var, FAnn, fresh_name()}, [P]};
|
|||||||
split_pat({bool, B}) -> {{bool, B}, []};
|
split_pat({bool, B}) -> {{bool, B}, []};
|
||||||
split_pat({int, N}) -> {{int, N}, []};
|
split_pat({int, N}) -> {{int, N}, []};
|
||||||
split_pat({string, N}) -> {{string, N}, []};
|
split_pat({string, N}) -> {{string, N}, []};
|
||||||
split_pat(nil) -> {nil, []};
|
split_pat({nil, FAnn}) -> {{nil, FAnn}, []};
|
||||||
split_pat({'::', P, Q}) -> {{'::', fresh_name(), fresh_name()}, [P, Q]};
|
split_pat({'::', P, Q}) -> {{'::', fresh_name(), fresh_name()}, [P, Q]};
|
||||||
split_pat({con, FAnn, As, I, Pats}) ->
|
split_pat({con, FAnn, As, I, Pats}) ->
|
||||||
Xs = [fresh_name() || _ <- Pats],
|
Xs = [fresh_name() || _ <- Pats],
|
||||||
@ -1019,7 +1019,7 @@ split_pat({tuple, FAnn, Pats}) ->
|
|||||||
split_vars({bool, _}, boolean) -> [];
|
split_vars({bool, _}, boolean) -> [];
|
||||||
split_vars({int, _}, integer) -> [];
|
split_vars({int, _}, integer) -> [];
|
||||||
split_vars({string, _}, string) -> [];
|
split_vars({string, _}, string) -> [];
|
||||||
split_vars(nil, {list, _}) -> [];
|
split_vars({nil, _}, {list, _}) -> [];
|
||||||
split_vars({'::', X, Xs}, {list, T}) -> [{X, T}, {Xs, {list, T}}];
|
split_vars({'::', X, Xs}, {list, T}) -> [{X, T}, {Xs, {list, T}}];
|
||||||
split_vars({assign, X, P}, T) -> [{X, T}, {P, T}];
|
split_vars({assign, X, P}, T) -> [{X, T}, {P, T}];
|
||||||
split_vars({con, _, _, I, Xs}, {variant, Cons}) ->
|
split_vars({con, _, _, I, Xs}, {variant, Cons}) ->
|
||||||
@ -1065,7 +1065,7 @@ pat_to_fcode(_Env, _Type, {string, _, N}) -> {string, N};
|
|||||||
pat_to_fcode(Env, _Type, {list, _, Ps}) ->
|
pat_to_fcode(Env, _Type, {list, _, Ps}) ->
|
||||||
lists:foldr(fun(P, Qs) ->
|
lists:foldr(fun(P, Qs) ->
|
||||||
{'::', pat_to_fcode(Env, P), Qs}
|
{'::', pat_to_fcode(Env, P), Qs}
|
||||||
end, nil, Ps);
|
end, {nil, []}, Ps);
|
||||||
pat_to_fcode(Env, _Type, {app, _, {'::', _}, [P, Q]}) ->
|
pat_to_fcode(Env, _Type, {app, _, {'::', _}, [P, Q]}) ->
|
||||||
{'::', pat_to_fcode(Env, P), pat_to_fcode(Env, Q)};
|
{'::', pat_to_fcode(Env, P), pat_to_fcode(Env, Q)};
|
||||||
pat_to_fcode(Env, {record_t, Fields}, {record, _, FieldPats}) ->
|
pat_to_fcode(Env, {record_t, Fields}, {record, _, FieldPats}) ->
|
||||||
@ -1346,7 +1346,7 @@ lambda_lift_expr(Layout, {remote_u, Ann, ArgsT, RetT, Ct, F}) ->
|
|||||||
lambda_lift_expr(Layout, Expr) ->
|
lambda_lift_expr(Layout, Expr) ->
|
||||||
case Expr of
|
case Expr of
|
||||||
{lit, _, _} -> Expr;
|
{lit, _, _} -> Expr;
|
||||||
nil -> Expr;
|
{nil, _} -> Expr;
|
||||||
{var, _, _} -> Expr;
|
{var, _, _} -> Expr;
|
||||||
{closure, _, _, _} -> Expr;
|
{closure, _, _, _} -> Expr;
|
||||||
{def, Ann, D, As} -> {def, Ann, D, lambda_lift_exprs(Layout, As)};
|
{def, Ann, D, As} -> {def, Ann, D, lambda_lift_exprs(Layout, As)};
|
||||||
@ -1626,7 +1626,7 @@ simpl_case(Env, E, [{'case', Pat, Body} | Alts]) ->
|
|||||||
match_pat({tuple, _, Xs}, {tuple, _, Es}) -> lists:zip(Xs, Es);
|
match_pat({tuple, _, Xs}, {tuple, _, Es}) -> lists:zip(Xs, Es);
|
||||||
match_pat({con, _, _, C, Xs}, {con, _, _, C, Es}) -> lists:zip(Xs, Es);
|
match_pat({con, _, _, C, Xs}, {con, _, _, C, Es}) -> lists:zip(Xs, Es);
|
||||||
match_pat(L, {lit, _, L}) -> [];
|
match_pat(L, {lit, _, L}) -> [];
|
||||||
match_pat(nil, nil) -> [];
|
match_pat({nil, _}, {nil, _}) -> [];
|
||||||
match_pat({'::', X, Y}, {op, _, '::', [A, B]}) -> [{X, A}, {Y, B}];
|
match_pat({'::', X, Y}, {op, _, '::', [A, B]}) -> [{X, A}, {Y, B}];
|
||||||
match_pat({var, _, X}, E) -> [{X, E}];
|
match_pat({var, _, X}, E) -> [{X, E}];
|
||||||
match_pat({assign, X, P}, E) -> [{X, E}, {P, E}];
|
match_pat({assign, X, P}, E) -> [{X, E}, {P, E}];
|
||||||
@ -1653,7 +1653,7 @@ constructor_form(Env, Expr) ->
|
|||||||
{con, _, _, _, _} -> Expr;
|
{con, _, _, _, _} -> Expr;
|
||||||
{tuple, _, _} -> Expr;
|
{tuple, _, _} -> Expr;
|
||||||
{lit, _, _} -> Expr;
|
{lit, _, _} -> Expr;
|
||||||
nil -> Expr;
|
{nil, _} -> Expr;
|
||||||
{op, _, '::', _} -> Expr;
|
{op, _, '::', _} -> Expr;
|
||||||
_ -> false
|
_ -> false
|
||||||
end.
|
end.
|
||||||
@ -1677,14 +1677,14 @@ drop_unused_lets(_, Expr) -> Expr.
|
|||||||
-spec safe_to_duplicate(fexpr()) -> boolean().
|
-spec safe_to_duplicate(fexpr()) -> boolean().
|
||||||
safe_to_duplicate({lit, _, _}) -> true;
|
safe_to_duplicate({lit, _, _}) -> true;
|
||||||
safe_to_duplicate({var, _, _}) -> true;
|
safe_to_duplicate({var, _, _}) -> true;
|
||||||
safe_to_duplicate(nil) -> true;
|
safe_to_duplicate({nil, _}) -> true;
|
||||||
safe_to_duplicate({tuple, _, []}) -> true;
|
safe_to_duplicate({tuple, _, []}) -> true;
|
||||||
safe_to_duplicate(_) -> false.
|
safe_to_duplicate(_) -> false.
|
||||||
|
|
||||||
-spec read_only(fexpr() | fsplit() | fcase() | [fexpr()] | [fcase()]) -> boolean().
|
-spec read_only(fexpr() | fsplit() | fcase() | [fexpr()] | [fcase()]) -> boolean().
|
||||||
read_only({lit, _, _}) -> true;
|
read_only({lit, _, _}) -> true;
|
||||||
read_only({var, _, _}) -> true;
|
read_only({var, _, _}) -> true;
|
||||||
read_only(nil) -> true;
|
read_only({nil, _}) -> true;
|
||||||
read_only({con, _, _, _, Es}) -> read_only(Es);
|
read_only({con, _, _, _, Es}) -> read_only(Es);
|
||||||
read_only({tuple, _, Es}) -> read_only(Es);
|
read_only({tuple, _, Es}) -> read_only(Es);
|
||||||
read_only({proj, _, E, _}) -> read_only(E);
|
read_only({proj, _, E, _}) -> read_only(E);
|
||||||
@ -1908,7 +1908,7 @@ pat_vars({var, _, X}) -> [X || X /= "_"];
|
|||||||
pat_vars({bool, _}) -> [];
|
pat_vars({bool, _}) -> [];
|
||||||
pat_vars({int, _}) -> [];
|
pat_vars({int, _}) -> [];
|
||||||
pat_vars({string, _}) -> [];
|
pat_vars({string, _}) -> [];
|
||||||
pat_vars(nil) -> [];
|
pat_vars({nil, _}) -> [];
|
||||||
pat_vars({'::', P, Q}) -> pat_vars(P) ++ pat_vars(Q);
|
pat_vars({'::', P, Q}) -> pat_vars(P) ++ pat_vars(Q);
|
||||||
pat_vars({tuple, _, Ps}) -> pat_vars(Ps);
|
pat_vars({tuple, _, Ps}) -> pat_vars(Ps);
|
||||||
pat_vars({con, _, _, _, Ps}) -> pat_vars(Ps);
|
pat_vars({con, _, _, _, Ps}) -> pat_vars(Ps);
|
||||||
@ -1920,7 +1920,7 @@ fsplit_pat_vars({var, _, X}) -> [X || X /= "_"];
|
|||||||
fsplit_pat_vars({bool, _}) -> [];
|
fsplit_pat_vars({bool, _}) -> [];
|
||||||
fsplit_pat_vars({int, _}) -> [];
|
fsplit_pat_vars({int, _}) -> [];
|
||||||
fsplit_pat_vars({string, _}) -> [];
|
fsplit_pat_vars({string, _}) -> [];
|
||||||
fsplit_pat_vars(nil) -> [];
|
fsplit_pat_vars({nil, _}) -> [];
|
||||||
fsplit_pat_vars({'::', P, Q}) -> [P, Q];
|
fsplit_pat_vars({'::', P, Q}) -> [P, Q];
|
||||||
fsplit_pat_vars({tuple, _, Ps}) -> Ps;
|
fsplit_pat_vars({tuple, _, Ps}) -> Ps;
|
||||||
fsplit_pat_vars({con, _, _, _, Ps}) -> Ps.
|
fsplit_pat_vars({con, _, _, _, Ps}) -> Ps.
|
||||||
@ -1932,7 +1932,7 @@ free_vars(Expr) ->
|
|||||||
case Expr of
|
case Expr of
|
||||||
{var, _, X} -> [X];
|
{var, _, X} -> [X];
|
||||||
{lit, _, _} -> [];
|
{lit, _, _} -> [];
|
||||||
nil -> [];
|
{nil, _} -> [];
|
||||||
{def, _, _, As} -> free_vars(As);
|
{def, _, _, As} -> free_vars(As);
|
||||||
{def_u, _, _, _} -> [];
|
{def_u, _, _, _} -> [];
|
||||||
{remote, _, _, _, Ct, _, As} -> free_vars([Ct | As]);
|
{remote, _, _, _, Ct, _, As} -> free_vars([Ct | As]);
|
||||||
@ -1964,7 +1964,7 @@ used_defs(Expr) ->
|
|||||||
case Expr of
|
case Expr of
|
||||||
{var, _, _} -> [];
|
{var, _, _} -> [];
|
||||||
{lit, _, _} -> [];
|
{lit, _, _} -> [];
|
||||||
nil -> [];
|
{nil, _} -> [];
|
||||||
{def, _, F, As} -> lists:umerge([F], used_defs(As));
|
{def, _, F, As} -> lists:umerge([F], used_defs(As));
|
||||||
{def_u, _, F, _} -> [F];
|
{def_u, _, F, _} -> [F];
|
||||||
{remote, _, _, _, Ct, _, As} -> used_defs([Ct | As]);
|
{remote, _, _, _, Ct, _, As} -> used_defs([Ct | As]);
|
||||||
@ -1998,7 +1998,7 @@ bottom_up(F, Expr) -> bottom_up(F, #{}, Expr).
|
|||||||
bottom_up(F, Env, Expr) ->
|
bottom_up(F, Env, Expr) ->
|
||||||
F(Env, case Expr of
|
F(Env, case Expr of
|
||||||
{lit, _, _} -> Expr;
|
{lit, _, _} -> Expr;
|
||||||
nil -> Expr;
|
{nil, _} -> Expr;
|
||||||
{var, _, _} -> Expr;
|
{var, _, _} -> Expr;
|
||||||
{def, Ann, D, Es} -> {def, Ann, D, [bottom_up(F, Env, E) || E <- Es]};
|
{def, Ann, D, Es} -> {def, Ann, D, [bottom_up(F, Env, E) || E <- Es]};
|
||||||
{def_u, _, _, _} -> Expr;
|
{def_u, _, _, _} -> Expr;
|
||||||
@ -2058,7 +2058,7 @@ get_named_arg({named_arg_t, _, {id, _, Name}, _, Default}, Args) ->
|
|||||||
rename(Ren, Expr) ->
|
rename(Ren, Expr) ->
|
||||||
case Expr of
|
case Expr of
|
||||||
{lit, _, _} -> Expr;
|
{lit, _, _} -> Expr;
|
||||||
nil -> nil;
|
{nil, Ann} -> {nil, Ann};
|
||||||
{var, Ann, X} -> {var, Ann, rename_var(Ren, X)};
|
{var, Ann, X} -> {var, Ann, rename_var(Ren, X)};
|
||||||
{def, Ann, D, Es} -> {def, Ann, D, [rename(Ren, E) || E <- Es]};
|
{def, Ann, D, Es} -> {def, Ann, D, [rename(Ren, E) || E <- Es]};
|
||||||
{def_u, _, _, _} -> Expr;
|
{def_u, _, _, _} -> Expr;
|
||||||
@ -2116,7 +2116,7 @@ rename_fpats(Ren, [P | Ps]) ->
|
|||||||
rename_fpat(Ren, P = {bool, _}) -> {P, Ren};
|
rename_fpat(Ren, P = {bool, _}) -> {P, Ren};
|
||||||
rename_fpat(Ren, P = {int, _}) -> {P, Ren};
|
rename_fpat(Ren, P = {int, _}) -> {P, Ren};
|
||||||
rename_fpat(Ren, P = {string, _}) -> {P, Ren};
|
rename_fpat(Ren, P = {string, _}) -> {P, Ren};
|
||||||
rename_fpat(Ren, P = nil) -> {P, Ren};
|
rename_fpat(Ren, P = {nil, _}) -> {P, Ren};
|
||||||
rename_fpat(Ren, {'::', P, Q}) ->
|
rename_fpat(Ren, {'::', P, Q}) ->
|
||||||
{P1, Ren1} = rename_fpat(Ren, P),
|
{P1, Ren1} = rename_fpat(Ren, P),
|
||||||
{Q1, Ren2} = rename_fpat(Ren1, Q),
|
{Q1, Ren2} = rename_fpat(Ren1, Q),
|
||||||
@ -2135,7 +2135,7 @@ rename_fpat(Ren, {tuple, Ann, Ps}) ->
|
|||||||
rename_spat(Ren, P = {bool, _}) -> {P, Ren};
|
rename_spat(Ren, P = {bool, _}) -> {P, Ren};
|
||||||
rename_spat(Ren, P = {int, _}) -> {P, Ren};
|
rename_spat(Ren, P = {int, _}) -> {P, Ren};
|
||||||
rename_spat(Ren, P = {string, _}) -> {P, Ren};
|
rename_spat(Ren, P = {string, _}) -> {P, Ren};
|
||||||
rename_spat(Ren, P = nil) -> {P, Ren};
|
rename_spat(Ren, P = {nil, _}) -> {P, Ren};
|
||||||
rename_spat(Ren, {'::', X, Y}) ->
|
rename_spat(Ren, {'::', X, Y}) ->
|
||||||
{X1, Ren1} = rename_binding(Ren, X),
|
{X1, Ren1} = rename_binding(Ren, X),
|
||||||
{Y1, Ren2} = rename_binding(Ren1, Y),
|
{Y1, Ren2} = rename_binding(Ren1, Y),
|
||||||
@ -2292,7 +2292,7 @@ pp_fexpr({lit, _, {typerep, T}}) ->
|
|||||||
pp_ftype(T);
|
pp_ftype(T);
|
||||||
pp_fexpr({lit, _, {Tag, Lit}}) ->
|
pp_fexpr({lit, _, {Tag, Lit}}) ->
|
||||||
aeso_pretty:expr({Tag, [], Lit});
|
aeso_pretty:expr({Tag, [], Lit});
|
||||||
pp_fexpr(nil) ->
|
pp_fexpr({nil, _}) ->
|
||||||
pp_text("[]");
|
pp_text("[]");
|
||||||
pp_fexpr({var, _, X}) -> pp_text(X);
|
pp_fexpr({var, _, X}) -> pp_text(X);
|
||||||
pp_fexpr({def, Fun}) -> pp_fun_name(Fun);
|
pp_fexpr({def, Fun}) -> pp_fun_name(Fun);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user