Size: a a a

2019 October 18

AB

Alexander Bogosyan in ErlangRus
Может через when? foo(X) -> X when X :: tree_a() | tree_b()
источник

AB

Alexander Bogosyan in ErlangRus
Я не проверял если что
источник

AB

Alexander Bogosyan in ErlangRus
Ой.. :)
источник

AB

Alexander Bogosyan in ErlangRus
Пока на телефоне набирал ты уже написал ;)
источник

V

Vasilii Demidenok in ErlangRus
трабла просто в том, что
|
это по идее union
источник

PK

Petr Kozorezov in ErlangRus
Вась, у меня есть подозрение, что ты слишком много хочешь от диалайзера😁
источник

V

Vasilii Demidenok in ErlangRus
Петь нам диалайзер иной раз такие баги находит, что будь здоров.
источник

AB

Alexander Bogosyan in ErlangRus
Ну два клауза тогда (X) -> X when X :: a(); (Y) -> Y when Y :: b() ? Может так прокатит
источник

V

Vasilii Demidenok in ErlangRus
Я просто тут хочу завернуть одни типы в opaque поскольку у нас диалайзер взрывается ворнингами на 5 экранов для одной ошибки
источник

V

Vasilii Demidenok in ErlangRus
И поэтому я не хочу чтобы были возможности конвертить из одного опака в другой, просто из-за неточной спеки
источник

AB

Alexander Bogosyan in ErlangRus
Вроде в доке есть такой пример ' -spec foo({X, integer()}) -> X when X :: atom() ; ([Y]) -> Y when Y :: number().'
источник

V

Vasilii Demidenok in ErlangRus
два клауза это отлично, когда у тебя два типа. Когда типов около 5, это уже не так весело
источник

PK

Petr Kozorezov in ErlangRus
У меня всегда была мысль, что для этого нужно написать что-то вроде -spec foo(A, ...) -> {ok, A}...
источник

V

Vasilii Demidenok in ErlangRus
ну вот А надо специфицировать же =)
источник

PK

Petr Kozorezov in ErlangRus
Но диалайзер понимает это иначе. Была мысль, что можно его дописать, чтобы он умел так делать.
источник

V

Vasilii Demidenok in ErlangRus
скорее всего.. просто если я правильно читаю - на уровне спек пока что OR кроме как клаузами не возможен =(
источник

PK

Petr Kozorezov in ErlangRus
Я даже начинал смотреть его код, ничего противоречащего там не увидел.
источник

PK

Petr Kozorezov in ErlangRus
Это твою проблему решит.
источник

V

Vasilii Demidenok in ErlangRus
намекаешь что пора контрибьютить в dialyzer ?))) блин, вот куда-куда, а туда зарываться меньше всего хочется
источник

PK

Petr Kozorezov in ErlangRus
Зато польза какая будет)
источник