Как отключить предупреждение Scala «Внешняя ссылка в этом типе теста не может быть проверена во время выполнения» - PullRequest
3 голосов
/ 01 февраля 2020

Я понимаю, что означает предупреждение «Внешняя ссылка в этом тесте типа не может быть проверена во время выполнения» (в классе конечного случая отсутствует свой «внешний» указатель, если он не используется в самом классе). Тем не менее, я нахожу это предупреждение чрезвычайно раздражающим, так как оно отображается, даже когда я даже не сопоставляюсь с типом, как в коде ниже:

object X {
  class B {
    final case class A(a: Int)
  }

  def main(arg: Array[String]) = {

  }
}

Как отключить это предупреждение, кроме как сделать case class не final? Использование @unchecked до определения case class не помогает.

1 Ответ

2 голосов
/ 01 февраля 2020

Возможно, в качестве обходного пути мы могли бы сделать класс case в действительности окончательным, сделав конструктор приватным

class B {
  case class X private (s: String)
}

, что предотвращает наследование

class C extends X("") // Error

, в то же время позволяя конструкцию из-за publi c apply в компаньоне

(new B).X("")         // OK

Ошибка, по-видимому, отсутствует в dotty , поэтому после выпуска Scala 3 должна быть возможность вернуться к классу конечного случая (возможно с заменой регулярных выражений).

...