Skip to content

Commit

Permalink
Merge #7730
Browse files Browse the repository at this point in the history
7730: Fix #7712 retain visibility extracting mod to file r=lnicola a=mattyhall



Co-authored-by: Matt Hall <matthew@quickbeam.me.uk>
  • Loading branch information
bors[bot] and mattyhall committed Feb 20, 2021
2 parents de67469 + 8497b5b commit 364d572
Showing 1 changed file with 45 additions and 2 deletions.
47 changes: 45 additions & 2 deletions crates/assists/src/handlers/move_module_to_file.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use ast::edit::IndentLevel;
use ast::{edit::IndentLevel, VisibilityOwner};
use ide_db::base_db::AnchoredPathBuf;
use stdx::format_to;
use syntax::{
ast::{self, edit::AstNodeEdit, NameOwner},
AstNode, TextRange,
Expand Down Expand Up @@ -59,7 +60,13 @@ pub(crate) fn move_module_to_file(acc: &mut Assists, ctx: &AssistContext) -> Opt
items
};

builder.replace(module_ast.syntax().text_range(), format!("mod {};", module_name));
let mut buf = String::new();
if let Some(v) = module_ast.visibility() {
format_to!(buf, "{} ", v);
}
format_to!(buf, "mod {};", module_name);

builder.replace(module_ast.syntax().text_range(), buf);

let dst = AnchoredPathBuf { anchor: ctx.frange.file_id, path };
builder.create_file(dst, contents);
Expand Down Expand Up @@ -137,6 +144,42 @@ fn f() {}
);
}

#[test]
fn extract_public() {
check_assist(
move_module_to_file,
r#"
pub mod $0tests {
#[test] fn t() {}
}
"#,
r#"
//- /main.rs
pub mod tests;
//- /tests.rs
#[test] fn t() {}
"#,
);
}

#[test]
fn extract_public_crate() {
check_assist(
move_module_to_file,
r#"
pub(crate) mod $0tests {
#[test] fn t() {}
}
"#,
r#"
//- /main.rs
pub(crate) mod tests;
//- /tests.rs
#[test] fn t() {}
"#,
);
}

#[test]
fn available_before_curly() {
mark::check!(available_before_curly);
Expand Down

0 comments on commit 364d572

Please sign in to comment.