Good morning,
I’m using the :gen_statem
erlang behaviour for modeling a process and the compiler is throwing me some warnings about bad implementations behaviours
This is the module definition
defmodule Collector.Plubio do
@behaviour :gen_statem
I am doing the calls like that
@spec state?() :: {:ok, :waiting | :collecting} | {:error, :timeout}
def state?() do
try do
case :gen_statem.call(Collector.Plubio, :current_state, 5000) do
:waiting -> {:ok, :waiting}
:collecting -> {:ok, :collecting}
end
rescue
RuntimeError -> {:error, :timeout}
end
end
And the :gen_statem.state_name/3
are like this
@impl true
def waiting({:call, from}, :current_state, state) do
{:next_state, :waiting, state, {:reply, from, :waiting}}
end
But the compiler still showing me these warnings
warning: got "@impl true" for function waiting/3 but this behaviour does not specify such callback. The known callbacks are:
* :gen_statem.callback_mode/0 (function)
* :gen_statem.code_change/4 (function)
* :gen_statem.format_status/2 (function)
* :gen_statem.handle_event/4 (function)
* :gen_statem.init/1 (function)
* :gen_statem.state_name/3 (function)
* :gen_statem.terminate/3 (function)
It is my first time calling directly and erlang behaviour so probably I am forgetting something, does someone knows how to fix that?
Thank you so much:)