@@ -209,29 +209,29 @@ impl<'a> Printer<'a> {
209209            NodeKind :: Struct  {  members :  expected_children } 
210210            | NodeKind :: Terminal  {  members :  expected_children,  .. }  => { 
211211                self . print_internal_struct ( 
212-                     children , 
212+                     syntax_node . get_children ( self . db ) , 
213213                    & expected_children, 
214214                    indent. as_str ( ) , 
215215                    under_top_level, 
216216                ) ; 
217217            } 
218218            NodeKind :: List  {  .. }  => { 
219-                 for  ( i,  child)  in  children . iter ( ) . enumerate ( )  { 
219+                 for  ( i,  child)  in  syntax_node . get_children ( self . db ) . enumerate ( )  { 
220220                    self . print_tree ( 
221221                        format ! ( "child #{i}" ) . as_str ( ) , 
222-                         child, 
222+                         & child, 
223223                        indent. as_str ( ) , 
224224                        i == num_children - 1 , 
225225                        under_top_level, 
226226                    ) ; 
227227                } 
228228            } 
229229            NodeKind :: SeparatedList  {  .. }  => { 
230-                 for  ( i,  child)  in  children . iter ( ) . enumerate ( )  { 
230+                 for  ( i,  child)  in  syntax_node . get_children ( self . db ) . enumerate ( )  { 
231231                    let  description = if  i. is_multiple_of ( 2 )  {  "item"  }  else  {  "separator"  } ; 
232232                    self . print_tree ( 
233233                        format ! ( "{description} #{}" ,  i / 2 ) . as_str ( ) , 
234-                         child, 
234+                         & child, 
235235                        indent. as_str ( ) , 
236236                        i == num_children - 1 , 
237237                        under_top_level, 
@@ -244,20 +244,20 @@ impl<'a> Printer<'a> {
244244
245245    /// Assumes children and expected children are non-empty of the same length. 
246246     /// `under_top_level`: whether we are in a subtree of the top-level kind. 
247-      fn  print_internal_struct ( 
247+      fn  print_internal_struct < ' b > ( 
248248        & mut  self , 
249-         children :  & [ SyntaxNode < ' _ > ] , 
249+         children :  impl   ExactSizeIterator < Item  =  SyntaxNode < ' b > > , 
250250        expected_children :  & [ Member ] , 
251251        indent :  & str , 
252252        under_top_level :  bool , 
253253    )  { 
254-         let  ( last_child,  non_last_children)  = children. split_last ( ) . unwrap ( ) ; 
255-         let  ( last_expected_child,  non_last_expected_children)  =
256-             expected_children. split_last ( ) . unwrap ( ) ; 
257-         for  ( child,  expected_child)  in  zip_eq ( non_last_children,  non_last_expected_children)  { 
258-             self . print_tree ( & expected_child. name ,  child,  indent,  false ,  under_top_level) ; 
254+         let  mut  iter = zip_eq ( children,  expected_children) ; 
255+         for  _ in  1 ..iter. len ( )  { 
256+             let  ( child,  expected_child)  = iter. next ( ) . unwrap ( ) ; 
257+             self . print_tree ( & expected_child. name ,  & child,  indent,  false ,  under_top_level) ; 
259258        } 
260-         self . print_tree ( & last_expected_child. name ,  last_child,  indent,  true ,  under_top_level) ; 
259+         let  ( last_child,  last_expected_child)  = iter. next ( ) . unwrap ( ) ; 
260+         self . print_tree ( & last_expected_child. name ,  & last_child,  indent,  true ,  under_top_level) ; 
261261    } 
262262
263263    fn  get_node_kind ( & self ,  name :  String )  -> NodeKind  { 
0 commit comments