Skip to content

Commit dc5a11b

Browse files
committed
Remove rest of line in unused_import if there is nothing else
1 parent f6ee4bf commit dc5a11b

File tree

5 files changed

+63
-2
lines changed

5 files changed

+63
-2
lines changed

compiler/rustc_resolve/src/check_unused.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,14 @@ impl Resolver<'_, '_> {
373373
}
374374
);
375375

376-
let fix_msg = if fixes.len() == 1 && fixes[0].0 == unused.item_span {
376+
let fix_msg = if let [(sp, _)] = fixes.as_mut_slice()
377+
&& *sp == unused.item_span
378+
{
379+
// If this is the only item on the line, remove the whole line
380+
if let Ok(line) = tcx.sess.source_map().span_extend_while(*sp, char::is_whitespace)
381+
{
382+
*sp = line;
383+
}
377384
"remove the whole `use` item"
378385
} else if ms.primary_spans().len() > 1 {
379386
"remove the unused imports"

tests/ui/imports/unused-import-issue-87973.fixed

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#![deny(unused_imports)]
33

44
// Check that attributes get removed too. See #87973.
5-
65
//~^ ERROR unused import
76

87
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// run-rustfix
2+
// check-pass
3+
4+
#![crate_type = "lib"]
5+
#![warn(unused_imports)]
6+
7+
//~^ WARN unused imports
8+
//~^ WARN unused import
9+
//~^ WARN unused import
10+
//~| WARN unused import
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// run-rustfix
2+
// check-pass
3+
4+
#![crate_type = "lib"]
5+
#![warn(unused_imports)]
6+
7+
use std::time::{Duration, Instant};
8+
//~^ WARN unused imports
9+
use std::time::SystemTime;
10+
//~^ WARN unused import
11+
use std::time::SystemTimeError;use std::time::TryFromFloatSecsError;
12+
//~^ WARN unused import
13+
//~| WARN unused import
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
warning: unused imports: `Duration`, `Instant`
2+
--> $DIR/import_remove_line.rs:7:17
3+
|
4+
LL | use std::time::{Duration, Instant};
5+
| ^^^^^^^^ ^^^^^^^
6+
|
7+
note: the lint level is defined here
8+
--> $DIR/import_remove_line.rs:5:9
9+
|
10+
LL | #![warn(unused_imports)]
11+
| ^^^^^^^^^^^^^^
12+
13+
warning: unused import: `std::time::SystemTime`
14+
--> $DIR/import_remove_line.rs:9:5
15+
|
16+
LL | use std::time::SystemTime;
17+
| ^^^^^^^^^^^^^^^^^^^^^
18+
19+
warning: unused import: `std::time::SystemTimeError`
20+
--> $DIR/import_remove_line.rs:11:5
21+
|
22+
LL | use std::time::SystemTimeError;use std::time::TryFromFloatSecsError;
23+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
24+
25+
warning: unused import: `std::time::TryFromFloatSecsError`
26+
--> $DIR/import_remove_line.rs:11:36
27+
|
28+
LL | use std::time::SystemTimeError;use std::time::TryFromFloatSecsError;
29+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30+
31+
warning: 4 warnings emitted
32+

0 commit comments

Comments
 (0)