24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-02 21:17:12 +02:00

Dialyzer: Update Elixir code to satisfy dialyzer warnings

This commit is contained in:
Badlop 2024-03-05 12:48:26 +01:00
parent 6542a70c05
commit c7f76944f3
8 changed files with 11 additions and 19 deletions

View File

@ -41,7 +41,7 @@ defmodule Ejabberd.Config.Attr do
""" """
@spec validate([attr]) :: [{:ok, attr}] | [{:error, attr, atom()}] @spec validate([attr]) :: [{:ok, attr}] | [{:error, attr, atom()}]
def validate(attrs) when is_list(attrs), do: Enum.map(attrs, &valid_attr?/1) def validate(attrs) when is_list(attrs), do: Enum.map(attrs, &valid_attr?/1)
def validate(attr), do: validate([attr]) |> List.first def validate(attr), do: validate([attr])
@doc """ @doc """
Returns the type of an attribute, given its name. Returns the type of an attribute, given its name.

View File

@ -105,11 +105,8 @@ defmodule Ejabberd.Config do
Code.eval_file(file_path) |> extract_and_store_module_name() Code.eval_file(file_path) |> extract_and_store_module_name()
# Getting start/0 config # Getting start/0 config
Ejabberd.Config.Store.get(:module_name) [module] = Ejabberd.Config.Store.get(:module_name)
|> case do call_start_func_and_store_data(module)
nil -> IO.puts "[ ERR ] Configuration module not found."
[module] -> call_start_func_and_store_data(module)
end
# Fetching git modules and install them # Fetching git modules and install them
get_modules_parsed_in_order() get_modules_parsed_in_order()

View File

@ -13,7 +13,6 @@ defmodule Ejabberd.Config.EjabberdHook do
@doc """ @doc """
Register a hook to ejabberd. Register a hook to ejabberd.
""" """
@spec start(EjabberdHook.t) :: none
def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do
host = Keyword.get(opts, :host, :global) host = Keyword.get(opts, :host, :global)
priority = Keyword.get(opts, :priority, 50) priority = Keyword.get(opts, :priority, 50)

View File

@ -30,7 +30,6 @@ defmodule Ejabberd.Config.EjabberdModule do
a git attribute and tries to fetch the repo, a git attribute and tries to fetch the repo,
then, it install them through :ext_mod.install/1 then, it install them through :ext_mod.install/1
""" """
@spec fetch_git_repos([EjabberdModule.t]) :: none()
def fetch_git_repos(modules) do def fetch_git_repos(modules) do
modules modules
|> Enum.filter(&is_git_module?/1) |> Enum.filter(&is_git_module?/1)

View File

@ -14,15 +14,12 @@ defmodule Ejabberd.Config.OptsFormatter do
Look at how Config.get_ejabberd_opts/0 is constructed for Look at how Config.get_ejabberd_opts/0 is constructed for
more informations. more informations.
""" """
@spec format_opts_for_ejabberd([{atom(), any()}]) :: list() @spec format_opts_for_ejabberd(map) :: list()
def format_opts_for_ejabberd(opts) do def format_opts_for_ejabberd(opts) do
opts opts
|> format_attrs_for_ejabberd |> format_attrs_for_ejabberd
end end
defp format_attrs_for_ejabberd(opts) when is_list(opts),
do: (Enum.map opts, &format_attrs_for_ejabberd/1)
defp format_attrs_for_ejabberd({:listeners, mods}), defp format_attrs_for_ejabberd({:listeners, mods}),
do: {:listen, format_listeners_for_ejabberd(mods)} do: {:listen, format_listeners_for_ejabberd(mods)}
@ -32,6 +29,9 @@ defmodule Ejabberd.Config.OptsFormatter do
defp format_attrs_for_ejabberd({key, opts}) when is_atom(key), defp format_attrs_for_ejabberd({key, opts}) when is_atom(key),
do: {key, opts} do: {key, opts}
defp format_attrs_for_ejabberd(opts),
do: (Enum.map opts, &format_attrs_for_ejabberd/1)
defp format_mods_for_ejabberd(mods) do defp format_mods_for_ejabberd(mods) do
Enum.map mods, fn %EjabberdModule{module: mod, attrs: attrs} -> Enum.map mods, fn %EjabberdModule{module: mod, attrs: attrs} ->
{mod, attrs[:opts]} {mod, attrs[:opts]}

View File

@ -18,9 +18,9 @@ defmodule Ejabberd.Config.Validator.Attrs do
@spec validate(mod_validation) :: mod_validation @spec validate(mod_validation) :: mod_validation
def validate({modules, mod, errors}) do def validate({modules, mod, errors}) do
errors = Enum.reduce mod.attrs, errors, fn(attr, err) -> errors = Enum.reduce mod.attrs, errors, fn(attr, err) ->
case Attr.validate(attr) do case Attr.validate([attr]) do
{:ok, _attr} -> err [{:ok, _attr}] -> err
{:error, attr, cause} -> put_error(err, :attribute, {attr, cause}) [{:error, attr, cause}] -> put_error(err, :attribute, {attr, cause})
end end
end end

View File

@ -4,8 +4,6 @@ defmodule Ejabberd.Config.ValidatorUtility do
Imports utility functions for working with validation structures. Imports utility functions for working with validation structures.
""" """
alias Ejabberd.Config.EjabberdModule
@doc """ @doc """
Inserts an error inside the errors collection, for the given key. Inserts an error inside the errors collection, for the given key.
If the key doesn't exists then it creates an empty collection If the key doesn't exists then it creates an empty collection
@ -22,7 +20,6 @@ defmodule Ejabberd.Config.ValidatorUtility do
Given a list of modules it extracts and returns a list Given a list of modules it extracts and returns a list
of the module names (which are Elixir.Module). of the module names (which are Elixir.Module).
""" """
@spec extract_module_names(EjabberdModule.t) :: [atom]
def extract_module_names(modules) when is_list(modules) do def extract_module_names(modules) when is_list(modules) do
modules modules
|> Enum.map(&Map.get(&1, :module)) |> Enum.map(&Map.get(&1, :module))

View File

@ -7,7 +7,7 @@ defmodule Ejabberd.ConfigUtil do
@doc """ @doc """
Returns true when the config file is based on elixir. Returns true when the config file is based on elixir.
""" """
@spec is_elixir_config(list) :: boolean @spec is_elixir_config(binary) :: boolean
def is_elixir_config(filename) when is_list(filename) do def is_elixir_config(filename) when is_list(filename) do
is_elixir_config(to_string(filename)) is_elixir_config(to_string(filename))
end end