diff options
| author | Young-Flash <dongyang@apache.org> | 2024-05-09 19:49:24 +0800 |
|---|---|---|
| committer | Young-Flash <dongyang@apache.org> | 2024-05-12 11:48:17 +0800 |
| commit | fafcc778557e5b601be3916395ce7a33337546a9 (patch) | |
| tree | 026e0c103fb48f07882927c20e577a15171e9117 | |
| parent | 48bcef3a32dcc87a22200d0cf2be87288a231b38 (diff) | |
fix: extract mod to file should respect path attribute
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_module_to_file.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_module_to_file.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_module_to_file.rs index 048906d9d9f..927b2f17168 100644 --- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_module_to_file.rs +++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/move_module_to_file.rs @@ -1,6 +1,7 @@ use std::iter; use ast::edit::IndentLevel; +use hir::HasAttrs; use ide_db::base_db::AnchoredPathBuf; use itertools::Itertools; use stdx::format_to; @@ -50,9 +51,17 @@ pub(crate) fn move_module_to_file(acc: &mut Assists, ctx: &AssistContext<'_>) -> |builder| { let path = { let mut buf = String::from("./"); - match parent_module.name(ctx.db()) { - Some(name) if !parent_module.is_mod_rs(ctx.db()) => { - format_to!(buf, "{}/", name.display(ctx.db())) + let db = ctx.db(); + match parent_module.name(db) { + Some(name) + if !parent_module.is_mod_rs(db) + && parent_module + .attrs(db) + .by_key("path") + .string_value_unescape() + .is_none() => + { + format_to!(buf, "{}/", name.display(db)) } _ => (), } |
