@@ -240,7 +240,8 @@ impl<'a> Formatter<'a> {
240240 || self
241241 . next_non_whitespace_token ( 1 )
242242 . is_some_and ( |t| t. kind != TokenKind :: OpenParen )
243- || span_info. arguments != 0 )
243+ || span_info. blocks != 1
244+ || self . options . max_inline_block < span_info. max_inner_span )
244245 {
245246 self . indentation . increase_top_level ( span_info) ;
246247 self . add_new_line ( query) ;
@@ -576,13 +577,25 @@ impl<'a> Formatter<'a> {
576577 let mut block_level = self . block_level ;
577578 let mut full_span = 0 ;
578579 let mut arguments = 0 ;
580+ let mut blocks = 0 ;
581+ let mut max_nesting = 0 ;
582+ let mut max_inner_span = 0 ;
583+ let mut inner_span = 0 ;
579584
580585 for token in self . tokens [ self . index ..] . iter ( ) . skip ( 1 ) {
581586 match token. kind {
582587 TokenKind :: OpenParen => {
588+ if block_level == self . block_level {
589+ blocks += 1
590+ }
583591 block_level += 1 ;
584592 }
585593 TokenKind :: CloseParen => {
594+ max_nesting = max_nesting. max ( block_level) ;
595+ max_inner_span = max_inner_span. max ( inner_span) ;
596+ if block_level == self . block_level . saturating_add ( 1 ) {
597+ inner_span = 0 ;
598+ }
586599 block_level = block_level. saturating_sub ( 1 ) ;
587600 if block_level < self . block_level {
588601 break ;
@@ -601,6 +614,7 @@ impl<'a> Formatter<'a> {
601614 }
602615 TokenKind :: Operator if token. value == "," && block_level == self . block_level => {
603616 arguments += 1 ;
617+ blocks += 1 ;
604618 }
605619 _ => { }
606620 }
@@ -611,6 +625,9 @@ impl<'a> Formatter<'a> {
611625 SpanInfo {
612626 full_span,
613627 arguments,
628+ blocks,
629+ max_nesting,
630+ max_inner_span,
614631 }
615632 }
616633
0 commit comments