Skip to content

Scala3: Deriving a JsonDecoder for a type having a phantom type doesn't seem to work #1178

@jivanic-demystdata

Description

@jivanic-demystdata

I have this code:

final case class Example[State <: ValidationState](a: String, b: Int) derives JsonDecoder

object Example {
  type UnvalidatedExample = Example[ValidationState.Unvalidated]
  type ValidatedExample   = Example[ValidationState.Validated]
  
  enum ValidationState {
    case Unvalidated, Validated 
  }
  object ValidationState {
    type Unvalidated = Unvalidated.type
    type Validated   = Validated.type
  }
  
  // Doesn't compile
  given JsonDecoder[UnvalidatedExample] = JsonDecoder[Example[?]].asInstanceOf[JsonDecoder[UnvalidatedExample]]
}

which fails to compile with error:

No given instance of type zio.json.JsonDecoder[com.example.Example[?]] was found for parameter a of method apply in object JsonDecoder.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions