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 {
|
object OptJsonWriter extends OptJsonWriter0 {
|
||||||
implicit def lift[A](implicit z: JsonWriter[A]): SomeJsonWriter[A] = SomeJsonWriter(z)
|
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