Erlang (Elixir) Dialyzer - confusing supertype error
问题 I have defined an Elixir behaviour X . A callback start_link is spec'ed as: @callback start_link( args :: producer_args, opts :: GenServer.options ) :: GenServer.on_start where producer_args type is defined as: @type producer_args :: %{job_queue_name: String.t} In the client code Y that implements the behaviour, start_link is defined as: def start_link(args = %{job_queue_name: _job_queue_name, redis_url: _redis_url}, opts) do GenStage.start_link(__MODULE__, args, opts) end Dialyzer doesn't