Size: a a a

2020 August 24

VS

Vladimir Sekisov in ErlangRus
Alex Bubnov
Евгений, [24.08.20 14:39]
[In reply to Lama Lover]
Вот код, на который диалайзер должен ругаться, но не ругается:
defmodule Foo do
 @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

Евгений, [24.08.20 14:44]
То бишь на этот код уже ругается
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

Alex Bubnov, [24.08.20 15:09]
[In reply to Евгений]
и вот это становится похоже на баг, зависящий от количества альтернатив элемента списка

Alex Bubnov, [24.08.20 16:10]
я, короче, поглядел в исходники диалайзера, и в его тест-сьюте вообще не вижу тестов на такие списки типа опций. я в шары долблюсь?..
а какой OTP установлен?
в Elixir 1.10.2/OTP 22.2.8 dialyzer ловит эту ошибку
источник

AB

Alex Bubnov in ErlangRus
М, у меня OTP 21 последний. Интересно, спасибо
источник

AB

Alex Bubnov in ErlangRus
Vladimir Sekisov
а какой OTP установлен?
в Elixir 1.10.2/OTP 22.2.8 dialyzer ловит эту ошибку
у меня не ловит.  если в спеке на foo2 закомментировать еще один ключ - ловит.
$ asdf current
elixir         1.10.2-otp-22 (set by /home/abubnov/pg/dyatest/.tool-versions)
erlang         22.3.4.9 (set by /home/abubnov/pg/dyatest/.tool-versions)


  defmodule Foo do
   @spec foo1([
           {:k1, integer()}
           | {:k2, integer()}
           # | {:k3, integer()}
           # | {:k4, integer()}
           | {:k5, integer()}
           | {:k6, boolean()}
           | {:k7, boolean()}
         ]) :: any()
   def foo1(a), do: a

   @spec foo2([
           {:k1, integer()}
           | {:k2, integer()}
           # | {:k3, integer()}
           | {:k4, integer()}
           | {:k5, integer()}
           | {:k6, boolean()}
           | {:k7, boolean()}
         ]) :: any()
   def foo2(a), do: a

   def bar() do
     # тут должна быть ошибка
     foo1(k6: 10)
   end

   def baz() do
     foo2(k6: 10)
   end

 end
источник

AB

Alex Bubnov in ErlangRus
посмотрел в release notes - тоже ничего подходящего не вижу
источник

VS

Vladimir Sekisov in ErlangRus
Alex Bubnov
посмотрел в release notes - тоже ничего подходящего не вижу
а у меня вот так получается:
lib/plug/foo.ex:13:no_return
Function bar/0 has no local return.
________________________________________________________________________________
lib/plug/foo.ex:15:call
The function call will not succeed.

Foo.foo([{:k6, 10}])

breaks the contract
(options()) :: options()

________________________________________________________________________________
источник

VS

Vladimir Sekisov in ErlangRus
при {:k6, true} никакой ругани
источник

AB

Alex Bubnov in ErlangRus
Vladimir Sekisov
а у меня вот так получается:
lib/plug/foo.ex:13:no_return
Function bar/0 has no local return.
________________________________________________________________________________
lib/plug/foo.ex:15:call
The function call will not succeed.

Foo.foo([{:k6, 10}])

breaks the contract
(options()) :: options()

________________________________________________________________________________
попробуй, пожалуйста, последнюю версию, где две функции?
источник

VS

Vladimir Sekisov in ErlangRus
lib/plug/foo.ex:24:no_return
Function bar/0 has no local return.
________________________________________________________________________________
lib/plug/foo.ex:26:call
The function call will not succeed.

Foo.foo1([{:k6, 10}])

breaks the contract
([
 {:k1, integer()}
 | {:k2, integer()}
 | {:k5, integer()}
 | {:k6, boolean()}
 | {:k7, boolean()}
]) :: any()

________________________________________________________________________________
источник

AB

Alex Bubnov in ErlangRus
Vladimir Sekisov
lib/plug/foo.ex:24:no_return
Function bar/0 has no local return.
________________________________________________________________________________
lib/plug/foo.ex:26:call
The function call will not succeed.

Foo.foo1([{:k6, 10}])

breaks the contract
([
 {:k1, integer()}
 | {:k2, integer()}
 | {:k5, integer()}
 | {:k6, boolean()}
 | {:k7, boolean()}
]) :: any()

________________________________________________________________________________
не, всё еще репортит только foo1, хотя foo2 такая же ошибочная
источник
2020 August 25

ИИ

Иванов Иванов... in ErlangRus
источник

LL

Lama Lover in ErlangRus
Шо це?
источник

ИИ

Иванов Иванов... in ErlangRus
Lama Lover
Шо це?
вакансии ерланг
источник

LL

Lama Lover in ErlangRus
Иванов Иванов
вакансии ерланг
Фанбокс уже давно-давно висит же
источник

ИИ

Иванов Иванов... in ErlangRus
Lama Lover
Фанбокс уже давно-давно висит же
текст смотри. идентичный.
источник

LL

Lama Lover in ErlangRus
Иванов Иванов
текст смотри. идентичный.
Аааа, ахаха
источник

ИИ

Иванов Иванов... in ErlangRus
Lama Lover
Аааа, ахаха
но вообще это известная тема, что у этих компаний общие гены и hr. прикольно что в одном случае "работа в команде", а в другом "работа с командой".  вроде одно и тоже но есть нюанс..
источник

AB

Alex Bubnov in ErlangRus
Иванов Иванов
но вообще это известная тема, что у этих компаний общие гены и hr. прикольно что в одном случае "работа в команде", а в другом "работа с командой".  вроде одно и тоже но есть нюанс..
что, прям совсем общие?
источник

ИИ

Иванов Иванов... in ErlangRus
Alex Bubnov
что, прям совсем общие?
я в уставные документы не сморел, но могут предложить из одной в другую - профили работы несколько разные
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Как в эрланге сделать функционал Task из эликсира? proc_lib:spawn? А можно пример?
источник

ML

Maksim Lapshin in ErlangRus
Źmićer Rubinštejn
Как в эрланге сделать функционал Task из эликсира? proc_lib:spawn? А можно пример?
Наличие в коде proc_lib:spawn дурной запах.

Что такое Task?
источник