Skip to main content

fission_core/
diff.rs

1use fission_ir::{CoreIR, NodeId};
2use std::collections::HashSet;
3
4#[derive(Debug, Default)]
5pub struct FrameDiff {
6    pub dirty_structural: HashSet<NodeId>,
7}
8
9pub fn diff_ir(prev: &CoreIR, next: &CoreIR) -> FrameDiff {
10    let mut diff = FrameDiff::default();
11
12    for (id, next_node) in &next.nodes {
13        if let Some(prev_node) = prev.nodes.get(id) {
14            if prev_node.hash != next_node.hash {
15                diff.dirty_structural.insert(*id);
16            }
17        } else {
18            diff.dirty_structural.insert(*id);
19        }
20    }
21
22    diff
23}