Почему наименьшая верхняя граница java.lang.Integer и java.lang.Double определяется как ациклический тип?

Рассмотрим этот код:

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]
16
задан Ed Staub 13 November 2011 в 03:44
поделиться