@@ -9,7 +9,7 @@ use rustc_data_structures::fx::FxHashSet;
9
9
use rustc_errors:: { Applicability , DiagnosticBuilder } ;
10
10
use rustc_hir:: intravisit:: { self , NestedVisitorMap , Visitor } ;
11
11
use rustc_hir:: { Block , Expr , ExprKind , HirId } ;
12
- use rustc_lint:: { LateContext , LateLintPass } ;
12
+ use rustc_lint:: { LateContext , LateLintPass , LintContext } ;
13
13
use rustc_middle:: hir:: map:: Map ;
14
14
use rustc_session:: { declare_lint_pass, declare_tool_lint} ;
15
15
use rustc_span:: { source_map:: Span , symbol:: Symbol , BytePos } ;
@@ -432,10 +432,11 @@ fn emit_branches_sharing_code_lint(
432
432
let mut add_expr_note = false ;
433
433
434
434
// Construct suggestions
435
+ let sm = cx. sess ( ) . source_map ( ) ;
435
436
if start_stmts > 0 {
436
437
let block = blocks[ 0 ] ;
437
438
let span_start = first_line_of_span ( cx, if_expr. span ) . shrink_to_lo ( ) ;
438
- let span_end = block. stmts [ start_stmts - 1 ] . span . source_callsite ( ) ;
439
+ let span_end = sm . stmt_span ( block. stmts [ start_stmts - 1 ] . span , block . span ) ;
439
440
440
441
let cond_span = first_line_of_span ( cx, if_expr. span ) . until ( block. span ) ;
441
442
let cond_snippet = reindent_multiline ( snippet ( cx, cond_span, "_" ) , false , None ) ;
@@ -454,15 +455,14 @@ fn emit_branches_sharing_code_lint(
454
455
let span_end = block. span . shrink_to_hi ( ) ;
455
456
456
457
let moved_start = if end_stmts == 0 && block. expr . is_some ( ) {
457
- block. expr . unwrap ( ) . span
458
+ block. expr . unwrap ( ) . span . source_callsite ( )
458
459
} else {
459
- block. stmts [ block. stmts . len ( ) - end_stmts] . span
460
- }
461
- . source_callsite ( ) ;
462
- let moved_end = block
463
- . expr
464
- . map_or_else ( || block. stmts [ block. stmts . len ( ) - 1 ] . span , |expr| expr. span )
465
- . source_callsite ( ) ;
460
+ sm. stmt_span ( block. stmts [ block. stmts . len ( ) - end_stmts] . span , block. span )
461
+ } ;
462
+ let moved_end = block. expr . map_or_else (
463
+ || sm. stmt_span ( block. stmts [ block. stmts . len ( ) - 1 ] . span , block. span ) ,
464
+ |expr| expr. span . source_callsite ( ) ,
465
+ ) ;
466
466
467
467
let moved_span = moved_start. to ( moved_end) ;
468
468
let moved_snipped = reindent_multiline ( snippet ( cx, moved_span, "_" ) , true , None ) ;
0 commit comments