@@ -71,7 +71,7 @@ defmodule Module.ParallelChecker do
7171          { ^ ref ,  :cache }  -> 
7272            Process . link ( pid ) 
7373
74-             module_tuple  = 
74+             { mode ,   module_tuple }  = 
7575              cond  do 
7676                is_binary ( info )  -> 
7777                  location  = 
@@ -86,13 +86,15 @@ defmodule Module.ParallelChecker do
8686                       { :ok ,  module_map }  <-  backend . debug_info ( :elixir_v1 ,  module ,  data ,  [ ] )  do 
8787                    cache_from_module_map ( table ,  module_map ) 
8888                  else 
89-                     _  ->  nil 
89+                     _  ->  { :not_found ,   nil } 
9090                  end 
9191
9292                is_tuple ( info )  -> 
9393                  info 
9494              end 
9595
96+             # We only make the module available now, so they are not visible during inference 
97+             :ets . insert ( table ,  { module ,  mode } ) 
9698            send ( checker ,  { ref ,  :cached } ) 
9799
98100            receive  do 
@@ -416,21 +418,22 @@ defmodule Module.ParallelChecker do
416418              true  -> 
417419                { mode ,  exports }  =  info_exports ( module ) 
418420                deprecated  =  info_deprecated ( module ) 
419-                 cache_info ( table ,  module ,  exports ,  deprecated ,  % { } ,  mode ) 
421+                 cache_info ( table ,  module ,  exports ,  deprecated ,  % { } ) 
422+                 mode 
420423
421424              false  -> 
422425                # Or load exports from chunk 
423426                with  { ^ module ,  binary ,  _filename }  <-  object_code , 
424427                     { :ok ,  { ^ module ,  [ exports:  exports ] } }  <-  :beam_lib . chunks ( binary ,  [ :exports ] )  do 
425-                   cache_info ( table ,  module ,  exports ,  % { } ,  % { } ,  :erlang ) 
428+                   cache_info ( table ,  module ,  exports ,  % { } ,  % { } ) 
429+                   :erlang 
426430                else 
427-                   _  -> 
428-                     :ets . insert ( table ,  { module ,  :not_found } ) 
429-                     nil 
431+                   _  ->  :not_found 
430432                end 
431433            end 
432434        end 
433435
436+       :ets . insert ( table ,  { module ,  mode } ) 
434437      unlock ( checker ,  module ,  mode ) 
435438    end 
436439  end 
@@ -461,26 +464,15 @@ defmodule Module.ParallelChecker do
461464      behaviour_exports ( map )  ++ 
462465        for ( { function ,  :def ,  _meta ,  _clauses }  <-  map . definitions ,  do:  function ) 
463466
464-     cache_info ( 
465-       table , 
466-       map . module , 
467-       exports , 
468-       Map . new ( map . deprecated ) , 
469-       map . signatures , 
470-       elixir_mode ( map . attributes ) 
471-     ) 
472- 
473-     module_map_to_module_tuple ( map ) 
467+     cache_info ( table ,  map . module ,  exports ,  Map . new ( map . deprecated ) ,  map . signatures ) 
468+     { elixir_mode ( map . attributes ) ,  module_map_to_module_tuple ( map ) } 
474469  end 
475470
476-   defp  cache_info ( table ,  module ,  exports ,  deprecated ,  sigs ,   mode )  do 
471+   defp  cache_info ( table ,  module ,  exports ,  deprecated ,  sigs )  do 
477472    Enum . each ( exports ,  fn  fa  -> 
478473      reason  =  Map . get ( deprecated ,  fa ) 
479474      :ets . insert ( table ,  { { module ,  fa } ,  reason ,  Map . get ( sigs ,  fa ,  :none ) } ) 
480475    end ) 
481- 
482-     :ets . insert ( table ,  { module ,  mode } ) 
483-     mode 
484476  end 
485477
486478  defp  cache_chunk ( table ,  module ,  contents )  do 
@@ -497,9 +489,7 @@ defmodule Module.ParallelChecker do
497489      ) 
498490    end ) 
499491
500-     mode  =  Map . get ( contents ,  :mode ,  :elixir ) 
501-     :ets . insert ( table ,  { module ,  mode } ) 
502-     mode 
492+     Map . get ( contents ,  :mode ,  :elixir ) 
503493  end 
504494
505495  defp  behaviour_exports ( % { defines_behaviour:  true } ) ,  do:  [ { :behaviour_info ,  1 } ] 
0 commit comments