tofu icon indicating copy to clipboard operation
tofu copied to clipboard

ZIO's WithRun#runContext fails with an error

Open skelantros opened this issue 10 months ago • 1 comments

The following code fails with java.lang.Error: Defect in zio.ZEnvironment: Could not find ErrorExample::Context inside ZEnvironment(Any -> Context(42))

import tofu.WithRun
import tofu.zioInstances.implicits.zioTofuWithRunImplicit
import zio._

object ZIOWithRunError extends ZIOAppDefault {
  case class Context(x: Int)

  val app: RIO[Context, Unit] = ZIO.service[Context].flatMap(Console.printLine(_))

  override def run: ZIO[Any with ZIOAppArgs with Scope, Any, Any] =
    WithRun[RIO[Context, *], Task, Context].runContext(app)(Context(42))
}

Based on the error message, it seems like Context's tag is not used to build ZEnvironment when using WithRun instance, resulting in ZIO being unable to find Context instance in the environment.

skelantros avatar Apr 11 '24 16:04 skelantros

Fixed this locally, will submit a bit later.

skelantros avatar Apr 11 '24 16:04 skelantros