@@ -1026,8 +1026,11 @@ defmodule Mix.Compilers.Elixir do
10261026 pid =
10271027 spawn_link ( fn ->
10281028 compile_opts = [
1029+ after_persistence: fn ->
1030+ compiler_call ( parent , ref , { :after_persistence , opts } )
1031+ end ,
10291032 each_cycle: fn ->
1030- compiler_call ( parent , ref , { :each_cycle , stale_modules , dest , timestamp , opts } )
1033+ compiler_call ( parent , ref , { :each_cycle , stale_modules , dest , timestamp } )
10311034 end ,
10321035 each_file: fn file , lexical ->
10331036 compiler_call ( parent , ref , { :each_file , file , lexical , verbose } )
@@ -1063,8 +1066,13 @@ defmodule Mix.Compilers.Elixir do
10631066
10641067 defp compiler_loop ( ref , pid , state , cwd ) do
10651068 receive do
1066- { ^ ref , { :each_cycle , stale_modules , dest , timestamp , opts } } ->
1067- { response , state } = each_cycle ( stale_modules , dest , timestamp , state , opts )
1069+ { ^ ref , { :after_persistence , opts } } ->
1070+ { response , state } = after_persistence ( state , opts )
1071+ send ( pid , { ref , response } )
1072+ compiler_loop ( ref , pid , state , cwd )
1073+
1074+ { ^ ref , { :each_cycle , stale_modules , dest , timestamp } } ->
1075+ { response , state } = each_cycle ( stale_modules , dest , timestamp , state )
10681076 send ( pid , { ref , response } )
10691077 compiler_loop ( ref , pid , state , cwd )
10701078
@@ -1092,7 +1100,17 @@ defmodule Mix.Compilers.Elixir do
10921100 end
10931101 end
10941102
1095- defp each_cycle ( stale_modules , compile_path , timestamp , state , opts ) do
1103+ defp after_persistence ( state , opts ) do
1104+ { modules , exports , sources , changed , pending_modules , stale_exports , consolidation } = state
1105+
1106+ state =
1107+ { modules , exports , sources , changed , pending_modules , stale_exports ,
1108+ maybe_consolidate ( consolidation , modules , opts ) }
1109+
1110+ { :ok , state }
1111+ end
1112+
1113+ defp each_cycle ( stale_modules , compile_path , timestamp , state ) do
10961114 { modules , _exports , sources , changed , pending_modules , stale_exports , consolidation } = state
10971115
10981116 { pending_modules , exports , changed } =
@@ -1136,8 +1154,7 @@ defmodule Mix.Compilers.Elixir do
11361154 runtime_paths =
11371155 Enum . map ( runtime_modules , & { & 1 , Path . join ( compile_path , Atom . to_string ( & 1 ) <> ".beam" ) } )
11381156
1139- protocols_and_impls = maybe_consolidate ( consolidation , modules , opts )
1140- state = { modules , exports , sources , [ ] , pending_modules , stale_exports , protocols_and_impls }
1157+ state = { modules , exports , sources , [ ] , pending_modules , stale_exports , consolidation }
11411158 { { :runtime , runtime_paths , [ ] } , state }
11421159 else
11431160 Mix.Utils . compiling_n ( length ( changed ) , :ex )
0 commit comments