VS
[In reply to Lama Lover]
Вот код, на который диалайзер должен ругаться, но не ругается:
defmodule Foo doЕвгений, [24.08.20 14:44]
@type options() :: [
{:k1, integer()}
| {:k2, integer()}
| {:k3, integer()}
| {:k4, integer()}
| {:k5, integer()}
| {:k6, boolean()}
]
@spec foo(options()) :: options()
def foo(a), do: a
def bar() do
# тут должна быть ошибка
foo(k6: 10)
end
end
То бишь на этот код уже ругается
defmodule Foo doAlex Bubnov, [24.08.20 15:09]
@type options() :: [
{:k1, integer()}
| {:k3, integer()}
| {:k4, integer()}
| {:k5, integer()}
| {:k6, boolean()}
]
@spec foo(options()) :: options()
def foo(a), do: a
def bar() do
# тут должна быть ошибка
foo(k6: 10)
end
end
[In reply to Евгений]
и вот это становится похоже на баг, зависящий от количества альтернатив элемента списка
Alex Bubnov, [24.08.20 16:10]
я, короче, поглядел в исходники диалайзера, и в его тест-сьюте вообще не вижу тестов на такие списки типа опций. я в шары долблюсь?..
в Elixir 1.10.2/OTP 22.2.8 dialyzer ловит эту ошибку