mod bindings;
mod collector;
mod purity;
mod report;
use std::collections::HashMap;
pub(super) use collector::collect;
pub use report::{never_used_offenses, used_once_offenses};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum IntroKind {
Assign,
Binding,
}
#[derive(Clone, Copy, Debug)]
struct Write {
byte: usize,
node_id: usize,
plain: bool,
rhs: Option<usize>,
}
struct Entry {
intro_byte: usize,
intro_kind: IntroKind,
writes: Vec<Write>,
reads: Vec<usize>,
}
#[derive(Clone, Copy, PartialEq, Eq)]
enum ScopeKind {
Root,
Function,
Block,
}
pub(super) struct Scope {
parent: Option<usize>,
kind: ScopeKind,
entries: HashMap<Box<str>, Entry>,
}