@@ -266,7 +266,7 @@ defmodule Module.Types do
266266
267267 Enum . reduce ( unused_indexes , context , fn clause_index , context ->
268268 { meta , _args , _guards , _body } = Enum . fetch! ( clauses , clause_index )
269- stack = % { stack | function: fun_arity }
269+ stack = % { stack | function: fun_arity } |> with_file_meta ( meta )
270270 Helpers . warn ( __MODULE__ , { :unused_clause , kind , fun_arity } , meta , stack , context )
271271 end )
272272 else
@@ -299,11 +299,11 @@ defmodule Module.Types do
299299
300300 local_sigs ->
301301 case finder . ( fun_arity ) do
302- { mode , { fun_arity , kind , meta , clauses } , expected } ->
302+ { mode , { fun_arity , kind , _meta , clauses } , expected } ->
303303 context = put_in ( context . local_sigs , Map . put ( local_sigs , fun_arity , kind ) )
304304
305305 { inferred , mapping , context } =
306- local_handler ( mode , fun_arity , kind , meta , clauses , expected , stack , context )
306+ local_handler ( mode , fun_arity , kind , clauses , expected , stack , context )
307307
308308 context =
309309 update_in ( context . local_sigs , & Map . put ( & 1 , fun_arity , { kind , inferred , mapping } ) )
@@ -316,19 +316,20 @@ defmodule Module.Types do
316316 end
317317 end
318318
319- defp local_handler ( :traverse , { _ , arity } , _kind , _meta , clauses , _expected , stack , context ) do
319+ defp local_handler ( :traverse , { _ , arity } , _kind , clauses , _expected , stack , context ) do
320320 context =
321- Enum . reduce ( clauses , context , fn { _meta , _args , _guards , body } , context ->
321+ Enum . reduce ( clauses , context , fn { meta , _args , _guards , body } , context ->
322+ stack = with_file_meta ( stack , meta )
322323 Module.Types.Traverse . of_expr ( body , stack , context )
323324 end )
324325
325326 inferred = { :infer , nil , [ { List . duplicate ( Descr . term ( ) , arity ) , Descr . dynamic ( ) } ] }
326327 { inferred , [ { 0 , 0 } ] , context }
327328 end
328329
329- defp local_handler ( mode , fun_arity , kind , meta , clauses , expected , stack , context ) do
330+ defp local_handler ( mode , fun_arity , kind , clauses , expected , stack , context ) do
330331 { fun , _arity } = fun_arity
331- stack = stack |> fresh_stack ( mode , fun_arity ) |> with_file_meta ( meta )
332+ stack = fresh_stack ( stack , mode , fun_arity )
332333 base_info = { :def , kind , fun , expected }
333334
334335 case clauses do
@@ -341,6 +342,7 @@ defmodule Module.Types do
341342 end
342343
343344 defp default_local_handler ( meta , args , body , base_info , kind , fun , expected , stack , context ) do
345+ stack = with_file_meta ( stack , meta )
344346 guards = [ ]
345347 previous = Pattern . init_previous ( )
346348 fresh_context = fresh_context ( context )
@@ -400,6 +402,7 @@ defmodule Module.Types do
400402 Enum . reduce ( clauses , { 0 , 0 , Pattern . init_previous ( ) , [ ] , [ ] , [ ] , context } , fn
401403 { meta , args , guards , body } ,
402404 { index , total , previous , domain , mapping , inferred , acc_context } ->
405+ stack = with_file_meta ( stack , meta )
403406 fresh_context = fresh_context ( acc_context )
404407 info = { base_info , args , guards }
405408
0 commit comments