scala - 遇到死代码并出现 x 个致命警告
问题描述
我有一段代码:
case class ColumnChange private(field: String, old: Option[JsValue], `new`: Option[JsValue])
@typeclass
trait CreateColumnChanges[-New] {
def fieldChanges(newValue: New): Vector[ColumnChange]
}
trait LowLevelFieldChangesImplicits {
import com.github.ghik.silencer.silent
@silent
implicit object NothingColumnChanges extends CreateColumnChanges[Nothing] {
override def columnChanges(newValue: Nothing): Vector[ColumnChange] = Vector.empty
}
}
我已经"-Xfatal-warnings"
在我的build.sbt
.
当我编译我的项目时,它会抛出这个错误:
dead code following this construct
[error] implicit object NothingCreateFieldChanges extends CreateFieldChanges[Nothing] {
我尝试将 type 更改为CreateColumnChanges[Any]
,但不知何故,许多测试都失败了,这使我的问题过于复杂,可能是因为-New
处于逆变位置。我也尝试将它scalacOptions "-Ywarn-dead-code"
放入构建文件中,但它没有任何效果,我再次遇到同样的异常。我正在用 scala 编译2.12.10
。@silent
注释也没有影响它。如何更改我的代码以避免此错误。
解决方案
最后这工作,
我将类型从更改Nothing
为Unit
推荐阅读
- c - C Tcl 命令未被识别
- google-apps-script - 使用应用脚本输入数据后,是否可以保护谷歌表格中的单元格和范围?
- javascript - 我需要对 Href 链接做任何事情吗?喜欢编码它左右
- python - ImportError:DLL 加载失败:找不到指定的模块。在使用烧瓶和 python 运行 app.py 文件时?
- excel - VBA:识别工作表中的最后一行公式(或数据),复制该行,然后在其正下方粘贴一行
- python - 如何将一列的值与其他列中的多个值进行比较?
- c# - 如何最小化 Visual Studio 设计器文件中的流失
- sql - SQL 我在哪里放置选项重新编译?
- ruby-on-rails - Ruby on Rails 6 脚手架模板位于何处?
- c# - 在 .Net Core 中为 Excel RTD() 函数编译 IRtdServer 接口