Fix warnings reporting and stdlib warnings #858
@ -826,7 +826,8 @@ infer(Contracts, Options) ->
|
|||||||
{Env1, Decls} = infer1(Env, Contracts1, [], Options),
|
{Env1, Decls} = infer1(Env, Contracts1, [], Options),
|
||||||
when_warning(warn_unused_functions, fun() -> destroy_and_report_unused_functions() end),
|
when_warning(warn_unused_functions, fun() -> destroy_and_report_unused_functions() end),
|
||||||
when_option(warn_error, fun() -> destroy_and_report_warnings_as_type_errors() end),
|
when_option(warn_error, fun() -> destroy_and_report_warnings_as_type_errors() end),
|
||||||
Warnings = lists:map(fun mk_warning/1, ets_tab2list(warnings)),
|
WarningsUnsorted = lists:map(fun mk_warning/1, ets_tab2list(warnings)),
|
||||||
|
Warnings = aeso_warnings:sort_warnings(WarningsUnsorted),
|
||||||
{Env2, DeclsFolded, DeclsUnfolded} =
|
{Env2, DeclsFolded, DeclsUnfolded} =
|
||||||
case proplists:get_value(dont_unfold, Options, false) of
|
case proplists:get_value(dont_unfold, Options, false) of
|
||||||
true -> {Env1, Decls, Decls};
|
true -> {Env1, Decls, Decls};
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
-export([ new/1
|
-export([ new/1
|
||||||
, new/2
|
, new/2
|
||||||
, warn_to_err/2
|
, warn_to_err/2
|
||||||
|
, sort_warnings/1
|
||||||
, pp/1
|
, pp/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
@ -23,5 +24,8 @@ new(Pos, Msg) ->
|
|||||||
warn_to_err(Kind, #warn{ pos = Pos, message = Msg }) ->
|
warn_to_err(Kind, #warn{ pos = Pos, message = Msg }) ->
|
||||||
aeso_errors:new(Kind, Pos, lists:flatten(Msg)).
|
aeso_errors:new(Kind, Pos, lists:flatten(Msg)).
|
||||||
|
|
||||||
|
sort_warnings(Warnings) ->
|
||||||
|
lists:sort(fun(W1, W2) -> W1#warn.pos =< W2#warn.pos end, Warnings).
|
||||||
|
|
||||||
pp(#warn{ pos = Pos, message = Msg }) ->
|
pp(#warn{ pos = Pos, message = Msg }) ->
|
||||||
lists:flatten(io_lib:format("Warning~s:\n~s", [aeso_errors:pp_pos(Pos), Msg])).
|
lists:flatten(io_lib:format("Warning~s:\n~s", [aeso_errors:pp_pos(Pos), Msg])).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user