aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/assists/src/handlers/extract_struct_from_enum_variant.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/crates/assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
index 38ecf5065..ef4dce477 100644
--- a/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
+++ b/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
@@ -135,8 +135,12 @@ fn insert_import(
135 variant_hir_name: &Name, 135 variant_hir_name: &Name,
136) -> Option<()> { 136) -> Option<()> {
137 let db = ctx.db(); 137 let db = ctx.db();
138 let mod_path = module.find_use_path(db, enum_module_def.clone()); 138 let mod_path = module.find_use_path_prefixed(
139 if let Some(mut mod_path) = mod_path.filter(|path| path.len() > 1) { 139 db,
140 enum_module_def.clone(),
141 ctx.config.insert_use.prefix_kind,
142 );
143 if let Some(mut mod_path) = mod_path.filter(|path| !path.is_ident()) {
140 mod_path.segments.pop(); 144 mod_path.segments.pop();
141 mod_path.segments.push(variant_hir_name.clone()); 145 mod_path.segments.push(variant_hir_name.clone());
142 let scope = ImportScope::find_insert_use_container(scope_node, ctx)?; 146 let scope = ImportScope::find_insert_use_container(scope_node, ctx)?;
@@ -323,7 +327,7 @@ fn another_fn() {
323 r#"use my_mod::my_other_mod::MyField; 327 r#"use my_mod::my_other_mod::MyField;
324 328
325mod my_mod { 329mod my_mod {
326 use my_other_mod::MyField; 330 use self::my_other_mod::MyField;
327 331
328 fn another_fn() { 332 fn another_fn() {
329 let m = my_other_mod::MyEnum::MyField(MyField(1, 1)); 333 let m = my_other_mod::MyEnum::MyField(MyField(1, 1));
@@ -402,7 +406,7 @@ enum E {
402mod foo; 406mod foo;
403 407
404//- /foo.rs 408//- /foo.rs
405use crate::E; 409use crate::{E, V};
406fn f() { 410fn f() {
407 let e = E::V(V(9, 2)); 411 let e = E::V(V(9, 2));
408} 412}
@@ -437,7 +441,7 @@ enum E {
437mod foo; 441mod foo;
438 442
439//- /foo.rs 443//- /foo.rs
440use crate::E; 444use crate::{E, V};
441fn f() { 445fn f() {
442 let e = E::V(V { i: 9, j: 2 }); 446 let e = E::V(V { i: 9, j: 2 });
443} 447}