Elixir v1.15.0-rc.0 released

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.