Hi!
Ich habe nach der Migration auf Scala 2.12.4 ein Problem entdeckt. Es ist möglicherweise ein Fehler in scalac, aber ich bin mir nicht sicher.
Hier ein Minimalbeispiel:
Von build.sbt
:
scalaVersion := "2.12.4"
scalacOptions ++= Seq("-Ywarn-unused", "-Xfatal-warnings")
val circeVersion = "0.8.0"
libraryDependencies ++= Seq(
"io.circe" %% "circe-core",
"io.circe" %% "circe-generic",
"io.circe" %% "circe-parser"
).map(_ % circeVersion)
Test.scala
:
object Test extends App {
import java.time.Instant
import io.circe.generic.auto._
import io.circe.syntax._
private implicit val instantEncoder: io.circe.Encoder[Instant] =
io.circe.Encoder.encodeLong.contramap(_.toEpochMilli)
case class A(prop: Instant)
println(A(Instant.now()).asJson)
}
So schlägt das Kompilieren fehl:
privater Wert instantEncoder im Objekt Test wird nie verwendet
Wenn Sie instantEncoder
auskommentieren, schlägt dies ebenfalls fehl:
konnte keinen impliziten Wert für Parameter-Encoder finden: io.circe.Encoder[Test.A]
Und es lässt sich gut mit Scala 2.12.3 kompilieren.
Ich bin auch auf dieses Problem gestoßen.
Dies kann in der Zwischenzeit umgangen werden, indem man die beleidigende Deklaration mit silent annotiert oder ihre Sichtbarkeit von private
auf private[NameOfEnclosingType]
ändert.
Wir stoßen auch auf dieses Problem, würden gerne helfen, wissen aber nicht einmal, wo wir anfangen sollen zu suchen
Wir stoßen auf dieses Problem für einen impliziten Parameter, möchten nicht silent
für dieses tbh einführen
implicit def dataChangeEventEncoder[T](implicit enc: Encoder[T]) = semiauto.deriveEncoder[DataChangeEvent[T]]
Irgendwelche Infos dazu oder einen Link zu irgendwo, wo es mehr Diskussionen gibt?
Edit: Habe gerade diese Probleme gefunden:
https://github.com/scala/bug/issues/10599
https://github.com/scala/bug/issues/10571
TL;DR: Verwenden Sie das Compiler-Flag -Ywarn-macros:after
Hilfreichster Kommentar
Irgendwelche Infos dazu oder einen Link zu irgendwo, wo es mehr Diskussionen gibt?
Edit: Habe gerade diese Probleme gefunden:
https://github.com/scala/bug/issues/10599
https://github.com/scala/bug/issues/10571
TL;DR: Verwenden Sie das Compiler-Flag
-Ywarn-macros:after