in crates/llm-ls/src/document.rs [582:617]
fn nodes_are_equal_recursive(node1: &Node, node2: &Node) -> bool {
if node1.kind() != node2.kind() {
return false;
}
if node1.start_byte() != node2.start_byte() {
return false;
}
if node1.end_byte() != node2.end_byte() {
return false;
}
if node1.start_position() != node2.start_position() {
return false;
}
if node1.end_position() != node2.end_position() {
return false;
}
if node1.child_count() != node2.child_count() {
return false;
}
for i in 0..node1.child_count() {
let child1 = node1.child(i).unwrap();
let child2 = node2.child(i).unwrap();
if !nodes_are_equal_recursive(&child1, &child2) {
return false;
}
}
true
}