Skip to content

Commit d0fb357

Browse files
committed
Avoid purging non-loaded modules
1 parent b41f0f1 commit d0fb357

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

lib/mix/lib/mix/compilers/elixir.ex

+11-7
Original file line numberDiff line numberDiff line change
@@ -735,16 +735,22 @@ defmodule Mix.Compilers.Elixir do
735735

736736
defp remove_and_purge(beam, module) do
737737
_ = File.rm(beam)
738-
:code.purge(module)
739-
:code.delete(module)
738+
739+
if Code.loaded?(module) do
740+
:code.purge(module)
741+
:code.delete(module)
742+
end
740743
end
741744

742745
defp purge_modules_in_path(path) do
743746
with {:ok, beams} <- File.ls(path) do
744747
Enum.each(beams, fn beam ->
745748
module = beam |> Path.rootname() |> String.to_atom()
746-
:code.purge(module)
747-
:code.delete(module)
749+
750+
if Code.loaded?(module) do
751+
:code.purge(module)
752+
:code.delete(module)
753+
end
748754
end)
749755
end
750756
end
@@ -922,9 +928,7 @@ defmodule Mix.Compilers.Elixir do
922928
end
923929

924930
for {module, _} <- data do
925-
File.rm(beam_path(compile_path, module))
926-
:code.purge(module)
927-
:code.delete(module)
931+
remove_and_purge(beam_path(compile_path, module), module)
928932
end
929933
rescue
930934
_ ->

0 commit comments

Comments
 (0)