use crate::alloc::{self, HashMap, HashSet};
use crate::compile::ItemId;
use crate::runtime::ConstValue;
#[derive(Default)]
pub(crate) struct Consts {
resolved: HashMap<ItemId, ConstValue>,
processing: HashSet<ItemId>,
}
impl Consts {
pub(crate) fn mark(&mut self, item: ItemId) -> alloc::Result<bool> {
self.processing.try_insert(item)
}
pub(crate) fn get(&self, item: ItemId) -> Option<&ConstValue> {
self.resolved.get(&item)
}
pub(crate) fn insert(
&mut self,
item: ItemId,
value: ConstValue,
) -> alloc::Result<Option<ConstValue>> {
self.resolved.try_insert(item, value)
}
}