Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle Large Type Hierarchies #543

Open
RD-100 opened this issue Jan 20, 2022 · 1 comment
Open

Handle Large Type Hierarchies #543

RD-100 opened this issue Jan 20, 2022 · 1 comment

Comments

@RD-100
Copy link

RD-100 commented Jan 20, 2022

Reference: Discord Discussion

The library currently can't handle a scenario where there are more than 64 subtypes in a sum type.

Reproduce issue as follows:

import zio.json.{DeriveJsonCodec, JsonCodec}

sealed trait A extends Product with Serializable

object A {
  case object B1 extends A
  case object B2 extends A
  case object B3 extends A
  case object B4 extends A
  case object B5 extends A
  case object B6 extends A
  case object B7 extends A
  case object B8 extends A
  case object B9 extends A
  case object B10 extends A
  case object B11 extends A
  case object B12 extends A
  case object B13 extends A
  case object B14 extends A
  case object B15 extends A
  case object B16 extends A
  case object B17 extends A
  case object B18 extends A
  case object B19 extends A
  case object B20 extends A
  case object B21 extends A
  case object B22 extends A
  case object B23 extends A
  case object B24 extends A
  case object B25 extends A
  case object B26 extends A
  case object B27 extends A
  case object B28 extends A
  case object B29 extends A
  case object B30 extends A
  case object B31 extends A
  case object B32 extends A
  case object B33 extends A
  case object B34 extends A
  case object B35 extends A
  case object B36 extends A
  case object B37 extends A
  case object B38 extends A
  case object B39 extends A
  case object B40 extends A
  case object B41 extends A
  case object B42 extends A
  case object B43 extends A
  case object B44 extends A
  case object B45 extends A
  case object B46 extends A
  case object B47 extends A
  case object B48 extends A
  case object B49 extends A
  case object B50 extends A
  case object B51 extends A
  case object B52 extends A
  case object B53 extends A
  case object B54 extends A
  case object B55 extends A
  case object B56 extends A
  case object B57 extends A
  case object B58 extends A
  case object B59 extends A
  case object B60 extends A
  case object B61 extends A
  case object B62 extends A
  case object B63 extends A
  case object B64 extends A
  case object B65 extends A
  case object B66 extends A
  case object B67 extends A
  case object B68 extends A
  case object B69 extends A
  case object B70 extends A
  case object B71 extends A
  case object B72 extends A
  case object B73 extends A
  case object B74 extends A
  case object B75 extends A
  case object B76 extends A
  case object B77 extends A
  case object B78 extends A
  case object B79 extends A
  case object B80 extends A

  implicit val codec: JsonCodec[A] = DeriveJsonCodec.gen[A]

}


final case class Test(a : A)
object Test{
  implicit val codec: JsonCodec[Test] = DeriveJsonCodec.gen[Test]
}

Test(A.B80)
@guersam
Copy link
Contributor

guersam commented Jun 10, 2022

It affects case classes with more than 64 fields as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants