use rowan::TextRange;
use smol_str::SmolStr;
use crate::semantic::ScopeId;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct BindingId(pub(crate) u32);
impl BindingId {
pub(crate) fn from_index(idx: usize) -> Self {
Self(idx as u32)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BindingKind {
Local,
Param,
ForVar,
Implicit,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Binding {
pub name: SmolStr,
pub kind: BindingKind,
pub scope: ScopeId,
pub def_range: TextRange,
pub read: bool,
}