From ae0a73ec59905ce9e46407ae332ff8286644d91c Mon Sep 17 00:00:00 2001 From: Ruslan Shevchenko Date: Sat, 5 Oct 2024 11:10:27 +0300 Subject: [PATCH] fixed encoding/decoding of Data --- shared/src/main/scala/scalus/sir/FlatInstances.scala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/shared/src/main/scala/scalus/sir/FlatInstances.scala b/shared/src/main/scala/scalus/sir/FlatInstances.scala index 6f3e2e09..ba053f31 100644 --- a/shared/src/main/scala/scalus/sir/FlatInstances.scala +++ b/shared/src/main/scala/scalus/sir/FlatInstances.scala @@ -25,10 +25,10 @@ object FlatInstantces: def bitSize(a: Data): Int = a match case Data.Constr(constr, args) => - width + summon[Flat[Long]].bitSize(constr) + args.map(bitSize).sum + width + summon[Flat[Long]].bitSize(constr) + summon[Flat[List[Data]]].bitSize(args) case Data.Map(values) => - width + values.map { case (k, v) => bitSize(k) + bitSize(v) }.sum - case Data.List(values) => width + values.map(bitSize).sum + width + summom[Flat[List[(Data,Data)]]].bitSize(values) + case Data.List(values) => width + summon[Flat[List[Data]]].bitSize(values) case Data.I(value) => width + summon[Flat[BigInt]].bitSize(value) case Data.B(value) => width + summon[Flat[builtin.ByteString]].bitSize(value) @@ -37,13 +37,13 @@ object FlatInstantces: case Data.Constr(constr, args) => enc.bits(width, 0) summon[Flat[Long]].encode(constr, enc) - args.foreach(a => encode(a, enc)) + summon[Flat[List[Data]]].encode(args, enc) case Data.Map(values) => enc.bits(width, 1) - values.foreach { case (k, v) => encode(k, enc); encode(v, enc) } + summon[Flat[List[(Data, Data)]].encode(values, enc) case Data.List(values) => enc.bits(width, 2) - values.foreach(a => encode(a, enc)) + summon[Flat[List[Data]]].encode(values, enc) case Data.I(value) => enc.bits(width, 3) summon[Flat[BigInt]].encode(value, enc)