From c7f76944f3dc555dbd311f49478a0f72dc96fc2b Mon Sep 17 00:00:00 2001 From: Badlop Date: Tue, 5 Mar 2024 12:48:26 +0100 Subject: [PATCH] Dialyzer: Update Elixir code to satisfy dialyzer warnings --- lib/ejabberd/config/attr.ex | 2 +- lib/ejabberd/config/config.ex | 7 ++----- lib/ejabberd/config/ejabberd_hook.ex | 1 - lib/ejabberd/config/ejabberd_module.ex | 1 - lib/ejabberd/config/opts_formatter.ex | 8 ++++---- lib/ejabberd/config/validator/validator_attrs.ex | 6 +++--- lib/ejabberd/config/validator/validator_utility.ex | 3 --- lib/ejabberd/config_util.ex | 2 +- 8 files changed, 11 insertions(+), 19 deletions(-) diff --git a/lib/ejabberd/config/attr.ex b/lib/ejabberd/config/attr.ex index 9d17b157d..85d19191b 100644 --- a/lib/ejabberd/config/attr.ex +++ b/lib/ejabberd/config/attr.ex @@ -41,7 +41,7 @@ defmodule Ejabberd.Config.Attr do """ @spec validate([attr]) :: [{:ok, attr}] | [{:error, attr, atom()}] 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 """ Returns the type of an attribute, given its name. diff --git a/lib/ejabberd/config/config.ex b/lib/ejabberd/config/config.ex index df508fb4d..a8805e612 100644 --- a/lib/ejabberd/config/config.ex +++ b/lib/ejabberd/config/config.ex @@ -105,11 +105,8 @@ defmodule Ejabberd.Config do Code.eval_file(file_path) |> extract_and_store_module_name() # Getting start/0 config - Ejabberd.Config.Store.get(:module_name) - |> case do - nil -> IO.puts "[ ERR ] Configuration module not found." - [module] -> call_start_func_and_store_data(module) - end + [module] = Ejabberd.Config.Store.get(:module_name) + call_start_func_and_store_data(module) # Fetching git modules and install them get_modules_parsed_in_order() diff --git a/lib/ejabberd/config/ejabberd_hook.ex b/lib/ejabberd/config/ejabberd_hook.ex index 8b7858d23..5f9de4aa0 100644 --- a/lib/ejabberd/config/ejabberd_hook.ex +++ b/lib/ejabberd/config/ejabberd_hook.ex @@ -13,7 +13,6 @@ defmodule Ejabberd.Config.EjabberdHook do @doc """ Register a hook to ejabberd. """ - @spec start(EjabberdHook.t) :: none def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do host = Keyword.get(opts, :host, :global) priority = Keyword.get(opts, :priority, 50) diff --git a/lib/ejabberd/config/ejabberd_module.ex b/lib/ejabberd/config/ejabberd_module.ex index 2d413ab56..6d5b1e467 100644 --- a/lib/ejabberd/config/ejabberd_module.ex +++ b/lib/ejabberd/config/ejabberd_module.ex @@ -30,7 +30,6 @@ defmodule Ejabberd.Config.EjabberdModule do a git attribute and tries to fetch the repo, then, it install them through :ext_mod.install/1 """ - @spec fetch_git_repos([EjabberdModule.t]) :: none() def fetch_git_repos(modules) do modules |> Enum.filter(&is_git_module?/1) diff --git a/lib/ejabberd/config/opts_formatter.ex b/lib/ejabberd/config/opts_formatter.ex index 67887fa4f..3d3db926f 100644 --- a/lib/ejabberd/config/opts_formatter.ex +++ b/lib/ejabberd/config/opts_formatter.ex @@ -14,15 +14,12 @@ defmodule Ejabberd.Config.OptsFormatter do Look at how Config.get_ejabberd_opts/0 is constructed for more informations. """ - @spec format_opts_for_ejabberd([{atom(), any()}]) :: list() + @spec format_opts_for_ejabberd(map) :: list() def format_opts_for_ejabberd(opts) do opts |> format_attrs_for_ejabberd 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}), 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), 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 Enum.map mods, fn %EjabberdModule{module: mod, attrs: attrs} -> {mod, attrs[:opts]} diff --git a/lib/ejabberd/config/validator/validator_attrs.ex b/lib/ejabberd/config/validator/validator_attrs.ex index bdce4f679..e0e133b61 100644 --- a/lib/ejabberd/config/validator/validator_attrs.ex +++ b/lib/ejabberd/config/validator/validator_attrs.ex @@ -18,9 +18,9 @@ defmodule Ejabberd.Config.Validator.Attrs do @spec validate(mod_validation) :: mod_validation def validate({modules, mod, errors}) do errors = Enum.reduce mod.attrs, errors, fn(attr, err) -> - case Attr.validate(attr) do - {:ok, _attr} -> err - {:error, attr, cause} -> put_error(err, :attribute, {attr, cause}) + case Attr.validate([attr]) do + [{:ok, _attr}] -> err + [{:error, attr, cause}] -> put_error(err, :attribute, {attr, cause}) end end diff --git a/lib/ejabberd/config/validator/validator_utility.ex b/lib/ejabberd/config/validator/validator_utility.ex index 17805f748..6047618b6 100644 --- a/lib/ejabberd/config/validator/validator_utility.ex +++ b/lib/ejabberd/config/validator/validator_utility.ex @@ -4,8 +4,6 @@ defmodule Ejabberd.Config.ValidatorUtility do Imports utility functions for working with validation structures. """ - alias Ejabberd.Config.EjabberdModule - @doc """ Inserts an error inside the errors collection, for the given key. 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 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 modules |> Enum.map(&Map.get(&1, :module)) diff --git a/lib/ejabberd/config_util.ex b/lib/ejabberd/config_util.ex index 6592104a2..71d854f15 100644 --- a/lib/ejabberd/config_util.ex +++ b/lib/ejabberd/config_util.ex @@ -7,7 +7,7 @@ defmodule Ejabberd.ConfigUtil do @doc """ 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 is_elixir_config(to_string(filename)) end