Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/remove_unused_imports.rs')
-rw-r--r--crates/ide-assists/src/handlers/remove_unused_imports.rs184
1 files changed, 181 insertions, 3 deletions
diff --git a/crates/ide-assists/src/handlers/remove_unused_imports.rs b/crates/ide-assists/src/handlers/remove_unused_imports.rs
index ee44064e7c..859ed1476c 100644
--- a/crates/ide-assists/src/handlers/remove_unused_imports.rs
+++ b/crates/ide-assists/src/handlers/remove_unused_imports.rs
@@ -423,7 +423,7 @@ mod z {
struct X();
struct Y();
mod z {
- use super::{X};
+ use super::X;
fn w() {
let x = X();
@@ -495,7 +495,7 @@ struct X();
mod y {
struct Y();
mod z {
- use crate::{X};
+ use crate::X;
fn f() {
let x = X();
}
@@ -526,7 +526,7 @@ struct X();
mod y {
struct Y();
mod z {
- use crate::{y::Y};
+ use crate::y::Y;
fn f() {
let y = Y();
}
@@ -537,6 +537,184 @@ mod y {
}
#[test]
+ fn remove_unused_auto_remove_brace_nested() {
+ check_assist(
+ remove_unused_imports,
+ r#"
+mod a {
+ pub struct A();
+}
+mod b {
+ struct F();
+ mod c {
+ $0use {{super::{{
+ {d::{{{{{{{S, U}}}}}}}},
+ {{{{e::{H, L, {{{R}}}}}}}},
+ F, super::a::A
+ }}}};$0
+ fn f() {
+ let f = F();
+ let l = L();
+ let a = A();
+ let s = S();
+ let h = H();
+ }
+ }
+
+ mod d {
+ pub struct S();
+ pub struct U();
+ }
+
+ mod e {
+ pub struct H();
+ pub struct L();
+ pub struct R();
+ }
+}
+"#,
+ r#"
+mod a {
+ pub struct A();
+}
+mod b {
+ struct F();
+ mod c {
+ use super::{
+ d::S,
+ e::{H, L},
+ F, super::a::A
+ };
+ fn f() {
+ let f = F();
+ let l = L();
+ let a = A();
+ let s = S();
+ let h = H();
+ }
+ }
+
+ mod d {
+ pub struct S();
+ pub struct U();
+ }
+
+ mod e {
+ pub struct H();
+ pub struct L();
+ pub struct R();
+ }
+}
+"#,
+ );
+ }
+
+ #[test]
+ fn remove_comma_after_auto_remove_brace() {
+ check_assist(
+ remove_unused_imports,
+ r#"
+mod m {
+ pub mod x {
+ pub struct A;
+ pub struct B;
+ }
+ pub mod y {
+ pub struct C;
+ }
+}
+
+$0use m::{
+ x::{A, B},
+ y::C,
+};$0
+
+fn main() {
+ B;
+}
+"#,
+ r#"
+mod m {
+ pub mod x {
+ pub struct A;
+ pub struct B;
+ }
+ pub mod y {
+ pub struct C;
+ }
+}
+
+use m::
+ x::B
+;
+
+fn main() {
+ B;
+}
+"#,
+ );
+ check_assist(
+ remove_unused_imports,
+ r#"
+mod m {
+ pub mod x {
+ pub struct A;
+ pub struct B;
+ }
+ pub mod y {
+ pub struct C;
+ pub struct D;
+ }
+ pub mod z {
+ pub struct E;
+ pub struct F;
+ }
+}
+
+$0use m::{
+ x::{A, B},
+ y::{C, D,},
+ z::{E, F},
+};$0
+
+fn main() {
+ B;
+ C;
+ F;
+}
+"#,
+ r#"
+mod m {
+ pub mod x {
+ pub struct A;
+ pub struct B;
+ }
+ pub mod y {
+ pub struct C;
+ pub struct D;
+ }
+ pub mod z {
+ pub struct E;
+ pub struct F;
+ }
+}
+
+use m::{
+ x::B,
+ y::C,
+ z::F,
+};
+
+fn main() {
+ B;
+ C;
+ F;
+}
+"#,
+ );
+ }
+
+ #[test]
fn remove_nested_all_unused() {
check_assist(
remove_unused_imports,