@@ -358,37 +358,37 @@ defmodule Module.Types.Apply do
358358 end
359359 end
360360
361- defp remote_apply ( :erlang , :hd , _info , [ list ] , _stack ) do
361+ defp remote_apply ( :erlang , :hd , _info , [ list ] , stack ) do
362362 case list_hd ( list ) do
363- { :ok , value_type } -> { :ok , value_type }
363+ { :ok , value_type } -> { :ok , return ( value_type , [ list ] , stack ) }
364364 :badnonemptylist -> { :error , badremote ( :erlang , :hd , 1 ) }
365365 end
366366 end
367367
368- defp remote_apply ( :erlang , :tl , _info , [ list ] , _stack ) do
368+ defp remote_apply ( :erlang , :tl , _info , [ list ] , stack ) do
369369 case list_tl ( list ) do
370- { :ok , value_type } -> { :ok , value_type }
370+ { :ok , value_type } -> { :ok , return ( value_type , [ list ] , stack ) }
371371 :badnonemptylist -> { :error , badremote ( :erlang , :tl , 1 ) }
372372 end
373373 end
374374
375- defp remote_apply ( :maps , :keys , _info , [ map ] , _stack ) do
375+ defp remote_apply ( :maps , :keys , _info , [ map ] , stack ) do
376376 case map_to_list ( map , fn key , _value -> key end ) do
377- { :ok , list_type } -> { :ok , list_type }
377+ { :ok , list_type } -> { :ok , return ( list_type , [ map ] , stack ) }
378378 :badmap -> { :error , badremote ( :maps , :keys , 1 ) }
379379 end
380380 end
381381
382- defp remote_apply ( :maps , :values , _info , [ map ] , _stack ) do
382+ defp remote_apply ( :maps , :values , _info , [ map ] , stack ) do
383383 case map_to_list ( map , fn _key , value -> value end ) do
384- { :ok , list_type } -> { :ok , list_type }
384+ { :ok , list_type } -> { :ok , return ( list_type , [ map ] , stack ) }
385385 :badmap -> { :error , badremote ( :maps , :keys , 1 ) }
386386 end
387387 end
388388
389- defp remote_apply ( :maps , :to_list , _info , [ map ] , _stack ) do
389+ defp remote_apply ( :maps , :to_list , _info , [ map ] , stack ) do
390390 case map_to_list ( map ) do
391- { :ok , list_type } -> { :ok , list_type }
391+ { :ok , list_type } -> { :ok , return ( list_type , [ map ] , stack ) }
392392 :badmap -> { :error , badremote ( :maps , :to_list , 1 ) }
393393 end
394394 end
@@ -415,32 +415,32 @@ defmodule Module.Types.Apply do
415415 end
416416 end
417417
418- defp remote_apply ( { :element , index } , [ _index , tuple ] , _stack ) do
418+ defp remote_apply ( { :element , index } , [ _ , tuple ] = args_types , stack ) do
419419 case tuple_fetch ( tuple , index - 1 ) do
420- { _optional? , value_type } -> { :ok , value_type }
420+ { _optional? , value_type } -> { :ok , return ( value_type , args_types , stack ) }
421421 :badtuple -> { :error , badremote ( :erlang , :element , 2 ) }
422422 :badindex -> { :error , { :badindex , index , tuple } }
423423 end
424424 end
425425
426- defp remote_apply ( { :insert_element , index } , [ _index , tuple , value ] , _stack ) do
426+ defp remote_apply ( { :insert_element , index } , [ _ , tuple , value ] = args_types , stack ) do
427427 case tuple_insert_at ( tuple , index - 1 , value ) do
428- value_type when is_descr ( value_type ) -> { :ok , value_type }
428+ value_type when is_descr ( value_type ) -> { :ok , return ( value_type , args_types , stack ) }
429429 :badtuple -> { :error , badremote ( :erlang , :insert_element , 3 ) }
430430 :badindex -> { :error , { :badindex , index - 1 , tuple } }
431431 end
432432 end
433433
434- defp remote_apply ( { :delete_element , index } , [ _index , tuple ] , _stack ) do
434+ defp remote_apply ( { :delete_element , index } , [ _ , tuple ] = args_types , stack ) do
435435 case tuple_delete_at ( tuple , index - 1 ) do
436- value_type when is_descr ( value_type ) -> { :ok , value_type }
436+ value_type when is_descr ( value_type ) -> { :ok , return ( value_type , args_types , stack ) }
437437 :badtuple -> { :error , badremote ( :erlang , :delete_element , 2 ) }
438438 :badindex -> { :error , { :badindex , index , tuple } }
439439 end
440440 end
441441
442- defp remote_apply ( { :make_tuple , size } , [ _size , elem ] , _stack ) do
443- { :ok , tuple ( List . duplicate ( elem , size ) ) }
442+ defp remote_apply ( { :make_tuple , size } , [ _ , elem ] = args_types , stack ) do
443+ { :ok , return ( tuple ( List . duplicate ( elem , size ) ) , args_types , stack ) }
444444 end
445445
446446 defp remote_apply ( { :ordered_compare , name , check? } , [ left , right ] , stack ) do
0 commit comments