spectra_type_info (spectra v0.7.0)

View Source

Summary

Types

function_key/0

-type function_key() :: {Name :: atom(), Arity :: arity()}.

type_info/0

-type type_info() ::
          #type_info{types :: #{spectra_type_info:type_key() => spectra:sp_type()},
                     records ::
                         #{atom() =>
                               #sp_rec{name :: atom(),
                                       fields ::
                                           [#sp_rec_field{name :: atom(),
                                                          binary_name :: binary(),
                                                          type :: spectra:sp_type()}],
                                       arity :: pos_integer(),
                                       meta :: spectra:sp_type_meta()}},
                     functions ::
                         #{spectra_type_info:function_key() =>
                               [#sp_function_spec{args :: [spectra:sp_type()],
                                                  return :: spectra:sp_type(),
                                                  meta :: spectra:sp_function_spec_meta()}]}}.

type_key/0

-type type_key() :: {Name :: atom(), Arity :: arity()}.

Functions

add_function(Type_info, Name, Arity, FuncSpec)

-spec add_function(type_info(), atom(), arity(), [spectra:sp_function_spec()]) -> type_info().

add_record(Type_info, Name, Sp_rec)

-spec add_record(type_info(),
                 atom(),
                 #sp_rec{name :: atom(),
                         fields ::
                             [#sp_rec_field{name :: atom(),
                                            binary_name :: binary(),
                                            type :: spectra:sp_type()}],
                         arity :: pos_integer(),
                         meta :: spectra:sp_type_meta()}) ->
                    type_info().

add_type(Type_info, Name, Arity, Type)

-spec add_type(type_info(), atom(), arity(), spectra:sp_type()) -> type_info().

find_function(Type_info, Name, Arity)

-spec find_function(type_info(), atom(), arity()) -> {ok, [spectra:sp_function_spec()]} | error.

find_record(Type_info, Name)

-spec find_record(type_info(), atom()) ->
                     {ok,
                      #sp_rec{name :: atom(),
                              fields ::
                                  [#sp_rec_field{name :: atom(),
                                                 binary_name :: binary(),
                                                 type :: spectra:sp_type()}],
                              arity :: pos_integer(),
                              meta :: spectra:sp_type_meta()}} |
                     error.

find_type(Type_info, Name, Arity)

-spec find_type(type_info(), atom(), arity()) -> {ok, spectra:sp_type()} | error.

get_record(Type_info, Name)

-spec get_record(type_info(), atom()) ->
                    #sp_rec{name :: atom(),
                            fields ::
                                [#sp_rec_field{name :: atom(),
                                               binary_name :: binary(),
                                               type :: spectra:sp_type()}],
                            arity :: pos_integer(),
                            meta :: spectra:sp_type_meta()}.

get_type(Type_info, Name, Arity)

-spec get_type(type_info(), atom(), arity()) -> spectra:sp_type().

new()

-spec new() -> type_info().