Oban all_workflow_jobs type spec

Hey folks,

I’m facing an issue with the all_workflow_jobs Oban function.

Dialyzer complains about all_workflow_jobs(job, only_deps: true), but does not complain with all_workflow_jobs(job, Keyword.new(only_deps: true)).

It complains with [{:only_deps, true}] too, but does not complain with all_workflow_jobs(job).

It does not make sense to me as:

iex(1)> [only_deps: true]
[only_deps: true]
iex(2)> Keyword.new(only_deps: true)
[only_deps: true]
iex(3)> [only_deps: true] == Keyword.new(only_deps: true)
true

That is the output:

The function call will not succeed.

Jobs.ExecutionWatcherWorker.all_workflow_jobs(_job :: %Oban.Job{_ => _}, [{:only_deps, true}])

will never return since the 2nd arguments differ

Is there anything wrong with the typespec that is causing this?

Sorry about that! There’s a bug in the current type spec where the options are double wrapped in a list. It will be fixed in the upcoming Pro v1.4.8

1 Like