Е
Size: a a a
Е
Е
defmodule Foo do
@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
Е
foo(k6: "asd")
Е
AB
Е
he function call will not succeed.
Foo.foo([{:k6, <<97, 115, 100>>}])
breaks the contract
(options()) :: options()
AB
T
AB
options()
вытрясти?Е
options()
вытрясти?Е
defmodule Foo do
@type options() :: [
{:k1, integer()}
| {:k2, boolean()}
]
@spec foo(options()) :: options()
def foo(a), do: a
def bar() do
foo(k2: 10)
end
end
RP
RP
AB
AB
Е
DF
DF
Е
DF