%%
%% This is stripped down code from RabbitMQ. It is used to report an
%% invalid type specification for function list_vhost_permissions/1.
%% The Initial Developer of the Original Code is VMware, Inc.
%%
-module(empty_list_infimum).
-record(permission, {configure, write, read}).
-record(user_vhost, {username, virtual_host}).
-record(user_permission, {user_vhost, permission}).
%%----------------------------------------------------------------------------
-export([i_delete/1]).
-type(vhost() :: binary()).
-type(info_key() :: atom()).
-type(info_keys() :: [info_key()]).
-type(info() :: {info_key(), any()}).
-type(infos() :: [info()]).
%%----------------------------------------------------------------------------
-spec i_delete(vhost()) -> 'ok'.
i_delete(VHostPath) ->
[ok || _ <- list_vhost_permissions(VHostPath)],
ok.
%%----------------------------------------------------------------------------
vhost_perms_info_keys() ->
[user, configure, write, read].
-spec list_vhost_permissions(vhost()) -> infos().
list_vhost_permissions(VHostPath) ->
list_permissions(vhost_perms_info_keys(), some_mod:some_function()).
filter_props(Keys, Props) ->
[T || T = {K, _} <- Props, lists:member(K, Keys)].
list_permissions(Keys, SomeList) ->
[filter_props(Keys, [{user, Username},
{vhost, VHostPath},
{configure, ConfigurePerm},
{write, WritePerm},
{read, ReadPerm}]) ||
#user_permission{user_vhost = #user_vhost{username = Username,
virtual_host = VHostPath},
permission = #permission{configure = ConfigurePerm,
write = WritePerm,
read = ReadPerm}} <-
SomeList].