1use crate::{BasicBlock, MirLocalId};
2use runmat_hir::{BindingId, FunctionAbi, FunctionId, Span};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6pub struct MirBody {
7 pub function: FunctionId,
8 pub abi: FunctionAbi,
9 pub locals: Vec<MirLocal>,
10 pub blocks: Vec<BasicBlock>,
11}
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
14pub struct MirLocal {
15 pub id: MirLocalId,
16 pub binding: Option<BindingId>,
17 pub kind: MirLocalKind,
18 pub span: Span,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub enum MirLocalKind {
23 Parameter,
24 Output,
25 Binding,
26 Temporary,
27 Capture,
28}