@@ -276,11 +276,11 @@ defmodule Module.Types.Apply do
276276 @ doc """
277277 Applies a function in a given module.
278278 """
279- def remote ( _module , _fun , _args_types , _expr , % { mode: :traversal } , context ) do
279+ def remote ( _module , _fun , _args , _args_types , _expr , % { mode: :traversal } , context ) do
280280 { dynamic ( ) , context }
281281 end
282282
283- def remote ( :erlang , :element , [ _ , tuple ] , { _ , meta , [ index , _ ] } = expr , stack , context )
283+ def remote ( :erlang , :element , [ index , _ ] , [ _ , tuple ] , expr , stack , context )
284284 when is_integer ( index ) do
285285 case tuple_fetch ( tuple , index - 1 ) do
286286 { _optional? , value_type } ->
@@ -294,18 +294,11 @@ defmodule Module.Types.Apply do
294294 mfac = mfac ( expr , :erlang , :element , 2 )
295295
296296 { error_type ( ) ,
297- error ( { :badindex , mfac , expr , tuple , index - 1 , context } , meta , stack , context ) }
297+ error ( { :badindex , mfac , expr , tuple , index - 1 , context } , elem ( expr , 1 ) , stack , context ) }
298298 end
299299 end
300300
301- def remote (
302- :erlang ,
303- :insert_element ,
304- [ _ , tuple , value ] ,
305- { _ , meta , [ index , _ , _ ] } = expr ,
306- stack ,
307- context
308- )
301+ def remote ( :erlang , :insert_element , [ index , _ , _ ] , [ _ , tuple , value ] , expr , stack , context )
309302 when is_integer ( index ) do
310303 case tuple_insert_at ( tuple , index - 1 , value ) do
311304 value_type when is_descr ( value_type ) ->
@@ -321,11 +314,11 @@ defmodule Module.Types.Apply do
321314 mfac = mfac ( expr , :erlang , :insert_element , 3 )
322315
323316 { error_type ( ) ,
324- error ( { :badindex , mfac , expr , tuple , index - 2 , context } , meta , stack , context ) }
317+ error ( { :badindex , mfac , expr , tuple , index - 2 , context } , elem ( expr , 1 ) , stack , context ) }
325318 end
326319 end
327320
328- def remote ( :erlang , :delete_element , [ _ , tuple ] , { _ , meta , [ index , _ ] } = expr , stack , context )
321+ def remote ( :erlang , :delete_element , [ index , _ ] , [ _ , tuple ] , expr , stack , context )
329322 when is_integer ( index ) do
330323 case tuple_delete_at ( tuple , index - 1 ) do
331324 value_type when is_descr ( value_type ) ->
@@ -341,16 +334,16 @@ defmodule Module.Types.Apply do
341334 mfac = mfac ( expr , :erlang , :delete_element , 2 )
342335
343336 { error_type ( ) ,
344- error ( { :badindex , mfac , expr , tuple , index - 1 , context } , meta , stack , context ) }
337+ error ( { :badindex , mfac , expr , tuple , index - 1 , context } , elem ( expr , 1 ) , stack , context ) }
345338 end
346339 end
347340
348- def remote ( :erlang , :make_tuple , [ _ , elem ] , { _ , _meta , [ size , _ ] } , _stack , context )
341+ def remote ( :erlang , :make_tuple , [ size , _ ] , [ _ , elem ] , _expr , _stack , context )
349342 when is_integer ( size ) and size >= 0 do
350343 { tuple ( List . duplicate ( elem , size ) ) , context }
351344 end
352345
353- def remote ( :erlang , :hd , [ list ] , expr , stack , context ) do
346+ def remote ( :erlang , :hd , _args , [ list ] , expr , stack , context ) do
354347 case list_hd ( list ) do
355348 { _ , value_type } ->
356349 { value_type , context }
@@ -360,7 +353,7 @@ defmodule Module.Types.Apply do
360353 end
361354 end
362355
363- def remote ( :erlang , :tl , [ list ] , expr , stack , context ) do
356+ def remote ( :erlang , :tl , _args , [ list ] , expr , stack , context ) do
364357 case list_tl ( list ) do
365358 { _ , value_type } ->
366359 { value_type , context }
@@ -370,7 +363,7 @@ defmodule Module.Types.Apply do
370363 end
371364 end
372365
373- def remote ( :erlang , name , [ left , right ] = args_types , expr , stack , context )
366+ def remote ( :erlang , name , _args , [ left , right ] , expr , stack , context )
374367 when name in [ :>= , :"=<" , :> , :< , :min , :max ] do
375368 context =
376369 cond do
@@ -396,18 +389,11 @@ defmodule Module.Types.Apply do
396389 if name in [ :min , :max ] do
397390 { union ( left , right ) , context }
398391 else
399- { return ( boolean ( ) , args_types , stack ) , context }
392+ { return ( boolean ( ) , [ left , right ] , stack ) , context }
400393 end
401394 end
402395
403- def remote (
404- :erlang ,
405- name ,
406- [ left , right ] = args_types ,
407- { _ , _ , args } = expr ,
408- stack ,
409- context
410- )
396+ def remote ( :erlang , name , args , [ left , right ] = args_types , expr , stack , context )
411397 when name in [ :== , :"/=" , :"=:=" , :"=/=" ] do
412398 context =
413399 cond do
@@ -429,13 +415,13 @@ defmodule Module.Types.Apply do
429415 { return ( boolean ( ) , args_types , stack ) , context }
430416 end
431417
432- def remote ( mod , fun , args_types , expr , stack , context ) do
418+ def remote ( mod , fun , args , args_types , expr , stack , context ) do
433419 arity = length ( args_types )
434420
435421 case :elixir_rewrite . inline ( mod , fun , arity ) do
436422 { new_mod , new_fun } ->
437423 expr = inline_meta ( expr , mod , fun )
438- remote ( new_mod , new_fun , args_types , expr , stack , context )
424+ remote ( new_mod , new_fun , args , args_types , expr , stack , context )
439425
440426 false ->
441427 { info , context } = signature ( mod , fun , arity , elem ( expr , 1 ) , stack , context )
0 commit comments