@@ -826,14 +826,21 @@ defmodule Module.Types.DescrTest do
826
826
assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ integer ( ) ] ) == { :ok , atom ( ) }
827
827
assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ float ( ) ] ) == { :badarg , [ integer ( ) ] }
828
828
assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ term ( ) ] ) == { :badarg , [ integer ( ) ] }
829
- assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ dynamic ( ) ] ) == { :ok , dynamic ( ) }
830
829
830
+ # Return types
831
831
assert fun_apply ( fun ( [ integer ( ) ] , none ( ) ) , [ integer ( ) ] ) == { :ok , none ( ) }
832
832
assert fun_apply ( fun ( [ integer ( ) ] , term ( ) ) , [ integer ( ) ] ) == { :ok , term ( ) }
833
833
834
834
# Dynamic args
835
835
assert fun_apply ( fun ( [ term ( ) ] , term ( ) ) , [ dynamic ( ) ] ) == { :ok , term ( ) }
836
836
837
+ assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ dynamic ( integer ( ) ) ] )
838
+ |> elem ( 1 )
839
+ |> equal? ( atom ( ) )
840
+
841
+ assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ dynamic ( float ( ) ) ] ) == { :badarg , [ integer ( ) ] }
842
+ assert fun_apply ( fun ( [ integer ( ) ] , atom ( ) ) , [ dynamic ( term ( ) ) ] ) == { :ok , dynamic ( ) }
843
+
837
844
# Arity mismatches
838
845
assert fun_apply ( fun ( [ integer ( ) ] , integer ( ) ) , [ term ( ) , term ( ) ] ) == { :badarity , [ 1 ] }
839
846
assert fun_apply ( fun ( [ integer ( ) , atom ( ) ] , boolean ( ) ) , [ integer ( ) ] ) == { :badarity , [ 2 ] }
0 commit comments