diff options
author | Fredrik Gustafsson <[email protected]> | 2013-01-22 14:57:42 +0100 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-01-22 14:57:42 +0100 |
commit | 0ab216f3dc96890b50f7430895ad5d7f6251f129 (patch) | |
tree | 594d82b3b2cb00a7c09eb493ea4e70804a8e558c /lib/dialyzer/test | |
parent | ffedd0feb21de368cfede09b3ba5c1026e1633f7 (diff) | |
parent | 0e37e993c477dfab0e7218b8246bf94b7a9b97a1 (diff) | |
download | otp-0ab216f3dc96890b50f7430895ad5d7f6251f129.tar.gz otp-0ab216f3dc96890b50f7430895ad5d7f6251f129.tar.bz2 otp-0ab216f3dc96890b50f7430895ad5d7f6251f129.zip |
Merge branch 'sa/dialyzer-list-spec/OTP-10740'
* sa/dialyzer-list-spec/OTP-10740:
Report spec discrepancy on mismatching lists
Diffstat (limited to 'lib/dialyzer/test')
-rw-r--r-- | lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum | 2 | ||||
-rw-r--r-- | lib/dialyzer/test/small_SUITE_data/src/empty_list_infimum.erl | 57 |
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum b/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum new file mode 100644 index 0000000000..a59986cba5 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/results/empty_list_infimum @@ -0,0 +1,2 @@ + +empty_list_infimum.erl:39: Invalid type specification for function empty_list_infimum:list_vhost_permissions/1. The success typing is (_) -> [[{_,_}]] diff --git a/lib/dialyzer/test/small_SUITE_data/src/empty_list_infimum.erl b/lib/dialyzer/test/small_SUITE_data/src/empty_list_infimum.erl new file mode 100644 index 0000000000..b58fa732cb --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/empty_list_infimum.erl @@ -0,0 +1,57 @@ +%% +%% The Original Code is RabbitMQ. +%% +%% 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(), rabbit_foo:some_list()). + +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]. |