diff options
Diffstat (limited to 'lib/elixir/lib/kernel/parallel_compiler.ex')
-rw-r--r-- | lib/elixir/lib/kernel/parallel_compiler.ex | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/elixir/lib/kernel/parallel_compiler.ex b/lib/elixir/lib/kernel/parallel_compiler.ex index 9044c8dce..ffcea6ee8 100644 --- a/lib/elixir/lib/kernel/parallel_compiler.ex +++ b/lib/elixir/lib/kernel/parallel_compiler.ex @@ -124,6 +124,7 @@ defmodule Kernel.ParallelCompiler do end send(parent, {:file_compiled, self(), file, result}) + exit(:shutdown) end timeout = Keyword.get(options, :long_compilation_threshold, 10) * 1_000 @@ -230,7 +231,7 @@ defmodule Kernel.ParallelCompiler do spawn_compilers(state) {:file_compiled, child_pid, file, :ok} -> - wait_for_down(queued, child_pid) + discard_down(child_pid) if callback = Keyword.get(options, :each_file) do callback.(file) @@ -246,7 +247,7 @@ defmodule Kernel.ParallelCompiler do spawn_compilers(%{state | entries: new_entries, waiting: new_waiting, queued: new_queued}) {:file_compiled, child_pid, file, {kind, reason, stack}} -> - wait_for_down(queued, child_pid) + discard_down(child_pid) print_error(file, kind, reason, stack) terminate(queued) @@ -256,16 +257,15 @@ defmodule Kernel.ParallelCompiler do end end - defp wait_for_down(queued, pid) do + defp discard_down(pid) do receive do - {:DOWN, ref, :process, ^pid, reason} -> handle_down(queued, ref, reason) + {:DOWN, _, :process, ^pid, _} -> :ok end end defp handle_down(_queued, _ref, :normal) do :ok end - defp handle_down(queued, ref, reason) do case List.keyfind(queued, ref, 1) do {_child, ^ref, file, _timer_ref} -> |