@@ -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