diff --git a/modules/core/src/main/scala-2/doobie/util/GetPlatform.scala b/modules/core/src/main/scala-2/doobie/util/MkGetPlatform.scala similarity index 96% rename from modules/core/src/main/scala-2/doobie/util/GetPlatform.scala rename to modules/core/src/main/scala-2/doobie/util/MkGetPlatform.scala index 0274fe4d4..1a805d0e1 100644 --- a/modules/core/src/main/scala-2/doobie/util/GetPlatform.scala +++ b/modules/core/src/main/scala-2/doobie/util/MkGetPlatform.scala @@ -7,7 +7,7 @@ package doobie.util import shapeless._ import shapeless.ops.hlist.IsHCons -trait GetPlatform { +trait MkGetPlatform { import doobie.util.compat.=:= /** @group Instances */ diff --git a/modules/core/src/main/scala-2/doobie/util/PutPlatform.scala b/modules/core/src/main/scala-2/doobie/util/MkPutPlatform.scala similarity index 96% rename from modules/core/src/main/scala-2/doobie/util/PutPlatform.scala rename to modules/core/src/main/scala-2/doobie/util/MkPutPlatform.scala index 9b946f158..2a4d32c3b 100644 --- a/modules/core/src/main/scala-2/doobie/util/PutPlatform.scala +++ b/modules/core/src/main/scala-2/doobie/util/MkPutPlatform.scala @@ -7,7 +7,7 @@ package doobie.util import shapeless._ import shapeless.ops.hlist.IsHCons -trait PutPlatform { +trait MkPutPlatform { import doobie.util.compat.=:= /** @group Instances */ diff --git a/modules/core/src/main/scala-2/doobie/util/ReadPlatform.scala b/modules/core/src/main/scala-2/doobie/util/ReadPlatform.scala index 44d4a4b65..64a5e7371 100644 --- a/modules/core/src/main/scala-2/doobie/util/ReadPlatform.scala +++ b/modules/core/src/main/scala-2/doobie/util/ReadPlatform.scala @@ -29,4 +29,7 @@ trait ReadPlatform { MkRead.ogeneric[A, Repr] } + @deprecated("Use Read.derived instead to derive instances explicitly", "1.0.0-RC6") + def generic[T, Repr](implicit gen: Generic.Aux[T, Repr], G: Lazy[MkRead[Repr]]): MkRead[T] = + MkRead.generic[T, Repr] } diff --git a/modules/core/src/main/scala-2/doobie/util/WritePlatform.scala b/modules/core/src/main/scala-2/doobie/util/WritePlatform.scala index 60fc9fb32..0553067d2 100644 --- a/modules/core/src/main/scala-2/doobie/util/WritePlatform.scala +++ b/modules/core/src/main/scala-2/doobie/util/WritePlatform.scala @@ -27,4 +27,8 @@ trait WritePlatform { val _ = isTuple MkWrite.ogeneric[A, Repr] } + + @deprecated("Use Write.derived instead to derive instances explicitly", "1.0.0-RC6") + def generic[T, Repr](implicit gen: Generic.Aux[T, Repr], A: Lazy[MkWrite[Repr]]): MkWrite[T] = + MkWrite.generic[T, Repr] } diff --git a/modules/core/src/main/scala-3/doobie/util/GetPlatform.scala b/modules/core/src/main/scala-3/doobie/util/MkGetPlatform.scala similarity index 96% rename from modules/core/src/main/scala-3/doobie/util/GetPlatform.scala rename to modules/core/src/main/scala-3/doobie/util/MkGetPlatform.scala index 7011a60c8..c44c14fab 100644 --- a/modules/core/src/main/scala-3/doobie/util/GetPlatform.scala +++ b/modules/core/src/main/scala-3/doobie/util/MkGetPlatform.scala @@ -6,7 +6,7 @@ package doobie.util import scala.deriving.Mirror -trait GetPlatform: +trait MkGetPlatform: // Get is available for single-element products. given x[P <: Product, A]( diff --git a/modules/core/src/main/scala-3/doobie/util/PutPlatform.scala b/modules/core/src/main/scala-3/doobie/util/MkPutPlatform.scala similarity index 96% rename from modules/core/src/main/scala-3/doobie/util/PutPlatform.scala rename to modules/core/src/main/scala-3/doobie/util/MkPutPlatform.scala index 60ffa7b29..5e4a8f283 100644 --- a/modules/core/src/main/scala-3/doobie/util/PutPlatform.scala +++ b/modules/core/src/main/scala-3/doobie/util/MkPutPlatform.scala @@ -6,7 +6,7 @@ package doobie.util import scala.deriving.Mirror -trait PutPlatform: +trait MkPutPlatform: // Put is available for single-element products. given [P <: Product, A]( diff --git a/modules/core/src/main/scala/doobie/util/get.scala b/modules/core/src/main/scala/doobie/util/get.scala index bbfeb45b9..87ca8f5ca 100644 --- a/modules/core/src/main/scala/doobie/util/get.scala +++ b/modules/core/src/main/scala/doobie/util/get.scala @@ -221,7 +221,8 @@ sealed abstract class MkGet[A]( override val vendorTypeNames: List[String], override val get: Coyoneda[(ResultSet, Int) => *, A] ) extends Get[A](typeStack, jdbcSources, jdbcSourceSecondary, vendorTypeNames, get) -object MkGet extends GetPlatform { + +object MkGet extends MkGetPlatform { def lift[A](g: Get[A]): MkGet[A] = new MkGet[A]( diff --git a/modules/core/src/main/scala/doobie/util/put.scala b/modules/core/src/main/scala/doobie/util/put.scala index 93a0d5a09..395021d15 100644 --- a/modules/core/src/main/scala/doobie/util/put.scala +++ b/modules/core/src/main/scala/doobie/util/put.scala @@ -234,7 +234,8 @@ sealed abstract class MkPut[A]( override val put: ContravariantCoyoneda[(PreparedStatement, Int, *) => Unit, A], override val update: ContravariantCoyoneda[(ResultSet, Int, *) => Unit, A] ) extends Put[A](typeStack, jdbcTargets, vendorTypeNames, put, update) -object MkPut extends PutPlatform { + +object MkPut extends MkPutPlatform { def lift[A](g: Put[A]): MkPut[A] = new MkPut[A]( diff --git a/modules/core/src/test/scala-2/doobie/util/PutSuitePlatform.scala b/modules/core/src/test/scala-2/doobie/util/PutSuitePlatform.scala index 3237f6bf5..3d8293d26 100644 --- a/modules/core/src/test/scala-2/doobie/util/PutSuitePlatform.scala +++ b/modules/core/src/test/scala-2/doobie/util/PutSuitePlatform.scala @@ -4,31 +4,26 @@ package doobie.util import doobie.testutils.{VoidExtensions, assertContains} +import doobie.testutils.TestClasses.CCAnyVal -object PutSuitePlatform { - final case class Y(x: String) extends AnyVal - final case class P(x: Int) extends AnyVal -} +object PutSuitePlatform {} trait PutSuitePlatform { self: munit.FunSuite => - import PutSuitePlatform._ - test("Put can be auto derived for unary products (AnyVal)") { import doobie.generic.auto._ - Put[Y].void - Put[P].void + Put[CCAnyVal].void } test("Put can be explicitly derived for unary products (AnyVal)") { - Put.derived[Y].void - Put.derived[P].void + Put.derived[CCAnyVal].void } test("Put should not be derived for non-unary products") { import doobie.generic.auto._ import doobie.testutils.TestClasses.{CCIntString, PlainObj} + println(compileErrors("Put[CCIntString]")) assertContains(compileErrors("Put[CCIntString]"), "implicit value") assertContains(compileErrors("Put[(Int, Int)]"), "implicit value") assertContains(compileErrors("Put[PlainObj.type]"), "implicit value") diff --git a/modules/testutils/src/test/scala/doobie/testutils/TestClasses.scala b/modules/testutils/src/test/scala/doobie/testutils/TestClasses.scala index c39e21269..27fe46061 100644 --- a/modules/testutils/src/test/scala/doobie/testutils/TestClasses.scala +++ b/modules/testutils/src/test/scala/doobie/testutils/TestClasses.scala @@ -16,5 +16,7 @@ object TestClasses { case class CCIntString(i: Int, s: String) + case class CCAnyVal(s: String) extends AnyVal + object PlainObj }