Skip to content

Commit 17448e7

Browse files
committed
Type erlang process functions in Kernel
1 parent 76faed3 commit 17448e7

File tree

1 file changed

+20
-0
lines changed
  • lib/elixir/lib/module/types

1 file changed

+20
-0
lines changed

lib/elixir/lib/module/types/of.ex

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,20 @@ defmodule Module.Types.Of do
319319
# ensuring that domains for the same function have
320320
# no overlaps.
321321

322+
mfargs = [atom(), atom(), list(term())]
323+
324+
send_destination =
325+
pid()
326+
|> union(reference())
327+
|> union(port())
328+
|> union(atom())
329+
|> union(tuple([atom(), atom()]))
330+
322331
for {mod, fun, clauses} <- [
332+
# :binary
323333
{:binary, :copy, [{[binary(), integer()], binary()}]},
334+
335+
# :erlang
324336
{:erlang, :atom_to_binary, [{[atom()], binary()}]},
325337
{:erlang, :atom_to_list, [{[atom()], list(integer())}]},
326338
{:erlang, :band, [{[integer(), integer()], integer()}]},
@@ -344,6 +356,13 @@ defmodule Module.Types.Of do
344356
{:erlang, :list_to_integer, [{[non_empty_list(integer())], integer()}]},
345357
{:erlang, :list_to_integer, [{[non_empty_list(integer()), integer()], integer()}]},
346358
{:erlang, :list_to_tuple, [{[list(term())], dynamic(open_tuple([], term()))}]},
359+
{:erlang, :self, [{[], pid()}]},
360+
{:erlang, :spawn, [{[fun()], pid()}]},
361+
{:erlang, :spawn, [{mfargs, pid()}]},
362+
{:erlang, :spawn_link, [{[fun()], pid()}]},
363+
{:erlang, :spawn_link, [{mfargs, pid()}]},
364+
{:erlang, :spawn_monitor, [{[fun()], tuple([reference(), pid()])}]},
365+
{:erlang, :spawn_monitor, [{mfargs, tuple([reference(), pid()])}]},
347366

348367
# TODO: Replace term()/dynamic() by parametric types
349368
{:erlang, :delete_element,
@@ -352,6 +371,7 @@ defmodule Module.Types.Of do
352371
{:erlang, :element, [{[integer(), open_tuple([], term())], dynamic()}]},
353372
{:erlang, :insert_element,
354373
[{[integer(), open_tuple([], term()), term()], dynamic(open_tuple([], term()))}]},
374+
{:erlang, :send, [{[send_destination, term()], dynamic()}]},
355375
{:erlang, :setelement,
356376
[{[integer(), open_tuple([], term()), term()], dynamic(open_tuple([], term()))}]},
357377
{:erlang, :tl, [{[non_empty_list(term(), term())], dynamic()}]},

0 commit comments

Comments
 (0)