mirror of
https://github.com/correl/rebar.git
synced 2024-11-27 11:09:55 +00:00
Fix basho/rebar#388
If the syntax error is in a .hrl file, then the reported error message is not as useful because it's not clear which .erl file was being compiled. We can fix that easily by first printing what source file was being processed. We don't change the actual error message, so this will still work with your editor of choice for jumping to the right line. Before ------ Success: Compiled src/foo.erl Failure: include/foo.hrl:10: syntax error [...] After ----- Success: Compiled src/foo.erl Failure: Compiling src/foo.erl failed: include/foo.hrl:10: syntax error [...]
This commit is contained in:
parent
5d2b9ba23f
commit
97c9fdf31a
1 changed files with 23 additions and 16 deletions
|
@ -49,7 +49,7 @@ run(Config, FirstFiles, RestFiles, CompileFn) ->
|
||||||
Jobs = rebar:get_jobs(Config),
|
Jobs = rebar:get_jobs(Config),
|
||||||
?DEBUG("Starting ~B compile worker(s)~n", [Jobs]),
|
?DEBUG("Starting ~B compile worker(s)~n", [Jobs]),
|
||||||
Pids = [spawn_monitor(F) || _I <- lists:seq(1,Jobs)],
|
Pids = [spawn_monitor(F) || _I <- lists:seq(1,Jobs)],
|
||||||
compile_queue(Pids, RestFiles)
|
compile_queue(Config, Pids, RestFiles)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
run(Config, FirstFiles, SourceDir, SourceExt, TargetDir, TargetExt,
|
run(Config, FirstFiles, SourceDir, SourceExt, TargetDir, TargetExt,
|
||||||
|
@ -139,27 +139,31 @@ compile_each([Source | Rest], Config, CompileFn) ->
|
||||||
skipped ->
|
skipped ->
|
||||||
?INFO("Skipped ~s\n", [Source]);
|
?INFO("Skipped ~s\n", [Source]);
|
||||||
Error ->
|
Error ->
|
||||||
|
?CONSOLE("Compiling ~s failed:\n",
|
||||||
|
[maybe_absname(Config, Source)]),
|
||||||
maybe_report(Error),
|
maybe_report(Error),
|
||||||
?DEBUG("Compilation failed: ~p\n", [Error]),
|
?DEBUG("Compilation failed: ~p\n", [Error]),
|
||||||
?FAIL
|
?FAIL
|
||||||
end,
|
end,
|
||||||
compile_each(Rest, Config, CompileFn).
|
compile_each(Rest, Config, CompileFn).
|
||||||
|
|
||||||
compile_queue([], []) ->
|
compile_queue(_Config, [], []) ->
|
||||||
ok;
|
ok;
|
||||||
compile_queue(Pids, Targets) ->
|
compile_queue(Config, Pids, Targets) ->
|
||||||
receive
|
receive
|
||||||
{next, Worker} ->
|
{next, Worker} ->
|
||||||
case Targets of
|
case Targets of
|
||||||
[] ->
|
[] ->
|
||||||
Worker ! empty,
|
Worker ! empty,
|
||||||
compile_queue(Pids, Targets);
|
compile_queue(Config, Pids, Targets);
|
||||||
[Source | Rest] ->
|
[Source | Rest] ->
|
||||||
Worker ! {compile, Source},
|
Worker ! {compile, Source},
|
||||||
compile_queue(Pids, Rest)
|
compile_queue(Config, Pids, Rest)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{fail, Error} ->
|
{fail, [_, {source, Source}}=Error] ->
|
||||||
|
?CONSOLE("Compiling ~s failed:\n",
|
||||||
|
[maybe_absname(Config, Source)]),
|
||||||
maybe_report(Error),
|
maybe_report(Error),
|
||||||
?DEBUG("Worker compilation failed: ~p\n", [Error]),
|
?DEBUG("Worker compilation failed: ~p\n", [Error]),
|
||||||
?FAIL;
|
?FAIL;
|
||||||
|
@ -167,20 +171,20 @@ compile_queue(Pids, Targets) ->
|
||||||
{compiled, Source, Warnings} ->
|
{compiled, Source, Warnings} ->
|
||||||
report(Warnings),
|
report(Warnings),
|
||||||
?CONSOLE("Compiled ~s\n", [Source]),
|
?CONSOLE("Compiled ~s\n", [Source]),
|
||||||
compile_queue(Pids, Targets);
|
compile_queue(Config, Pids, Targets);
|
||||||
|
|
||||||
{compiled, Source} ->
|
{compiled, Source} ->
|
||||||
?CONSOLE("Compiled ~s\n", [Source]),
|
?CONSOLE("Compiled ~s\n", [Source]),
|
||||||
compile_queue(Pids, Targets);
|
compile_queue(Config, Pids, Targets);
|
||||||
|
|
||||||
{skipped, Source} ->
|
{skipped, Source} ->
|
||||||
?INFO("Skipped ~s\n", [Source]),
|
?INFO("Skipped ~s\n", [Source]),
|
||||||
compile_queue(Pids, Targets);
|
compile_queue(Config, Pids, Targets);
|
||||||
|
|
||||||
{'DOWN', Mref, _, Pid, normal} ->
|
{'DOWN', Mref, _, Pid, normal} ->
|
||||||
?DEBUG("Worker exited cleanly\n", []),
|
?DEBUG("Worker exited cleanly\n", []),
|
||||||
Pids2 = lists:delete({Pid, Mref}, Pids),
|
Pids2 = lists:delete({Pid, Mref}, Pids),
|
||||||
compile_queue(Pids2, Targets);
|
compile_queue(Config, Pids2, Targets);
|
||||||
|
|
||||||
{'DOWN', _Mref, _, _Pid, Info} ->
|
{'DOWN', _Mref, _, _Pid, Info} ->
|
||||||
?DEBUG("Worker failed: ~p\n", [Info]),
|
?DEBUG("Worker failed: ~p\n", [Info]),
|
||||||
|
@ -239,12 +243,7 @@ report(Messages) ->
|
||||||
|
|
||||||
format_errors(Config, _MainSource, Extra, Errors) ->
|
format_errors(Config, _MainSource, Extra, Errors) ->
|
||||||
[begin
|
[begin
|
||||||
AbsSource = case rebar_utils:processing_base_dir(Config) of
|
AbsSource = maybe_absname(Config, Source),
|
||||||
true ->
|
|
||||||
Source;
|
|
||||||
false ->
|
|
||||||
filename:absname(Source)
|
|
||||||
end,
|
|
||||||
[format_error(AbsSource, Extra, Desc) || Desc <- Descs]
|
[format_error(AbsSource, Extra, Desc) || Desc <- Descs]
|
||||||
end
|
end
|
||||||
|| {Source, Descs} <- Errors].
|
|| {Source, Descs} <- Errors].
|
||||||
|
@ -258,3 +257,11 @@ format_error(AbsSource, Extra, {Line, Mod, Desc}) ->
|
||||||
format_error(AbsSource, Extra, {Mod, Desc}) ->
|
format_error(AbsSource, Extra, {Mod, Desc}) ->
|
||||||
ErrorDesc = Mod:format_error(Desc),
|
ErrorDesc = Mod:format_error(Desc),
|
||||||
?FMT("~s: ~s~s~n", [AbsSource, Extra, ErrorDesc]).
|
?FMT("~s: ~s~s~n", [AbsSource, Extra, ErrorDesc]).
|
||||||
|
|
||||||
|
maybe_absname(Config, Filename) ->
|
||||||
|
case rebar_utils:processing_base_dir(Config) of
|
||||||
|
true ->
|
||||||
|
Filename;
|
||||||
|
false ->
|
||||||
|
filename:absname(Filename)
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in a new issue