Closed as not planned
Description
[error] -- [E134] Type Error: /home/jenkins/agent/workspace/buildCommunityProject/repo/airframe-di/src/test/scala/wvlet/airframe/di/TaggedBindingTest.scala:42:28
[error] 39 | val d = Design.newDesign
[error] 40 | .bind[Fruit @@ Apple].toInstance(Fruit("apple"))
[error] 41 | .bind[Fruit @@ Banana].toInstance(Fruit("banana"))
[error] 42 | .bind[Fruit @@ Lemon].toProvider { (apple: Fruit @@ Apple) =>
[error] | ^
[error] |None of the overloaded alternatives of method toProvider in trait BinderImpl with types
[error] | [D1, D2, D3, D4, D5]
[error] | (factory: (D1, D2, D3, D4, D5) => wvlet.airframe.di.TaggedBindingTest.Fruit @@
[error] | wvlet.airframe.di.TaggedBindingTest.Lemon):
[error] | wvlet.airframe.DesignWithContext[wvlet.airframe.di.TaggedBindingTest.Fruit
[error] | @@ wvlet.airframe.di.TaggedBindingTest.Lemon]
[error] | [D1, D2, D3, D4]
[error] | (factory: (D1, D2, D3, D4) => wvlet.airframe.di.TaggedBindingTest.Fruit @@
[error] | wvlet.airframe.di.TaggedBindingTest.Lemon):
[error] | wvlet.airframe.DesignWithContext[wvlet.airframe.di.TaggedBindingTest.Fruit
[error] | @@ wvlet.airframe.di.TaggedBindingTest.Lemon]
[error] | [D1, D2, D3]
[error] | (factory: (D1, D2, D3) => wvlet.airframe.di.TaggedBindingTest.Fruit @@
[error] | wvlet.airframe.di.TaggedBindingTest.Lemon):
[error] | wvlet.airframe.DesignWithContext[wvlet.airframe.di.TaggedBindingTest.Fruit
[error] | @@ wvlet.airframe.di.TaggedBindingTest.Lemon]
[error] | [D1, D2]
[error] | (factory: (D1, D2) => wvlet.airframe.di.TaggedBindingTest.Fruit @@
[error] | wvlet.airframe.di.TaggedBindingTest.Lemon):
[error] | wvlet.airframe.DesignWithContext[wvlet.airframe.di.TaggedBindingTest.Fruit
[error] | @@ wvlet.airframe.di.TaggedBindingTest.Lemon]
[error] | [D1]
[error] | (factory: D1 => wvlet.airframe.di.TaggedBindingTest.Fruit @@
[error] | wvlet.airframe.di.TaggedBindingTest.Lemon):
[error] | wvlet.airframe.DesignWithContext[wvlet.airframe.di.TaggedBindingTest.Fruit
[error] | @@ wvlet.airframe.di.TaggedBindingTest.Lemon]
[error] |match arguments (wvlet.airframe.di.TaggedBindingTest.Fruit @@
[error] | wvlet.airframe.di.TaggedBindingTest.Apple =>
[error] | wvlet.airframe.di.TaggedBindingTest.Fruit)
[error] one error found
[error] (diJVM / Test / compileIncremental) Compilation failed
case class Fruit(name: String)
trait Apple
trait Banana
trait Lemon
test("support tagged binding") {
val apple = Surface.of[Fruit @@ Apple]
debug(s"apple: ${apple}, alias:${apple.isAlias}")
val d = Design.newDesign
.bind[Fruit @@ Apple].toInstance(Fruit("apple"))
.bind[Fruit @@ Banana].toInstance(Fruit("banana"))
.bind[Fruit @@ Lemon].toProvider { (apple: Fruit @@ Apple) =>
Fruit(s"lemon+${apple.name}").asInstanceOf[Fruit @@ Lemon]
}