use vize_l0::Span;
use super::{OpId, RegionId};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Region {
pub id: RegionId,
pub parent: Option<RegionId>,
pub owner: Option<OpId>,
pub span: Span,
}
impl Region {
#[must_use]
pub const fn root(span: Span) -> Self {
Self {
id: RegionId::ROOT,
parent: None,
owner: None,
span,
}
}
#[must_use]
pub const fn child(id: RegionId, parent: RegionId, owner: OpId, span: Span) -> Self {
Self {
id,
parent: Some(parent),
owner: Some(owner),
span,
}
}
}