@@ -3,7 +3,7 @@ use std::cmp::min;
33
44use itertools:: Itertools ;
55use syntax:: parse:: token:: { DelimToken , LitKind } ;
6- use syntax:: source_map:: { BytePos , SourceMap , Span } ;
6+ use syntax:: source_map:: { BytePos , Span } ;
77use syntax:: { ast, ptr} ;
88
99use crate :: chains:: rewrite_chain;
@@ -430,7 +430,7 @@ fn rewrite_empty_block(
430430 return None ;
431431 }
432432
433- if !block_contains_comment ( block , context . source_map ) && shape. width >= 2 {
433+ if !block_contains_comment ( context , block ) && shape. width >= 2 {
434434 return Some ( format ! ( "{}{}{{}}" , prefix, label_str) ) ;
435435 }
436436
@@ -487,7 +487,7 @@ fn rewrite_single_line_block(
487487 label : Option < ast:: Label > ,
488488 shape : Shape ,
489489) -> Option < String > {
490- if is_simple_block ( block , attrs , context . source_map ) {
490+ if is_simple_block ( context , block , attrs ) {
491491 let expr_shape = shape. offset_left ( last_line_width ( prefix) ) ?;
492492 let expr_str = block. stmts [ 0 ] . rewrite ( context, expr_shape) ?;
493493 let label_str = rewrite_label ( label) ;
@@ -750,8 +750,8 @@ impl<'a> ControlFlow<'a> {
750750 let fixed_cost = self . keyword . len ( ) + " { } else { }" . len ( ) ;
751751
752752 if let ast:: ExprKind :: Block ( ref else_node, _) = else_block. kind {
753- if !is_simple_block ( self . block , None , context . source_map )
754- || !is_simple_block ( else_node , None , context . source_map )
753+ if !is_simple_block ( context , self . block , None )
754+ || !is_simple_block ( context , else_node , None )
755755 || pat_expr_str. contains ( '\n' )
756756 {
757757 return None ;
@@ -1134,47 +1134,46 @@ fn extract_comment(span: Span, context: &RewriteContext<'_>, shape: Shape) -> Op
11341134 }
11351135}
11361136
1137- pub ( crate ) fn block_contains_comment ( block : & ast:: Block , source_map : & SourceMap ) -> bool {
1138- let snippet = source_map. span_to_snippet ( block. span ) . unwrap ( ) ;
1139- contains_comment ( & snippet)
1137+ pub ( crate ) fn block_contains_comment ( context : & RewriteContext < ' _ > , block : & ast:: Block ) -> bool {
1138+ contains_comment ( context. snippet ( block. span ) )
11401139}
11411140
11421141// Checks that a block contains no statements, an expression and no comments or
11431142// attributes.
11441143// FIXME: incorrectly returns false when comment is contained completely within
11451144// the expression.
11461145pub ( crate ) fn is_simple_block (
1146+ context : & RewriteContext < ' _ > ,
11471147 block : & ast:: Block ,
11481148 attrs : Option < & [ ast:: Attribute ] > ,
1149- source_map : & SourceMap ,
11501149) -> bool {
11511150 ( block. stmts . len ( ) == 1
11521151 && stmt_is_expr ( & block. stmts [ 0 ] )
1153- && !block_contains_comment ( block , source_map )
1152+ && !block_contains_comment ( context , block )
11541153 && attrs. map_or ( true , |a| a. is_empty ( ) ) )
11551154}
11561155
11571156/// Checks whether a block contains at most one statement or expression, and no
11581157/// comments or attributes.
11591158pub ( crate ) fn is_simple_block_stmt (
1159+ context : & RewriteContext < ' _ > ,
11601160 block : & ast:: Block ,
11611161 attrs : Option < & [ ast:: Attribute ] > ,
1162- source_map : & SourceMap ,
11631162) -> bool {
11641163 block. stmts . len ( ) <= 1
1165- && !block_contains_comment ( block , source_map )
1164+ && !block_contains_comment ( context , block )
11661165 && attrs. map_or ( true , |a| a. is_empty ( ) )
11671166}
11681167
11691168/// Checks whether a block contains no statements, expressions, comments, or
11701169/// inner attributes.
11711170pub ( crate ) fn is_empty_block (
1171+ context : & RewriteContext < ' _ > ,
11721172 block : & ast:: Block ,
11731173 attrs : Option < & [ ast:: Attribute ] > ,
1174- source_map : & SourceMap ,
11751174) -> bool {
11761175 block. stmts . is_empty ( )
1177- && !block_contains_comment ( block , source_map )
1176+ && !block_contains_comment ( context , block )
11781177 && attrs. map_or ( true , |a| inner_attributes ( a) . is_empty ( ) )
11791178}
11801179
0 commit comments