Skip to content

Regression in wvlet/airframe v22.11.0 #16336

Closed as not planned
Closed as not planned
@dwijnand

Description

@dwijnand
[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]
      }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions