use BTreeMap;
use crate*;
use ContentHash;
use HASH_VERSION;
// โโโ Serialization Format Tags โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// Node type tags (1-byte prefix).
// Not all tags are used yet โ they define the complete serialization format
// for future expansion (e.g., when more AST node types are normalized).
pub const TAG_FN_DEF: u8 = 0x01;
pub const TAG_LET: u8 = 0x02;
pub const TAG_VAR: u8 = 0x03;
pub const TAG_FIELD_LIT: u8 = 0x04;
pub const TAG_U32_LIT: u8 = 0x05;
pub const TAG_BOOL_LIT: u8 = 0x06;
pub const TAG_ADD: u8 = 0x07;
pub const TAG_MUL: u8 = 0x08;
pub const TAG_SUB: u8 = 0x09;
pub const TAG_INV: u8 = 0x0A;
pub const TAG_EQ: u8 = 0x0B;
pub const TAG_LT: u8 = 0x0C;
pub const TAG_BIT_AND: u8 = 0x0D;
pub const TAG_BIT_XOR: u8 = 0x0E;
pub const TAG_IF: u8 = 0x0F;
pub const TAG_FOR: u8 = 0x10;
pub const TAG_ASSERT: u8 = 0x11;
pub const TAG_CALL: u8 = 0x12;
pub const TAG_PUB_READ: u8 = 0x13;
pub const TAG_PUB_WRITE: u8 = 0x14;
pub const TAG_DIVINE: u8 = 0x15;
pub const TAG_HASH: u8 = 0x16;
pub const TAG_ARRAY_INIT: u8 = 0x17;
pub const TAG_ARRAY_INDEX: u8 = 0x18;
pub const TAG_STRUCT_INIT: u8 = 0x19;
pub const TAG_FIELD_ACCESS: u8 = 0x1A;
pub const TAG_TUPLE: u8 = 0x1B;
pub const TAG_ASSIGN: u8 = 0x1C;
pub const TAG_RETURN: u8 = 0x1D;
pub const TAG_BLOCK: u8 = 0x1E;
pub const TAG_MATCH: u8 = 0x1F;
pub const TAG_DIV_MOD: u8 = 0x20;
pub const TAG_XFIELD_MUL: u8 = 0x21;
pub const TAG_ASM: u8 = 0x22;
pub const TAG_EXPR_STMT: u8 = 0x23;
pub const TAG_STRUCT_PAT: u8 = 0x24;
// Type tags
pub const TAG_TY_FIELD: u8 = 0x80;
pub const TAG_TY_BOOL: u8 = 0x81;
pub const TAG_TY_U32: u8 = 0x82;
pub const TAG_TY_ARRAY: u8 = 0x83;
pub const TAG_TY_TUPLE: u8 = 0x84;
pub const TAG_TY_DIGEST: u8 = 0x86;
pub const TAG_TY_XFIELD: u8 = 0x87;
pub const TAG_TY_NAMED: u8 = 0x88;
// Version byte for hash stability
// โโโ De Bruijn Environment โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
/// De Bruijn environment: maps variable names to indices.
pub
// โโโ Normalizer + Serializer โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
/// Normalize and serialize a function definition to bytes.
///
/// The resulting bytes are deterministic: same computation โ same bytes,
/// regardless of variable names or formatting.
trident/src/package/hash/normalize.rs
ฯ 0.0%