@@ -78,16 +78,17 @@ defmodule Mix.Tasks.Compile.Elixir do
7878 to_compile = Mix.Utils . extract_files ( elixirc_paths , compile_exts )
7979 to_watch = Mix.Utils . extract_files ( elixirc_paths , watch_exts )
8080
81- force = opts [ :force ]
8281 stale = if Mix.Utils . stale? ( Mix.Project . config_files , [ manifest ] ) do
8382 force = true
8483 to_watch
8584 else
85+ force = opts [ :force ]
8686 Mix.Utils . extract_stale ( to_watch , [ manifest ] )
8787 end
8888
8989 if force or stale != [ ] do
9090 File . mkdir_p! compile_path
91+ Code . prepend_path compile_path
9192 compile_files opts [ :quick ] , project , compile_path , to_compile , stale , opts
9293 :ok
9394 else
@@ -103,19 +104,17 @@ defmodule Mix.Tasks.Compile.Elixir do
103104 end
104105
105106 defp compile_files ( false , project , compile_path , to_compile , _stale , opts ) do
106- Mix.Utils . read_manifest Path . join ( compile_path , @ manifest ) , fn file ->
107- Path . join ( compile_path , file ) <> ".beam" |> File . rm
107+ previous = Mix.Utils . read_manifest ( Path . join ( compile_path , @ manifest ) )
108+
109+ Enum . each previous , fn entry ->
110+ Path . join ( compile_path , entry <> ".beam" ) |> File . rm
108111 end
109112
110113 set_compiler_opts ( project , opts , [ ] )
114+ compiled = compile_files to_compile , compile_path
115+ compiled = lc { mod , _ } in list compiled , do: atom_to_binary ( mod )
111116
112- { _current , to_remove } =
113- Mix.Utils . update_manifest Path . join ( compile_path , @ manifest ) , fn ->
114- compiled = compile_files to_compile , compile_path
115- lc { mod , _ } in list compiled , do: atom_to_binary ( mod )
116- end
117-
118- lc f inlist to_remove , do: File . rm ( Path . join ( compile_path , f ) <> ".beam" )
117+ Mix.Utils . update_manifest ( Path . join ( compile_path , @ manifest ) , compiled )
119118 end
120119
121120 defp set_compiler_opts ( project , opts , extra ) do
0 commit comments