From 7e33cee28f9481cffd29fbdecd239fa830ba05ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 26 Apr 2025 09:01:07 +0200 Subject: [PATCH] Avoid purging non-loaded modules --- lib/mix/lib/mix/compilers/elixir.ex | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/mix/lib/mix/compilers/elixir.ex b/lib/mix/lib/mix/compilers/elixir.ex index 03d61070ce..e9f0a330b1 100644 --- a/lib/mix/lib/mix/compilers/elixir.ex +++ b/lib/mix/lib/mix/compilers/elixir.ex @@ -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 _ ->