feat: Add pub(crate) mod option for unlinked files

This commit is contained in:
roifewu 2025-04-10 02:14:59 +08:00
parent c5882732e6
commit 7fde3fcd2e

View file

@ -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,
),
])
}
@ -306,6 +319,11 @@ fn f() {}
r#"
pub mod foo;
fn f() {}
"#,
r#"
pub(crate) mod foo;
fn f() {}
"#,
],