У меня есть case class Disconnect(nodeId: PublicKey)
, в котором есть 1 параметр, однако в какой-то другой части кода он использовался без параметра, например: Disconnect
, и компилятор не уловил ошибку, обратите внимание, что я 'Мы также пытались запустить компилятор с параметром -Xlint
, и он все еще не может поймать ошибку.
- версия scala: 2.11.12
- целевая версия jvm: 1.8
- код, скомпилированный с параметрами:
-deprecation
-feature
-language:postfixOps
-language:implicitConversions
-Xfatal-warnings
-unchecked
-Xmax-classfile-name 140
-nobootcp
[история] Раньше был case object Disconnect
, но в какой-то момент он был изменен на case-класс и добавлен параметр, в коде он все еще был создан без параметров, и компилятор не мог его заметить.Я попытался добавить опцию -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
как параметр.