LayerBuilder

final case class LayerBuilder[Type, Expr](target0: List[Type], remainder: List[Type], providedLayers0: List[Expr], layerToDebug: PartialFunction[Expr, Debug], sideEffectType: Type, typeEquals: (Type, Type) => Boolean, foldTree: LayerTree[Expr] => Expr, method: ProvideMethod, exprToNode: Expr => Node[Type, Expr], typeToNode: Type => Node[Type, Expr], showExpr: Expr => String, showType: Type => String, reportWarn: String => Unit, reportError: String => Nothing)

LayerBuilder houses the core logic for compile-time layer construction. It is parameterized by Type and Expr such that it can be shared across Scala 2 and 3, which have incompatible macro libraries.

Value parameters:
exprToNode

A method for converting an Expr into a Node for use in the graph traversal.

foldTree

A method for folding a tree of layers into the final layer.

layerToDebug

A method which allows LayerBuilder to filter/extract the special ZLayer.Debug layers from the provided layers.

method

The sort of method that is being called: provide, provideSome, or provideCustom. This is used to provide improved compilation warnings.

providedLayers0

A list of layers ASTs that have been provided by the user.

remainder

A list of types indicating the input of the final layer. This would be the parameter of ZIO.provideSome

target

A list of types indicating the intended output of the final layer. This is generally determined by the R of the effect that ZIO.provide is called on.

typeEquals

A method for comparing types: Used in the construction of the final layer

typeToNode

A method for converting a leftover type into a Node to be used in the graph traversal.

trait Product
trait Equals
class Object
trait Matchable
class Any

Value members

Concrete methods

def build: Expr

Inherited methods

def productElementNames: Iterator[String]
Inherited from:
Product
def productIterator: Iterator[Any]
Inherited from:
Product

Concrete fields

lazy val target: List[Type]