mirror of https://github.com/sbt/sbt.git
Allow opting out of the fallback OptJsonWriter
Simply
import OptJsonWriter.OptOut._
And you'll get the implicit lift, but not the implicit fallback.
You get an ambiguous compile error like this:
[error] /d/sbt-util/internal/util-collection/src/main/scala/sbt/util/OptJsonWriter.scala:28: ambiguous implicit values:
[error] both method conflictingFallback1 in trait OptOut0 of type [A]=> sbt.util.NoJsonWriter[A]
[error] and method conflictingFallback2 in trait OptOut0 of type [A]=> sbt.util.NoJsonWriter[A]
[error] match expected type sbt.util.OptJsonWriter[Foo]
[error] val x = implicitly[OptJsonWriter[Foo]]
[error] ^
This commit is contained in:
parent
9cfa17d09e
commit
0713e31cea
|
|
@ -11,4 +11,12 @@ trait OptJsonWriter0 {
|
|||
}
|
||||
object OptJsonWriter extends OptJsonWriter0 {
|
||||
implicit def lift[A](implicit z: JsonWriter[A]): SomeJsonWriter[A] = SomeJsonWriter(z)
|
||||
|
||||
trait OptOut0 {
|
||||
implicit def conflictingFallback1[A]: NoJsonWriter[A] = NoJsonWriter()
|
||||
implicit def conflictingFallback2[A]: NoJsonWriter[A] = NoJsonWriter()
|
||||
}
|
||||
object OptOut extends OptOut0 {
|
||||
implicit def lift[A](implicit z: JsonWriter[A]): SomeJsonWriter[A] = SomeJsonWriter(z)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue