diff options
| author | roifewu <roifewu@gmail.com> | 2025-04-10 02:14:59 +0800 |
|---|---|---|
| committer | roifewu <roifewu@gmail.com> | 2025-04-15 13:12:03 +0800 |
| commit | 1411fbd6392b246ccaf945e57280cfd4b17f1cf1 (patch) | |
| tree | 19bca1620818eebbc771d1069da62c1fb9690109 /src/tools/rust-analyzer | |
| parent | 50f3e01399ca15ed582e62c040a21ad4aee494c8 (diff) | |
| download | rust-1411fbd6392b246ccaf945e57280cfd4b17f1cf1.tar.gz rust-1411fbd6392b246ccaf945e57280cfd4b17f1cf1.zip | |
feat: Add `pub(crate) mod` option for unlinked files
Diffstat (limited to 'src/tools/rust-analyzer')
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs index 2602aa011f0..6c0c26161ed 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unlinked_file.rs @@ -203,9 +203,11 @@ fn make_fixes( let mod_decl = format!("mod {new_mod_name};"); let pub_mod_decl = format!("pub mod {new_mod_name};"); + let pub_crate_mod_decl = format!("pub(crate) mod {new_mod_name};"); let mut mod_decl_builder = TextEdit::builder(); let mut pub_mod_decl_builder = TextEdit::builder(); + let mut pub_crate_mod_decl_builder = TextEdit::builder(); let mut items = match &source { ModuleSource::SourceFile(it) => it.items(), @@ -234,6 +236,7 @@ fn make_fixes( let indent = IndentLevel::from_node(last.syntax()); mod_decl_builder.insert(offset, format!("\n{indent}{mod_decl}")); pub_mod_decl_builder.insert(offset, format!("\n{indent}{pub_mod_decl}")); + pub_crate_mod_decl_builder.insert(offset, format!("\n{indent}{pub_crate_mod_decl}")); } None => { // Prepend before the first item in the file. @@ -244,6 +247,8 @@ fn make_fixes( let indent = IndentLevel::from_node(first.syntax()); mod_decl_builder.insert(offset, format!("{mod_decl}\n\n{indent}")); pub_mod_decl_builder.insert(offset, format!("{pub_mod_decl}\n\n{indent}")); + pub_crate_mod_decl_builder + .insert(offset, format!("{pub_crate_mod_decl}\n\n{indent}")); } None => { // No items in the file, so just append at the end. @@ -261,6 +266,8 @@ fn make_fixes( }; mod_decl_builder.insert(offset, format!("{indent}{mod_decl}\n")); pub_mod_decl_builder.insert(offset, format!("{indent}{pub_mod_decl}\n")); + pub_crate_mod_decl_builder + .insert(offset, format!("{indent}{pub_crate_mod_decl}\n")); } } } @@ -279,6 +286,12 @@ fn make_fixes( SourceChange::from_text_edit(parent_file_id, pub_mod_decl_builder.finish()), trigger_range, ), + fix( + "add_pub_crate_mod_declaration", + &format!("Insert `{pub_crate_mod_decl}`"), + SourceChange::from_text_edit(parent_file_id, pub_crate_mod_decl_builder.finish()), + trigger_range, + ), ]) } @@ -308,6 +321,11 @@ pub mod foo; fn f() {} "#, + r#" +pub(crate) mod foo; + +fn f() {} +"#, ], ); } |
