Ver código fonte

Friendlier output on include_lib errors

Turns output like this:

    ===> Compiling apps/c/src/c.erl failed
    apps/c/src/c.erl:3: can't find include lib "parse_trans/include/codegen.hrl"

Into:

    ===> Compiling apps/c/src/c.erl failed
    apps/c/src/c.erl:3: can't find include lib
    "parse_trans/include/codegen.hrl"; Make sure parse_trans is in your app
    file's 'applications' list

Which is likely going to help newcomers encountering issues.
pull/1850/head
Fred Hebert 6 anos atrás
pai
commit
e157b6c23f
1 arquivos alterados com 13 adições e 3 exclusões
  1. +13
    -3
      src/rebar_base_compiler.erl

+ 13
- 3
src/rebar_base_compiler.erl Ver arquivo

@ -264,14 +264,24 @@ report(Messages) ->
-spec format_errors(_, Extra, [err_or_warn()]) -> [string()] when -spec format_errors(_, Extra, [err_or_warn()]) -> [string()] when
Extra :: string(). Extra :: string().
format_errors(_MainSource, Extra, Errors) -> format_errors(_MainSource, Extra, Errors) ->
[begin
[format_error(Source, Extra, Desc) || Desc <- Descs]
end
[[format_error(Source, Extra, Desc) || Desc <- Descs]
|| {Source, Descs} <- Errors]. || {Source, Descs} <- Errors].
%% @private format compiler errors into proper outputtable strings %% @private format compiler errors into proper outputtable strings
-spec format_error(file:filename(), Extra, err_or_warn()) -> string() when -spec format_error(file:filename(), Extra, err_or_warn()) -> string() when
Extra :: string(). Extra :: string().
format_error(Source, Extra, {Line, Mod=epp, Desc={include,lib,File}}) ->
%% Special case for include file errors, overtaking the default one
BaseDesc = Mod:format_error(Desc),
Friendly = case filename:split(File) of
[Lib, "include", _] ->
io_lib:format("; Make sure ~s is in your app "
"file's 'applications' list", [Lib]);
_ ->
""
end,
FriendlyDesc = BaseDesc ++ Friendly,
?FMT("~ts:~w: ~ts~ts~n", [Source, Line, Extra, FriendlyDesc]);
format_error(Source, Extra, {{Line, Column}, Mod, Desc}) -> format_error(Source, Extra, {{Line, Column}, Mod, Desc}) ->
ErrorDesc = Mod:format_error(Desc), ErrorDesc = Mod:format_error(Desc),
?FMT("~ts:~w:~w: ~ts~ts~n", [Source, Line, Column, Extra, ErrorDesc]); ?FMT("~ts:~w:~w: ~ts~ts~n", [Source, Line, Column, Extra, ErrorDesc]);

Carregando…
Cancelar
Salvar