Skip to main content

runmat_mir/
body.rs

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}