Skip to content

Commit

Permalink
ZLayer Resurrection (#6061)
Browse files Browse the repository at this point in the history
* zlayer cannot be zlayed

* comment out example (dotty macro issue)

* undo renaming of ZLayer

* more changes
  • Loading branch information
kitlangton committed Nov 19, 2021
1 parent 0966901 commit a4fc34d
Show file tree
Hide file tree
Showing 148 changed files with 3,933 additions and 4,788 deletions.
2 changes: 2 additions & 0 deletions .scalafmt.conf
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ newlines.alwaysBeforeMultilineDef = false
runner.dialect = scala213
rewrite.rules = [RedundantBraces]

project.excludePaths = ["glob:**/scalafix/input/**", "glob:**/scalafix/output/**"]

rewrite.redundantBraces.generalExpressions = false
rewriteTokens = {
"⇒": "=>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ object CleanCodePrinterSpec extends ZIOBaseSpec {
Assertion.assertion("containsStringWithoutAnsi")(param(element))(_.removingAnsiCodes.contains(element))

def spec: ZSpec[Environment, Failure] =
suite("AutoServiceBuilderSpec")(
suite("AutoLayerSpec")(
suite(".showTree") {
test("prints trees for expressions") {
import nested.{Service => Nested}
Expand Down
4 changes: 2 additions & 2 deletions core-tests/shared/src/test/scala/zio/RandomSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ object RandomSpec extends ZIOBaseSpec {
}
},
test("scalaRandom") {
val serviceBuilder = ZServiceBuilder.fromZIO(ZIO.succeed(new scala.util.Random)) >>> Random.scalaRandom
val sample = ZIO.replicateZIO(5)((Random.setSeed(91) *> Random.nextInt).provideSome(serviceBuilder.fresh))
val layer = ZLayer.fromZIO(ZIO.succeed(new scala.util.Random)) >>> Random.scalaRandom
val sample = ZIO.replicateZIO(5)((Random.setSeed(91) *> Random.nextInt).provideSome(layer.fresh))
for {
values <- ZIO.collectAllPar(ZIO.replicate(5)(sample))
} yield assertTrue(values.toSet.size == 1)
Expand Down
2 changes: 1 addition & 1 deletion core-tests/shared/src/test/scala/zio/ScheduleSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -722,6 +722,6 @@ object ScheduleSpec extends ZIOBaseSpec {

object Logging {
trait Service
val live: ZServiceBuilder[Any, Nothing, Logging] = ZServiceBuilder.succeed(new Logging.Service {})
val live: ZLayer[Any, Nothing, Logging] = ZLayer.succeed(new Logging.Service {})
}
}
24 changes: 12 additions & 12 deletions core-tests/shared/src/test/scala/zio/TagCorrectnessSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ object TagCorrectnessSpec extends DefaultRunnableSpec {
test("Issue #4802") {
ZIO
.serviceWithZIO[Ref[Int]](_.get)
.inject(Ref.make(10).toServiceBuilder)
.inject(Ref.make(10).toLayer)
.map { int =>
assertTrue(int == 10)
}
Expand Down Expand Up @@ -39,8 +39,8 @@ object TagCorrectnessSpec extends DefaultRunnableSpec {
}

object Service {
val live: UServiceBuilder[Service[Int]] =
ZServiceBuilder.succeed {
val live: ULayer[Service[Int]] =
ZLayer.succeed {
new Service[Int] {
def foo(t: Int) =
ZIO.succeed(t)
Expand All @@ -58,10 +58,10 @@ object TagCorrectnessSpec extends DefaultRunnableSpec {
// https://github.com/zio/zio/issues/4564
test("Issue #4564") {
trait Svc[A]
def testBaseLayer[R, A: Tag]: ZServiceBuilder[R, Nothing, Svc[A]] =
ZIO.environmentWith[R](_ => new Svc[A] {}).toServiceBuilder[Svc[A]]
def testSecondLayer[A: Tag]: ZServiceBuilder[Svc[A], Nothing, Svc[A]] =
ZServiceBuilder.fromFunction[Svc[A], Svc[A]] { environment =>
def testBaseLayer[R, A: Tag]: ZLayer[R, Nothing, Svc[A]] =
ZIO.environmentWith[R](_ => new Svc[A] {}).toLayer[Svc[A]]
def testSecondLayer[A: Tag]: ZLayer[Svc[A], Nothing, Svc[A]] =
ZLayer.fromFunction[Svc[A], Svc[A]] { environment =>
environment.get
}

Expand All @@ -79,8 +79,8 @@ object TagCorrectnessSpec extends DefaultRunnableSpec {
def provide: IO[Throwable, D]
}

def layer[A: Tag, D <: Container[A]: Tag](container: D): UServiceBuilder[ContainerProvider[A, D]] =
ZServiceBuilder.succeed {
def layer[A: Tag, D <: Container[A]: Tag](container: D): ULayer[ContainerProvider[A, D]] =
ZLayer.succeed {
new Service[A, D] {
def provide: IO[Throwable, D] = IO.succeed(container)
}
Expand Down Expand Up @@ -116,8 +116,8 @@ object HigherKindedTagCorrectness extends DefaultRunnableSpec {
object Cache {
def live[F[_], K, V](
f: Option[V] => F[V]
)(implicit tag: Tag[Cache[F, K, V]]): ZServiceBuilder[Any, Nothing, Cache[F, K, V]] =
ZServiceBuilder {
)(implicit tag: Tag[Cache[F, K, V]]): ZLayer[Any, Nothing, Cache[F, K, V]] =
ZLayer {
for {
cache <- Ref.make(Map.empty[K, V])
} yield new Cache[F, K, V] {
Expand All @@ -136,7 +136,7 @@ object HigherKindedTagCorrectness extends DefaultRunnableSpec {
ZIO.serviceWithZIO(_.put(key, value))
}

val myCache: ZServiceBuilder[Any, Nothing, Cache[Option, Int, String]] =
val myCache: ZLayer[Any, Nothing, Cache[Option, Int, String]] =
Cache.live[Option, Int, String](identity)

def spec =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ object ZEnvironmentIssuesSpec extends DefaultRunnableSpec {
val zio: URIO[Animal, Animal] = ZIO.service[Animal]

// Provides a Dog
val dog: Dog = new Dog {}
val dogService: UServiceBuilder[Dog] = ZServiceBuilder.succeed(dog)
val dog: Dog = new Dog {}
val dogService: ULayer[Dog] = ZLayer.succeed(dog)

zio.provide(dogService).map { result =>
assertTrue(result == dog)
Expand Down
18 changes: 9 additions & 9 deletions core-tests/shared/src/test/scala/zio/ZIOSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1835,17 +1835,17 @@ object ZIOSpec extends ZIOBaseSpec {
),
suite("provideCustom")(
test("provides the part of the environment that is not part of the `ZEnv`") {
val loggingServiceBuilder: ZServiceBuilder[Any, Nothing, Logging] = Logging.live
val zio: ZIO[ZEnv with Logging, Nothing, Unit] = ZIO.unit
val zio2: URIO[ZEnv, Unit] = zio.provideCustom(loggingServiceBuilder)
val loggingLayer: ZLayer[Any, Nothing, Logging] = Logging.live
val zio: ZIO[ZEnv with Logging, Nothing, Unit] = ZIO.unit
val zio2: URIO[ZEnv, Unit] = zio.provideCustom(loggingLayer)
assertM(zio2)(anything)
}
),
suite("provideSome")(
test("can split environment into two parts") {
val clockServiceBuilder: ZServiceBuilder[Any, Nothing, Clock] = Clock.live
val zio: ZIO[Clock with Random, Nothing, Unit] = ZIO.unit
val zio2: URIO[Random, Unit] = zio.provideSome[Random](clockServiceBuilder)
val clockLayer: ZLayer[Any, Nothing, Clock] = Clock.live
val zio: ZIO[Clock with Random, Nothing, Unit] = ZIO.unit
val zio2: URIO[Random, Unit] = zio.provideSome[Random](clockLayer)
assertM(zio2)(anything)
}
),
Expand Down Expand Up @@ -3302,7 +3302,7 @@ object ZIOSpec extends ZIOBaseSpec {
suite("serviceWith")(
test("effectfully accesses a service in the environment") {
val zio = ZIO.serviceWithZIO[Int](int => UIO(int + 3))
assertM(zio.inject(ZServiceBuilder.succeed(0)))(equalTo(3))
assertM(zio.inject(ZLayer.succeed(0)))(equalTo(3))
}
),
suite("schedule")(
Expand Down Expand Up @@ -3600,7 +3600,7 @@ object ZIOSpec extends ZIOBaseSpec {
a <- ZIO.service[Int].updateService[Int](_ + 1)
b <- ZIO.service[Int]
} yield (a, b)
assertM(zio.provide(ZServiceBuilder.succeed(0)))(equalTo((1, 0)))
assertM(zio.provide(ZLayer.succeed(0)))(equalTo((1, 0)))
}
),
suite("validate")(
Expand Down Expand Up @@ -4054,7 +4054,7 @@ object ZIOSpec extends ZIOBaseSpec {

object Logging {
trait Service
val live: ZServiceBuilder[Any, Nothing, Logging] = ZServiceBuilder.succeed(new Logging.Service {})
val live: ZLayer[Any, Nothing, Logging] = ZLayer.succeed(new Logging.Service {})
}

}
Loading

0 comments on commit a4fc34d

Please sign in to comment.