@@ -230,11 +230,11 @@ fn check_write_variants<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr,
230
230
"using `write!()` with a format string that ends in a \
231
231
newline, consider using `writeln!()` instead") ;
232
232
} ,
233
- "writeln" => if has_empty_arg( cx, span, fmtstr, fmtlen) {
233
+ "writeln" => if let Some ( final_span ) = has_empty_arg( cx, span, fmtstr, fmtlen) {
234
234
span_lint_and_sugg(
235
235
cx,
236
236
WRITE_WITH_NEWLINE ,
237
- span ,
237
+ final_span ,
238
238
"using `writeln!(v, \" \" )`" ,
239
239
"replace it with" ,
240
240
"writeln!(v)" . to_string( ) ,
@@ -295,11 +295,11 @@ fn check_print_variants<'a, 'tcx>(
295
295
newline, consider using `println!()` instead") ;
296
296
} ,
297
297
"println" =>
298
- if has_empty_arg( cx, span, fmtstr, fmtlen) {
298
+ if let Some ( final_span ) = has_empty_arg( cx, span, fmtstr, fmtlen) {
299
299
span_lint_and_sugg(
300
300
cx,
301
301
PRINT_WITH_NEWLINE ,
302
- span ,
302
+ final_span ,
303
303
"using `println!(\" \" )`" ,
304
304
"replace it with" ,
305
305
"println!()" . to_string( ) ,
@@ -390,7 +390,7 @@ fn has_newline_end(args: &HirVec<Expr>, fmtstr: InternedString, fmtlen: usize) -
390
390
}
391
391
392
392
/// Check for writeln!(v, "") / println!("")
393
- fn has_empty_arg < ' a , ' tcx > ( cx : & LateContext < ' a , ' tcx > , span : Span , fmtstr : InternedString , fmtlen : usize ) -> bool {
393
+ fn has_empty_arg < ' a , ' tcx > ( cx : & LateContext < ' a , ' tcx > , span : Span , fmtstr : InternedString , fmtlen : usize ) -> Option < Span > {
394
394
if_chain ! {
395
395
// check that the string is empty
396
396
if fmtlen == 1 ;
@@ -400,10 +400,13 @@ fn has_empty_arg<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, span: Span, fmtstr: Inter
400
400
if let Ok ( snippet) = cx. sess( ) . codemap( ) . span_to_snippet( span) ;
401
401
if snippet. contains( "\" \" " ) ;
402
402
then {
403
- return true
403
+ if snippet. ends_with( ';' ) {
404
+ return Some ( cx. sess( ) . codemap( ) . span_until_char( span, ';' ) ) ;
405
+ }
406
+ return Some ( span)
404
407
}
405
408
}
406
- false
409
+ None
407
410
}
408
411
409
412
/// Returns the slice of format string parts in an `Arguments::new_v1` call.
0 commit comments