Возможно, в качестве обходного пути мы могли бы сделать класс case в действительности окончательным, сделав конструктор приватным
class B {
case class X private (s: String)
}
, что предотвращает наследование
class C extends X("") // Error
, в то же время позволяя конструкцию из-за publi c apply
в компаньоне
(new B).X("") // OK
Ошибка, по-видимому, отсутствует в dotty , поэтому после выпуска Scala 3 должна быть возможность вернуться к классу конечного случая (возможно с заменой регулярных выражений).