Skip to main content

lift_core/
values.rs

1use crate::interning::StringId;
2use crate::types::TypeId;
3use serde::{Deserialize, Serialize};
4use slotmap::new_key_type;
5
6new_key_type! {
7    pub struct ValueKey;
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct ValueData {
12    pub ty: TypeId,
13    pub name: Option<StringId>,
14    pub def: DefSite,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub enum DefSite {
19    OpResult {
20        op: crate::operations::OpKey,
21        result_index: u32,
22    },
23    BlockArg {
24        block: crate::blocks::BlockKey,
25        arg_index: u32,
26    },
27}