@@ -320,6 +320,7 @@ impl TreeEditDistance {
320320 }
321321
322322 /// Perform postorder traversal and calculate leftmost leaves
323+ #[ allow( clippy:: only_used_in_recursion) ]
323324 fn postorder_traversal (
324325 & self ,
325326 tree : & ASTNode ,
@@ -415,6 +416,7 @@ impl TreeEditDistance {
415416 }
416417
417418 /// Compute forest distance for Zhang-Shasha algorithm
419+ #[ allow( clippy:: too_many_arguments) ]
418420 fn compute_forest_distance (
419421 & self ,
420422 i : usize ,
@@ -541,17 +543,17 @@ impl TreeEditDistance {
541543
542544 if n > m {
543545 // More deletions
544- for i in m..n {
546+ for ( i , node ) in postorder1 . iter ( ) . enumerate ( ) . take ( n ) . skip ( m ) {
545547 operations. push ( EditOperation :: Delete {
546- node : format ! ( "{:?}" , postorder1 [ i ] ) ,
548+ node : format ! ( "{:?}" , node ) ,
547549 position : i,
548550 } ) ;
549551 }
550552 } else if m > n {
551553 // More insertions
552- for i in n..m {
554+ for ( i , node ) in postorder2 . iter ( ) . enumerate ( ) . take ( m ) . skip ( n ) {
553555 operations. push ( EditOperation :: Insert {
554- node : format ! ( "{:?}" , postorder2 [ i ] ) ,
556+ node : format ! ( "{:?}" , node ) ,
555557 position : i,
556558 } ) ;
557559 }
@@ -652,12 +654,18 @@ mod tests {
652654 use std:: collections:: HashMap ;
653655
654656 fn create_test_node ( node_type : NodeType , children : Vec < ASTNode > ) -> ASTNode {
657+ use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
658+ static COUNTER : AtomicUsize = AtomicUsize :: new ( 0 ) ;
659+ let id = COUNTER . fetch_add ( 1 , Ordering :: SeqCst ) ;
660+
655661 ASTNode {
662+ id : format ! ( "test_node_{}" , id) ,
656663 node_type,
657664 children,
658665 metadata : NodeMetadata {
659666 line : 1 ,
660667 column : 1 ,
668+ original_text : String :: new ( ) ,
661669 attributes : HashMap :: new ( ) ,
662670 } ,
663671 }
@@ -799,7 +807,7 @@ mod tests {
799807 let ted = TreeEditDistance :: with_defaults ( ) ;
800808
801809 let tree1 = create_leaf_node ( NodeType :: IfStatement ) ;
802- let tree2 = create_leaf_node ( NodeType :: WhileStatement ) ;
810+ let tree2 = create_leaf_node ( NodeType :: WhileLoop ) ;
803811
804812 let distance = ted. calculate_distance ( & tree1, & tree2) ;
805813 assert_eq ! ( distance, 0.5 ) ; // Reduced cost for similar statement types
@@ -844,7 +852,7 @@ mod tests {
844852 create_test_node(
845853 NodeType :: Block ,
846854 vec![ create_test_node(
847- NodeType :: WhileStatement ,
855+ NodeType :: WhileLoop ,
848856 vec![
849857 create_leaf_node( NodeType :: BinaryExpression ) ,
850858 create_leaf_node( NodeType :: Block ) ,
@@ -885,9 +893,11 @@ mod tests {
885893
886894 #[ test]
887895 fn test_pruning_heuristics ( ) {
888- let mut config = ZhangShashaConfig :: default ( ) ;
889- config. max_nodes = 2 ; // Very small limit to trigger pruning
890- config. enable_pruning = true ;
896+ let config = ZhangShashaConfig {
897+ max_nodes : 2 , // Very small limit to trigger pruning
898+ enable_pruning : true ,
899+ ..Default :: default ( )
900+ } ;
891901
892902 let ted = TreeEditDistance :: new ( config) ;
893903
@@ -897,7 +907,7 @@ mod tests {
897907 vec ! [
898908 create_leaf_node( NodeType :: Identifier ) ,
899909 create_leaf_node( NodeType :: Block ) ,
900- create_leaf_node( NodeType :: Statement ) ,
910+ create_leaf_node( NodeType :: ReturnStatement ) ,
901911 ] ,
902912 ) ;
903913
@@ -925,8 +935,8 @@ mod tests {
925935 create_test_node(
926936 NodeType :: Block ,
927937 vec![
928- create_leaf_node( NodeType :: Statement ) ,
929- create_leaf_node( NodeType :: Statement ) ,
938+ create_leaf_node( NodeType :: ReturnStatement ) ,
939+ create_leaf_node( NodeType :: ExpressionStatement ) ,
930940 ] ,
931941 ) ,
932942 ] ,
@@ -946,13 +956,13 @@ mod tests {
946956 NodeType :: Block ,
947957 vec![ create_test_node(
948958 NodeType :: IfStatement ,
949- vec![ create_leaf_node( NodeType :: Expression ) ] ,
959+ vec![ create_leaf_node( NodeType :: BinaryExpression ) ] ,
950960 ) ] ,
951961 ) ] ,
952962 ) ;
953963
954964 let depth = ted. calculate_depth ( & tree) ;
955- assert_eq ! ( depth, 4 ) ; // Function -> Block -> IfStatement -> Expression
965+ assert_eq ! ( depth, 4 ) ; // Function -> Block -> IfStatement -> BinaryExpression
956966 }
957967
958968 #[ test]
0 commit comments