aboutsummaryrefslogtreecommitdiff
path: root/src/types.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-10-05 16:24:59 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-10-05 16:24:59 -0400
commit9738b3454639ddf3ae46186a5c6ba671fe9a6861 (patch)
tree3b9d300b4d2cae1479c013bdb154b1eb7e16780f /src/types.c
parent76d3008d98cf9cd6ed60a9aa66a87f854965f0ab (diff)
Add serialization and deserialization by coercion to/from [Byte]
Diffstat (limited to 'src/types.c')
-rw-r--r--src/types.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/types.c b/src/types.c
index ff86ab8f..900588f5 100644
--- a/src/types.c
+++ b/src/types.c
@@ -274,6 +274,9 @@ PUREFUNC bool can_promote(type_t *actual, type_t *needed) {
// No promotion necessary:
if (type_eq(actual, needed)) return true;
+ // Serialization/deserialization
+ if (type_eq(actual, Type(ListType, Type(ByteType))) || type_eq(needed, Type(ListType, Type(ByteType)))) return true;
+
if (actual->tag == NumType && needed->tag == IntType) return false;
if (actual->tag == IntType && (needed->tag == NumType || needed->tag == BigIntType)) return true;