spectra_util (spectra v0.11.1)

View Source

Summary

Functions

apply_args(TypeInfo, Type, TypeArgs)

fold_until_error(Fun, Acc, List)

-spec fold_until_error(Fun ::
                           fun((Elem :: dynamic(), Acc :: dynamic()) ->
                                   {error, Err :: dynamic()} | {ok, Acc :: dynamic()}),
                       Acc :: dynamic(),
                       List :: [Elem :: dynamic()]) ->
                          {ok, Acc :: dynamic()} | {error, Err :: dynamic()}.

fold_until_error(Fun, Context, Acc, List)

-spec fold_until_error(Fun ::
                           fun((Context :: dynamic(), Elem :: dynamic(), Acc :: dynamic()) ->
                                   {error, Err :: dynamic()} | {ok, Acc :: dynamic()}),
                       Context :: dynamic(),
                       Acc :: dynamic(),
                       List :: [Elem :: dynamic()]) ->
                          {ok, Acc :: dynamic()} | {error, Err :: dynamic()}.

map_until_error(Fun, List)

-spec map_until_error(fun((Elem :: dynamic()) -> {error, Err :: dynamic()} | {ok, ResElem :: dynamic()}),
                      [Elem :: dynamic()]) ->
                         {ok, [ResElem :: dynamic()]} | {error, Err :: dynamic()}.

normalize_type_ref(TypeInfo, TypeOrRef)

-spec normalize_type_ref(spectra:type_info(), spectra:sp_type_or_ref() | atom()) ->
                            spectra:sp_type_or_ref().

record_replace_vars(RecordInfo, TypeArgs)

-spec record_replace_vars(RecordInfo ::
                              [#sp_rec_field{name :: atom(),
                                             binary_name :: binary(),
                                             type :: spectra:sp_type()}],
                          TypeArgs :: [spectra:record_field_arg()]) ->
                             [#sp_rec_field{name :: atom(),
                                            binary_name :: binary(),
                                            type :: spectra:sp_type()}].

test_abs_code(Module)

-spec test_abs_code(module()) ->
                       {ok, spectra:type_info()} | {error, {atom(), term(), erlang:stacktrace()}}.

type_replace_vars(TypeInfo, Type, NamedTypes)

-spec type_replace_vars(TypeInfo :: spectra:type_info(),
                        Type :: spectra:sp_type(),
                        NamedTypes :: #{atom() => spectra:sp_type()}) ->
                           spectra:sp_type().