Skip to content

Scala 3 enums in a container #1268

@kamilkloch

Description

@kamilkloch

Fruit.Orange.type is rendered as "Orange" outside C, as "{}" inside C. Is this the desired behavior?

  enum Fruit {
    case Apple, Orange
  }

  object Fruit {
    given JsonValueCodec[Fruit] = JsonCodecMaker.make(CodecMakerConfig.withDiscriminatorFieldName(None))
  }

  case class C(fruit: Fruit, orange: Fruit.Orange.type)

  given JsonValueCodec[C] = JsonCodecMaker.make

  println(writeToString(Fruit.Orange: Fruit)) // "Orange"
  println(writeToString(Fruit.Orange: Fruit.Orange.type)) // "Orange"
  println(writeToString(C(Fruit.Orange, Fruit.Orange))) // {"fruit":"Orange","orange":{}}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions