Current section

Files

Jump to
rtypes lib types.ex
Raw

lib/types.ex

defmodule Types do
@type type_any :: any()
@type type_none::none()
@type type_atom::atom()
@type type_map::map()
@type type_pid::pid()
@type type_port::port()
@type type_reference::reference()
@type type_struct::struct()
@type type_tuple::tuple()
@type type_float::float()
@type type_integer::integer()
@type type_neg_integer::neg_integer()
@type type_non_neg_integer::non_neg_integer()
@type type_pos_integer::pos_integer()
@type type_list(a)::list(a)
@type type_list::list()
@type type_nonempty_list(a)::nonempty_list(a)
@type type_nonempty_list()::nonempty_list()
@type type_maybe_improper_list()::maybe_improper_list()
@type type_maybe_improper_list(a, b)::maybe_improper_list(a, b)
@type type_nonempty_improper_list(a, b)::nonempty_improper_list(a, b)
@type type_nonempty_maybe_improper_list()::nonempty_maybe_improper_list()
@type type_nonempty_maybe_improper_list(a, b)::nonempty_maybe_improper_list(a, b)
@type type_map_keys :: %{key1: type_any(), key2: any()}
@type type_map_optional :: %{optional(integer()) => any(), required(atom()) => any()}
@type type_union::type_any() | type_none()
@type type_range :: 1..10
@type type_literal_atom :: :atom
@type type_literal_integer :: 1
@type type_concrete_tuple :: {type_any(), type_none()}
@type type_empty_list :: []
## literals
@type type_bitstring_empty :: <<>>
@type type_bitstring_size :: <<_::10>>
@type type_bitstring_units :: <<_::_*16>>
@type type_bitstring_size_and_units :: <<_::20, _::_*8>>
@type type_fun_arity_0 :: (() -> any())
@type type_fun_arity_2 :: (any(), type_any() -> any())
@type type_fun_arity_any :: (... -> :inet.port_number())
@type type_nonempty_list_short_any :: [...]
@type type_nonempty_list_short_typ :: [any(), ...]
@type type_kw_list :: [key: any()]
@type type_empty_map :: %{}
@type type_empty_tuple :: {}
## builtins
@type type_term :: term()
@type type_arity :: arity()
@type type_as_boolean(t) :: as_boolean(t)
@type type_binary :: binary()
@type type_bitstring :: bitstring()
@type type_boolean :: boolean()
@type type_byte :: byte()
@type type_char :: char()
@type type_charlist :: charlist()
@type type_nonempty_charlist :: nonempty_charlist()
@type type_fun :: fun()
@type type_function :: function()
@type type_identifier :: identifier()
@type type_iodata :: iodata()
@type type_iolist :: iolist()
@type type_keyword :: keyword()
@type type_keyword(t) :: keyword(t)
@type type_mfa :: mfa()
@type type_module :: module()
@type type_no_return :: no_return()
@type type_node :: node()
@type type_number :: number()
@type type_timeout :: timeout()
@type type_remote_generic(a) :: :blah.t(a)
@type type_remote() :: :blah.t(byte)
@typep type_private :: any()
@opaque type_opaque :: integer()
@type type_generic(a, b) :: {a, b}
@type type_generic2(a) :: {a, a}
@type type_instansiated :: type_generic(byte(), type_private())
@type type_instansiated2 :: type_generic2(binary())
@type type_remote_generic(a, b) :: Types2.generic_tuple(a, b)
@type type_remote_generic2(a, b) :: Types2.remote_type(a, b)
# a complex type
@type complex_map :: %{
key1: [type_generic(atom(), String.t())],
key2: pos_integer()
}
end
defmodule Types2 do
@type generic_tuple(a, b) :: {a, b}
@type remote_type(a, b) :: Types3.my_tuple(a, b)
end
defmodule Types3 do
@type my_tuple(a, b) :: {b, a}
end