aboutsummaryrefslogtreecommitdiff
path: root/tests/patmat/t7437.scala
blob: b0c5dff7cbbc663da77dae7ebaf41220b5ed36ec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sealed trait IntegralNumber
sealed trait FiniteNumber extends IntegralNumber

object IntegralNumber {

  sealed abstract class BaseNumber extends IntegralNumber
  sealed abstract class NonFinite extends BaseNumber
  object NaN extends NonFinite
  sealed abstract class FiniteNumberImpl[N](val value: N) extends BaseNumber with FiniteNumber
  sealed class IntNumber(value: Int) extends FiniteNumberImpl[Int](value)

  def test(t: IntNumber, o: IntegralNumber) = o match {
    case NaN => -1
    case o: IntNumber => t.value.compare(o.value)
  }

}