Почему `val` внутри` object` не является финальным автоматически?

В чем причинаvalне является (?) автоматически финальным в одноэлементных объектах? Например.

object NonFinal {
   val a = 0
   val b = 1

   def test(i: Int) = (i: @annotation.switch) match {
      case `a` => true
      case `b` => false
   }
}

результаты в:

<console>:12: error: could not emit switch for @switch annotated match
          def test(i: Int) = (i: @annotation.switch) match {
                                                     ^

В то время как

object Final {
   final val a = 0
   final val b = 1

   def test(i: Int) = (i: @annotation.switch) match {
      case `a` => true
      case `b` => false
   }
}

Компилируется без предупреждений, поэтому, вероятно, генерирует более быструю таблицу сопоставления с образцом.

Нужно добавитьfinal мне кажется чистый раздражающий шум Не являетсяobject само по себе окончательно, а значит и его участники?

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

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