Avoid purging non-loaded modules

This commit is contained in:
José Valim
2025-04-26 09:01:07 +02:00
parent f1ad48181e
commit 7e33cee28f
+11 -7
View File
@@ -711,16 +711,22 @@ defmodule Mix.Compilers.Elixir do
defp remove_and_purge(beam, module) do
_ = File.rm(beam)
:code.purge(module)
:code.delete(module)
if Code.loaded?(module) do
:code.purge(module)
:code.delete(module)
end
end
defp purge_modules_in_path(path) do
with {:ok, beams} <- File.ls(path) do
Enum.each(beams, fn beam ->
module = beam |> Path.rootname() |> String.to_atom()
:code.purge(module)
:code.delete(module)
if Code.loaded?(module) do
:code.purge(module)
:code.delete(module)
end
end)
end
end
@@ -898,9 +904,7 @@ defmodule Mix.Compilers.Elixir do
end
for {module, _} <- data do
File.rm(beam_path(compile_path, module))
:code.purge(module)
:code.delete(module)
remove_and_purge(beam_path(compile_path, module), module)
end
rescue
_ ->