fix(emqx_rule_validator): Dialyzer warning

This commit is contained in:
Zaiming Shi 2020-11-07 21:39:01 +01:00
parent 4cfe4e9940
commit 6a1aae52eb
1 changed files with 17 additions and 11 deletions

View File

@ -31,25 +31,31 @@
%% APIs %% APIs
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
%% Validate the params according the spec and return a new spec. %% Validate the params according the spec.
%% Note that this function will throw out exceptions in case of %% Note that this function throws exception in case of validation failure.
%% validation failure. -spec(validate_params(params(), params_spec()) -> ok).
-spec(validate_params(params(), params_spec()) -> params()).
validate_params(Params, ParamsSepc) -> validate_params(Params, ParamsSepc) ->
maps:map(fun(Name, Spec) -> F = fun(Name, Spec) ->
do_validate_param(Name, Spec, Params) do_validate_param(Name, Spec, Params)
end, ParamsSepc), end,
ok. map_foreach(F, ParamsSepc).
-spec(validate_spec(params_spec()) -> ok). -spec(validate_spec(params_spec()) -> ok).
validate_spec(ParamsSepc) -> validate_spec(ParamsSepc) -> map_foreach(fun do_validate_spec/2, ParamsSepc).
maps:map(fun do_validate_spec/2, ParamsSepc),
ok.
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
%% Internal Functions %% Internal Functions
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
map_foreach(Fun, Map) ->
Iterator = maps:iterator(Map),
map_foreach_loop(Fun, maps:next(Iterator)).
map_foreach_loop(_Fun, none) -> ok;
map_foreach_loop(Fun, {Key, Value, Iterator}) ->
_ = Fun(Key, Value),
map_foreach_loop(Fun, maps:next(Iterator)).
do_validate_param(Name, Spec = #{required := true}, Params) -> do_validate_param(Name, Spec = #{required := true}, Params) ->
find_field(Name, Params, find_field(Name, Params,
fun (not_found) -> error({required_field_missing, Name}); fun (not_found) -> error({required_field_missing, Name});
@ -171,5 +177,5 @@ do_find_field([F | Fields], Spec, Func) ->
end. end.
bin(Atom) when is_atom(Atom) -> atom_to_binary(Atom, utf8); bin(Atom) when is_atom(Atom) -> atom_to_binary(Atom, utf8);
bin(Str) when is_list(Str) -> atom_to_list(Str); bin(Str) when is_list(Str) -> iolist_to_binary(Str);
bin(Bin) when is_binary(Bin) -> Bin. bin(Bin) when is_binary(Bin) -> Bin.