diff --git a/kyo-core/shared/src/test/scala/kyo/TagCompactTest.scala b/kyo-core/shared/src/test/scala/kyo/TagCompactTest.scala new file mode 100644 index 000000000..90b0b393b --- /dev/null +++ b/kyo-core/shared/src/test/scala/kyo/TagCompactTest.scala @@ -0,0 +1,32 @@ +package kyo + +import kyo.kernel.* +import org.scalatest.NonImplicitAssertions +import org.scalatest.compatible.Assertion + +class TagCompactTest extends Test: + + "Tag is compact" - { + "Tag[Effect]" in { + assert(Tag[Effect].raw == "!=q;!T0;!U1;!V2;") + } + "Tag[ArrowEffect[Const[Unit], Const[Unit]]]" in { + assert(Tag[ArrowEffect[Const[Unit], Const[Unit]]].raw == "!?s;!=q;!T0;!U1;!V2;[-!+a;!W3;!U1;!V2;,+!+a;!W3;!U1;!V2;]") + } + "Tag[ContextEffect[Int]]" in { + assert(Tag[ContextEffect[Int]].raw == "!>r;!=q;!T0;!U1;!V2;[+!Y5;!W3;!U1;!V2;]") + } + "Tag[Abort[Int]]" in { + assert(Tag[Abort[Int]].raw == "!@t;!?s;!=q;!T0;!U1;!V2;[-!Y5;!W3;!U1;!V2;]") + } + "Tag[Async.Join]" in { + assert(Tag[Async.Join].raw == "!Au;!?s;!=q;!T0;!U1;!V2;") + } + "Tag[Emit[Int]]" in { + assert(Tag[Emit[Int]].raw == "!Bv;!?s;!=q;!T0;!U1;!V2;[=!Y5;!W3;!U1;!V2;]") + } + "Tag[IO]" in { + assert(Tag[IO].raw == "!Cw;!?s;!=q;!T0;!U1;!V2;") + } + } +end TagCompactTest diff --git a/kyo-data/shared/src/main/scala/kyo/internal/TagMacro.scala b/kyo-data/shared/src/main/scala/kyo/internal/TagMacro.scala index d9fe51f14..f430a525f 100644 --- a/kyo-data/shared/src/main/scala/kyo/internal/TagMacro.scala +++ b/kyo-data/shared/src/main/scala/kyo/internal/TagMacro.scala @@ -133,41 +133,42 @@ object TagMacro: end concat val toCompact = Map( - "java.lang.Object" -> "0", - "scala.Matchable" -> "1", - "scala.Any" -> "2", - "scala.AnyVal" -> "3", - "java.lang.String" -> "4", - "scala.Int" -> "5", - "scala.Long" -> "6", - "scala.Float" -> "7", - "scala.Double" -> "8", - "scala.Boolean" -> "9", - "scala.Unit" -> "a", - "scala.Option" -> "b", - "scala.Some" -> "c", - "scala.None" -> "d", - "scala.Left" -> "e", - "scala.Right" -> "f", - "scala.Tuple2" -> "g", - "scala.collection.immutable.List" -> "h", - "scala.collection.immutable.Nil" -> "i", - "scala.collection.immutable.Map" -> "j", - "scala.Nothing" -> "k", - "java.lang.CharSequence" -> "l", - "java.lang.Comparable" -> "m", - "java.io.Serializable" -> "n", - "scala.Product" -> "o", - "scala.Equals" -> "p", - "kyo.core$.Effect" -> "q", - "kyo.fibersInternal$.FiberGets" -> "r", - "kyo.Streams" -> "s", - "kyo.aborts$package$.Aborts$.internal$.DoAbort" -> "t", - "kyo.zios$package$.ZIOs$.internal$.Tasks" -> "u", - "kyo.IOs" -> "v", - "scala.Char" -> "x", - "java.lang.Throwable" -> "y", - "java.lang.Exception" -> "z" + "java.lang.Object" -> "0", + "scala.Matchable" -> "1", + "scala.Any" -> "2", + "scala.AnyVal" -> "3", + "java.lang.String" -> "4", + "scala.Int" -> "5", + "scala.Long" -> "6", + "scala.Float" -> "7", + "scala.Double" -> "8", + "scala.Boolean" -> "9", + "scala.Unit" -> "a", + "scala.Option" -> "b", + "scala.Some" -> "c", + "scala.None" -> "d", + "scala.Left" -> "e", + "scala.Right" -> "f", + "scala.Tuple2" -> "g", + "scala.collection.immutable.List" -> "h", + "scala.collection.immutable.Nil" -> "i", + "scala.collection.immutable.Map" -> "j", + "scala.Nothing" -> "k", + "java.lang.CharSequence" -> "l", + "java.lang.Comparable" -> "m", + "java.io.Serializable" -> "n", + "scala.Product" -> "o", + "scala.Equals" -> "p", + "kyo.kernel.Effect" -> "q", + "kyo.kernel.ContextEffect" -> "r", + "kyo.kernel.ArrowEffect" -> "s", + "kyo.Abort" -> "t", + "kyo.Async$package$.Async$.Join" -> "u", + "kyo.Emit" -> "v", + "kyo.IO" -> "w", + "scala.Char" -> "x", + "java.lang.Throwable" -> "y", + "java.lang.Exception" -> "z" ) val fromCompact = toCompact.map(_.swap).toMap