Вы можете включить -Xfatal-warnings
и -Ywarn-infer-any
, чтобы он не работал при несовпадении типов.
Это также работает для проверок на равенство ==
.
Вот пример того, что я используюв моем build.sbt
, чтобы избежать странной Скалы, которую вы испытываете:
scalacOptions ++= Seq(
"-deprecation",
"-explaintypes",
"-feature",
"-language:higherKinds",
"-unchecked",
"-Xcheckinit",
"-Xfatal-warnings",
"-Xfuture",
"-Xlint",
"-Yno-adapted-args",
"-Ypartial-unification",
"-Ywarn-dead-code",
"-Ywarn-inaccessible",
"-Ywarn-infer-any",
"-Ywarn-nullary-override",
"-Ywarn-nullary-unit",
"-Ywarn-numeric-widen",
"-Ywarn-unused"
) ++ (
if (scalaVersion.value.startsWith("2.11")) Seq.empty
else Seq("-Ywarn-extra-implicit")
Есть замечательная статья от Роба Норриса на следующие темы:
https://tpolecat.github.io/2017/04/25/scalac-flags.html
К вашему сведению: всеобщее равенствобыть заменен на Multiversal равенство в Scala 3 для решения вашей проблемы:
http://dotty.epfl.ch/docs/reference/contextual/multiversal-equality.html