Skip to content

Commit

Permalink
Add DefaultModule bindings for PrimitivesLocal2
Browse files Browse the repository at this point in the history
  • Loading branch information
neko-kai committed Jun 26, 2024
1 parent 3b3e943 commit e03ca51
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import izumi.functional.quasi.{QuasiApplicative, QuasiAsync, QuasiFunctor, Quasi
import izumi.distage.modules.support.*
import izumi.distage.modules.typeclass.ZIOCatsEffectInstancesModule
import izumi.functional.bio.retry.Scheduler2
import izumi.functional.bio.{Async2, Fork2, Primitives2, Temporal2, UnsafeRun2}
import izumi.functional.bio.{Async2, Fork2, Primitives2, PrimitivesLocal2, PrimitivesM2, Temporal2, UnsafeRun2}
import izumi.fundamentals.orphans.*
import izumi.fundamentals.platform.functional.Identity

Expand Down Expand Up @@ -121,7 +121,7 @@ sealed trait LowPriorityDefaultModulesInstances2 extends LowPriorityDefaultModul

sealed trait LowPriorityDefaultModulesInstances3 extends LowPriorityDefaultModulesInstances4 {
/** @see [[izumi.distage.modules.support.AnyBIOSupportModule]] */
implicit final def fromBIO[F[+_, +_]: TagKK: Async2: Temporal2: UnsafeRun2: Fork2: Primitives2: Scheduler2]: DefaultModule2[F] = {
implicit final def fromBIO[F[+_, +_]: TagKK: Async2: Temporal2: UnsafeRun2: Fork2: Primitives2: PrimitivesM2: PrimitivesLocal2: Scheduler2]: DefaultModule2[F] = {
DefaultModule(AnyBIOSupportModule.withImplicits[F])
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import izumi.distage.model.definition.ModuleDef
import izumi.functional.quasi.*
import izumi.distage.modules.typeclass.BIOInstancesModule
import izumi.functional.bio.retry.Scheduler2
import izumi.functional.bio.{Async2, Clock1, Clock2, Entropy1, Entropy2, Fork2, IO2, Primitives2, PrimitivesM2, SyncSafe1, SyncSafe2, Temporal2, UnsafeRun2}
import izumi.functional.bio.{Async2, Clock1, Clock2, Entropy1, Entropy2, Fork2, IO2, Primitives2, PrimitivesLocal2, PrimitivesM2, SyncSafe1, SyncSafe2, Temporal2, UnsafeRun2}
import izumi.fundamentals.platform.functional.Identity
import izumi.reflect.{TagK, TagKK}

Expand Down Expand Up @@ -72,7 +72,7 @@ object AnyBIOSupportModule extends ModuleDef {
* `make[Fork2[F]]` and `make[Primitives2[F]]` are not required by [[AnyBIOSupportModule]]
* but are added for completeness
*/
def withImplicits[F[+_, +_]: TagKK: Async2: Temporal2: UnsafeRun2: Fork2: Primitives2: PrimitivesM2: Scheduler2](
def withImplicits[F[+_, +_]: TagKK: Async2: Temporal2: UnsafeRun2: Fork2: Primitives2: PrimitivesM2: PrimitivesLocal2: Scheduler2](
implicit t: TagK[F[Throwable, _]],
tn: TagK[F[Nothing, _]],
): ModuleDef = new ModuleDef {
Expand All @@ -83,6 +83,7 @@ object AnyBIOSupportModule extends ModuleDef {
addImplicit[Temporal2[F]]
addImplicit[Primitives2[F]]
addImplicit[PrimitivesM2[F]]
addImplicit[PrimitivesLocal2[F]]
addImplicit[UnsafeRun2[F]]
addImplicit[Scheduler2[F]]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,13 @@ class ZIOSupportModule[R: Tag] extends ZIOPlatformDependentSupportModule[R] {
addImplicit[Fork2[zio.IO]]
addImplicit[Primitives2[zio.IO]]
addImplicit[PrimitivesM2[zio.IO]]
addImplicit[PrimitivesLocal2[zio.IO]]
if (!(Tag[R] =:= Tag[Any])) {
addImplicit[Async2[ZIO[R, +_, +_]]]
addImplicit[Temporal2[ZIO[R, +_, +_]]]
addImplicit[Fork2[ZIO[R, +_, +_]]]
addImplicit[Primitives2[ZIO[R, +_, +_]]]
addImplicit[PrimitivesM2[ZIO[R, +_, +_]]]
addImplicit[PrimitivesLocal2[ZIO[R, +_, +_]]]
}

make[Scheduler2[ZIO[R, +_, +_]]].from {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,15 @@ object BIOInstancesModule {
* `make[Temporal2[F]]`, `make[UnsafeRun2[F]]` `make[Fork2[F]]` and `make[Primitives2[F]]` are not required by [[BIOInstancesModule]]
* but are added for completeness
*/
def withImplicits[F[+_, +_]: TagKK: Async2: Temporal2: UnsafeRun2: Fork2: Primitives2: PrimitivesM2: Scheduler2]: ModuleDef = new ModuleDef {
def withImplicits[F[+_, +_]: TagKK: Async2: Temporal2: UnsafeRun2: Fork2: Primitives2: PrimitivesM2: PrimitivesLocal2: Scheduler2]: ModuleDef = new ModuleDef {
include(BIOInstancesModule[F])

addImplicit[Async2[F]]
addImplicit[Fork2[F]]
addImplicit[Temporal2[F]]
addImplicit[Primitives2[F]]
addImplicit[PrimitivesM2[F]]
addImplicit[PrimitivesLocal2[F]]
addImplicit[UnsafeRun2[F]]
addImplicit[Scheduler2[F]]
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package izumi.distage.impl

import izumi.functional.bio.impl.BioEither
import izumi.functional.bio.{Applicative2, ApplicativeError2, Async2, Bifunctor2, BlockingIO2, Bracket2, Concurrent2, Error2, Fork2, Functor2, Guarantee2, IO2, Monad2, Panic2, Parallel2, Primitives2, PrimitivesM2, Temporal2}
import izumi.functional.bio.{Applicative2, ApplicativeError2, Async2, Bifunctor2, BlockingIO2, Bracket2, Concurrent2, Error2, Fork2, Functor2, Guarantee2, IO2, Monad2, Panic2, Parallel2, Primitives2, PrimitivesLocal2, PrimitivesM2, Temporal2}
import org.scalatest.wordspec.AnyWordSpec

class OptionalDependencyTest213 extends AnyWordSpec {
Expand Down Expand Up @@ -29,6 +29,7 @@ class OptionalDependencyTest213 extends AnyWordSpec {
assert(new optSearch2[Fork2].find == null)
assert(new optSearch2[Primitives2].find == null)
assert(new optSearch2[PrimitivesM2].find == null)
assert(new optSearch2[PrimitivesLocal2].find == null)
assert(new optSearch2[BlockingIO2].find == null)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import distage.Lifecycle
import izumi.distage.model.definition.ModuleDef
import izumi.functional.quasi.{QuasiApplicative, QuasiFunctor, QuasiIO, QuasiPrimitives}
import izumi.distage.modules.DefaultModule
import izumi.functional.bio.{Applicative2, ApplicativeError2, Async2, Bifunctor2, BlockingIO2, Bracket2, Concurrent2, Error2, F, Fork2, Functor2, Guarantee2, IO2, Monad2, Panic2, Parallel2, Primitives2, PrimitivesM2, Temporal2}
import izumi.functional.bio.{Applicative2, ApplicativeError2, Async2, Bifunctor2, BlockingIO2, Bracket2, Concurrent2, Error2, F, Fork2, Functor2, Guarantee2, IO2, Monad2, Panic2, Parallel2, Primitives2, PrimitivesLocal2, PrimitivesM2, Temporal2}
import izumi.fundamentals.platform.functional.{Identity, Identity2}
import org.scalatest.GivenWhenThen
import org.scalatest.wordspec.AnyWordSpec
Expand Down Expand Up @@ -91,6 +91,7 @@ class OptionalDependencyTest extends AnyWordSpec with GivenWhenThen {
optSearch[Fork2[SomeBIO]]
optSearch[Primitives2[SomeBIO]]
optSearch[PrimitivesM2[SomeBIO]]
optSearch[PrimitivesLocal2[SomeBIO]]
optSearch[BlockingIO2[SomeBIO]]

And("`No More Orphans` type provider object is accessible")
Expand Down

0 comments on commit e03ca51

Please sign in to comment.