Skip to content

Allow summon typeclass instance of opaque type defined in companion object while deriving. #17639

Closed
@jilen

Description

@jilen
import io.circe._
case class Foo(id: Foo.Id) derives Codec.AsObject // Cannot find encoder/decoder of Id
object Foo {
  opaque type Id = Long
}

The above very common opaque type use case won't compile.
Seems compiler don't know Id is Long while deriving.

Note, if opaque type defined in top level, it compiles just fine.

import io.circe._
opaque type FooId = Long
case class Foo(id: FooId) derives Codec.AsObject // Compiles ok

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions