У меня есть case class Disconnect(nodeId: PublicKey)
с 1 параметром, однако в какой-то другой части кода он использовался без параметра, т.е.: Disconnect
и компилятор не уловил ошибку, обратите внимание, что я также пытался запустить компилятор с опцией -Xlint
, и он все еще не может поймать ошибку.
- Скала версия: 2.11.12
- целевая версия JVM: 1.8
- код, скомпилированный с параметрами:
-deprecation
-feature
-language:postfixOps
-language:implicitConversions
-Xfatal-warnings
-unchecked
-Xmax-classfile-name 140
-nobootcp
[история] Раньше он был case object Disconnect
, но в какой-то момент он был изменен на case class и был добавлен параметр, в коде он по-прежнему создавался без параметров, и компилятор не мог этого заметить. Я пробовал добавить в компилятор опцию -Xlint
, но это не помогло.
В Peer.scala
object Peer {
// other code
case class Disconnect(nodeId: PublicKey)
// more code
}
В Channel.scala
// inside a function
revocationTimeout.peer ! Peer.Disconnect
//
Я ожидал, что компилятор обнаружит неправильное использование case-класса и не сможет скомпилировать.
Редактировать: спасибо всем за ответы, действительно, компилятор отлично справляется со своей работой, и Disconnect
используется как тип вместо экземпляра класса case, это возможно, потому что он используется в функции, которая принимает Any
в качестве параметра.