Следующий код не компилируется, потому что компилятор считает, что тип выражения 'with' (U8 | None), хотя, как я не вижу, как может случиться, что это тело денешься None'с' структурой и обработкой исключений
class Disposable
new create() => None
fun dispose() => None
fun value(): U8 => 42
primitive TestWith
fun apply(): U8 =>
with d = Disposable do
d.value()
end
Но если добавить раздел «другое» к «с» - все становится нормально с типами. Но компилятор жалуется, что «попытка выражения никогда не приводит к ошибке».
primitive TestWith
fun apply(): U8 =>
with d = Disposable do
d.value()
else
0
end
Любые идеи?
Второй пример не будет компилироваться. Компилятор скажет: «тело функции не является типом результата», предполагая, что тип тела функции (U8 | None). Это обсуждалось на канале IRC, и вывод заключается в том, что это ошибка. Я собираюсь заполнить отчет об ошибке по этой теме. – aav