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}