@@ -826,6 +826,9 @@ defmodule Process do
826
826
@ spec flag ( pid , :save_calls , 0 .. 10000 ) :: 0 .. 10000
827
827
defdelegate flag ( pid , flag , value ) , to: :erlang , as: :process_flag
828
828
829
+ @ type process_info_item :: atom | { :dictionary , term }
830
+ @ type process_info_result_item :: { process_info_item , term }
831
+
829
832
@ doc """
830
833
Returns information about the process identified by `pid`, or returns `nil` if the process
831
834
is not alive.
@@ -834,7 +837,7 @@ defmodule Process do
834
837
835
838
See `:erlang.process_info/1` for more information.
836
839
"""
837
- @ spec info ( pid ) :: keyword | nil
840
+ @ spec info ( pid ) :: [ process_info_result_item ] | nil
838
841
def info ( pid ) do
839
842
nilify ( :erlang . process_info ( pid ) )
840
843
end
@@ -845,7 +848,8 @@ defmodule Process do
845
848
846
849
See `:erlang.process_info/2` for more information.
847
850
"""
848
- @ spec info ( pid , atom | [ atom ] ) :: { atom , term } | [ { atom , term } ] | nil
851
+ @ spec info ( pid , process_info_item | [ process_info_item ] ) ::
852
+ process_info_result_item | [ process_info_result_item ] | nil
849
853
def info ( pid , spec )
850
854
851
855
def info ( pid , :registered_name ) do
@@ -856,6 +860,10 @@ defmodule Process do
856
860
end
857
861
end
858
862
863
+ def info ( pid , { :dictionary , key } ) do
864
+ nilify ( :erlang . process_info ( pid , { :dictionary , key } ) )
865
+ end
866
+
859
867
def info ( pid , spec ) when is_atom ( spec ) or is_list ( spec ) do
860
868
nilify ( :erlang . process_info ( pid , spec ) )
861
869
end
0 commit comments