I haven’t seen this type of Dialyzer warning on a guard call before; but I have seen similar warnings for function parameters when Dialyzer thinks there’s no way for a given pattern match to possibly match a condition… which I sometimes do for a catch all function.
For example if I write something like the below, with no other calls to func_a/1:
def entry_func() do
%{test: "Hi!"}
|> func_a()
end
def func_a(%{} = param) do
# do something
end
def func_a(_) do
raise "Bad Param"
end
I will, with some regularity, see the ElixirLS Dialyzer warning that the second function head for func_a will never run… which looks like it could be similar to what you’re seeing. In this case Dialyzer isn’t exactly wrong… there’s no way for the second func_a/1 function head to match. But it’s not exactly helpful either because I may know now that in the future I might call it from somewhere else where the second function head is helpful.
Anyway, I can’t say for sure this is what you’re seeing, but it looks similar.






















