I think we need to flip the question around: why do you need the optional dependencies of a dependency in order to run Dialyzer? Dialyzing dependency “foo” should work even if “foo” is missing its optional dependencies.
Actually, as I was typing this response, I have just realized that the mistake can be elsewhere. Erlang/OTP 24 introduces a field called optional_applications
to the .app
file. Elixir v1.15 starts using this field. Imagine you have this dependency tree:
- foo
- gettext (optional)
In earlier Elixir versions, foo.app
would look like this if gettext
was not added as dependency somewhere:
{applications, []}
But now it looks like this:
{optional_applications, [gettext]}
{applications, [gettext]}
In other words, gettext is now always included as a dependency but you are not supposed to require it if it is listed as an optional application. Reading back your messages, it seems either Dialyzer or Dialyxir is requiring optional applications to be defined.