В Scala, почему предупреждение unchecked не выдается для аргументов типа?

Я понимаю, что такое стирание и почему мы сталкиваемся с непроверенными предупреждениями. Однако я не понимаю, почему в следующем случае выдается только одно непроверенное предупреждение:

class A[K] {
  def receive: PartialFunction[Any, Unit] = {
    case ds: List[Double] =>  // unchecked warning
      println("* List[Double]")
    case kx: Vector[K] =>      // no unchecked warning
      println("* Vector[K]")
  }
}

object TestApp extends App {
  val a = new A[Int]
  a.receive(List("bar"))
  a.receive(Vector("foo"))
}

Оба приема вызова, к сожалению, соответствуют предложениям case. Компилятор выдал предупреждение для первого предложения:

Предупреждение: аргумент типа non-variable Двойной шаблон типа List [Double] не отмечен, поскольку он удаляется стиранием.

Я знаю, что TypeTag [T] может использоваться для обеспечения лучшей безопасности типов. Но моя озабоченность здесь заключается в том, почему для предложения второго дела не выдано безотлагательного предупреждения. Насколько мне кажется, тип аргумента K также удаляется и в соответствии с часто задаваемыми темами Java

Предупреждения

"unchecked" также сообщаются, когда компилятор находит листинг, целевой тип которого является либо параметризованным типом, либо параметром типа

Так что я удивляюсь, почему нет предупреждаемого предупреждения?

Ответы

Ответ 1

Вероятно, это ошибка. SI-9188 открыт для этого.