Рассмотрим этот код:
val foo = if(true)
new java.lang.Double(4)
else
new java.lang.Integer(4)
Выведенный тип для foo
:
Number with Comparable[_ >: Double with Integer <: Number with
Comparable[_ >: Double with Integer <: Number]]
Таким образом, в основном компилятор цикла на границах и прерывания после третьей рекурсии.
Почему этого недостаточно?
Number with Comparable[_ >: Double with Integer <: Number]