Documentation
use fission_ir::{CoreIR, NodeId};
use std::collections::HashSet;

#[derive(Debug, Default)]
pub struct FrameDiff {
    pub dirty_structural: HashSet<NodeId>,
}

pub fn diff_ir(prev: &CoreIR, next: &CoreIR) -> FrameDiff {
    let mut diff = FrameDiff::default();

    for (id, next_node) in &next.nodes {
        if let Some(prev_node) = prev.nodes.get(id) {
            if prev_node.hash != next_node.hash {
                diff.dirty_structural.insert(*id);
            }
        } else {
            diff.dirty_structural.insert(*id);
        }
    }

    diff
}