Странное поведение сопоставления с шаблоном с AnyRef

def test1(a: Any) = a match {
  case x: AnyRef => "AnyRef"
  case _ => "None of the above"
}

def test2(a: Any) = a match {
  case x: Double if x > 2 => "Double > 2"
  case x: AnyRef => "AnyRef"
  case _ => "None of the above"
}

Может кто-нибудь объяснить, почему в следующем, первом случае1.0 спички наAnyRef, но во втором это не так. (Scala 2.9.0-1)

scala> test1(1.0)
res28: java.lang.String = AnyRef

scala> test2(1.0)
res29: java.lang.String = None of the above

редактировать -Обновление Scala 2.10 янв 2013: новый сопоставитель шаблонов исправляет это поведение (или, по крайней мере, делает его непротиворечивым) и методtest2 теперь возвращает AnyRef как дляtest1.

Ответы на вопрос(1)

Ваш ответ на вопрос