mod common;
pub(crate) use common::FLAT_MIN_CHILDREN;
mod engine;
#[cfg(test)]
mod zhang_shasha;
pub use common::{Algorithm, for_nodes, for_roots};
pub(crate) use common::{
myers_lcs, prematch_identical_statement_siblings, prematch_unique_named_locals,
};
use crate::code::Code;
use crate::diff::ASTDiff;
pub fn for_roots_fallback(before: &Code, after: &Code, source: &'static str, diff: &mut ASTDiff) {
if before.ast.is_none() || after.ast.is_none() {
return;
}
let before_metadata = crate::code::metadata::metadata_of(before);
let after_metadata = crate::code::metadata::metadata_of(after);
let before_root_id = before.ast.as_ref().unwrap().root_node().id();
let after_root_id = after.ast.as_ref().unwrap().root_node().id();
common::resolve_residual_forest_via_myers_lcs(
&before_metadata,
&after_metadata,
before_root_id,
after_root_id,
source,
diff,
);
}