Question: erlang has no local return?
Answer: Usually, when you see a has no local return, it means that the cause is an error deeper in the stack. It should be one of the subsequently reported errors. If you look closer, and keep in mind that dialyzer uses Erlang syntax, you can see that you're passing a map ( #{} ), while the contract expects 'Elixir.