Skip to content

Commit

Permalink
fix enum vs sealed
Browse files Browse the repository at this point in the history
  • Loading branch information
ThijsBroersen committed Apr 29, 2024
1 parent 726b57f commit a04e624
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions zio-json/shared/src/main/scala-3/zio/json/macros.scala
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,10 @@ object DeriveJsonDecoder extends Derivation[JsonDecoder] { self =>
lazy val namesMap: Map[String, Int] =
names.zipWithIndex.toMap

def isEnumeration = ctx.subtypes.forall(_.typeclass.isInstanceOf[CaseObjectDecoder[?, ?]])
def isEnumeration =
(ctx.isEnum && ctx.subtypes.forall(_.typeclass.isInstanceOf[CaseObjectDecoder[?, ?]])) || (
!ctx.isEnum && ctx.subtypes.forall(_.isObject)
)

def discrim = ctx.annotations.collectFirst { case jsonDiscriminator(n) => n }

Expand Down Expand Up @@ -632,7 +635,10 @@ object DeriveJsonEncoder extends Derivation[JsonEncoder] { self =>
}

def split[A](ctx: SealedTrait[JsonEncoder, A]): JsonEncoder[A] = {
val isEnumeration = ctx.subtypes.forall(_.typeclass == caseObjectEncoder)
val isEnumeration =
(ctx.isEnum && ctx.subtypes.forall(_.typeclass == caseObjectEncoder)) || (
!ctx.isEnum && ctx.subtypes.forall(_.isObject)
)

val jsonHintFormat: JsonMemberFormat =
ctx.annotations.collectFirst { case jsonHintNames(format) => format }.getOrElse(IdentityFormat)
Expand Down

0 comments on commit a04e624

Please sign in to comment.