lift-core 0.2.0

LIFT-CORE: SSA IR foundation — types, values, operations, blocks, regions, verifier
Documentation
use slotmap::new_key_type;
use serde::{Serialize, Deserialize};
use crate::types::TypeId;
use crate::interning::StringId;

new_key_type! {
    pub struct ValueKey;
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValueData {
    pub ty: TypeId,
    pub name: Option<StringId>,
    pub def: DefSite,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DefSite {
    OpResult { op: crate::operations::OpKey, result_index: u32 },
    BlockArg { block: crate::blocks::BlockKey, arg_index: u32 },
}