LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

Не сможет. Ибо он выведет сразу 3 подходящих типа и сообщит о неоднозначности.

у любого ооп-языка наличие нескольких типов для значения — это типичная ситуация

далее твой if назовем normal_if, мой — crazy_if

рассмотрим

var v1 = normal_if(bla_bla_bla) Grandson(2) else Grandson(3)
var v4 =  crazy_if(bla_bla_bla) Grandfather(5) else Grandson(6)

в обоих случаях (v1 и v4) имеем полностью одинаковые варианты типизации из трех типов: Grandfather, Father, Grandson (при условии, что это reference types, ну или как в с++ звездочки поставить надо)

да, напомни твою нотацию, у тебя Grandfather > Grandson или наоборот?

А иначе они не отлавливаются. Ты вообще видел размеры тестов у серьёзных компиляторов?

если ты мне предлагаешь делать юнит-тесты *такого же* размера для компилятора, написанного на Н2, то я наверно предпочту вместо него какой-нить простой препроцессор или просто свой любимый язык — тестов столько же

Исходная версия www_linux_org_ru, :

Не сможет. Ибо он выведет сразу 3 подходящих типа и сообщит о неоднозначности.

у любого ооп-языка наличие нескольких типов для значения — это типичная ситуация

далее твой if назовем normal_if, мой — crazy_if

рассмотрим

var v1 = normal_if(bla_bla_bla) Grandson(2) else Grandson(3)
var v4 =  crazy_if(bla_bla_bla) Grandfather(5) else Grandson(6)

в обоих случаях (v1 и v4) имеем по 3 полностью одинаковых варианта типизации: Grandfather, Father, Grandson (при условии, что это reference types, ну или как в с++ звездочки поставить надо)

да, напомни твою нотацию, у тебя Grandfather > Grandson или наоборот?

А иначе они не отлавливаются. Ты вообще видел размеры тестов у серьёзных компиляторов?

если ты мне предлагаешь делать юнит-тесты *такого же* размера для компилятора, написанного на Н2, то я наверно предпочту вместо него какой-нить простой препроцессор или просто свой любимый язык — тестов столько же