Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/toggle_ignore.rs')
-rw-r--r--crates/ide-assists/src/handlers/toggle_ignore.rs35
1 files changed, 23 insertions, 12 deletions
diff --git a/crates/ide-assists/src/handlers/toggle_ignore.rs b/crates/ide-assists/src/handlers/toggle_ignore.rs
index 386625b86b..a088fb178d 100644
--- a/crates/ide-assists/src/handlers/toggle_ignore.rs
+++ b/crates/ide-assists/src/handlers/toggle_ignore.rs
@@ -1,6 +1,6 @@
use syntax::{
AstNode, AstToken,
- ast::{self, HasAttrs},
+ ast::{self, HasAttrs, edit::AstNodeEdit},
};
use crate::{AssistContext, AssistId, Assists, utils::test_related_attribute_syn};
@@ -27,13 +27,16 @@ pub(crate) fn toggle_ignore(acc: &mut Assists, ctx: &AssistContext<'_>) -> Optio
let attr: ast::Attr = ctx.find_node_at_offset()?;
let func = attr.syntax().parent().and_then(ast::Fn::cast)?;
let attr = test_related_attribute_syn(&func)?;
+ let indent = attr.indent_level();
match has_ignore_attribute(&func) {
None => acc.add(
AssistId::refactor("toggle_ignore"),
"Ignore this test",
attr.syntax().text_range(),
- |builder| builder.insert(attr.syntax().text_range().end(), "\n#[ignore]"),
+ |builder| {
+ builder.insert(attr.syntax().text_range().end(), format!("\n{indent}#[ignore]"))
+ },
),
Some(ignore_attr) => acc.add(
AssistId::refactor("toggle_ignore"),
@@ -69,13 +72,17 @@ mod tests {
check_assist(
toggle_ignore,
r#"
- #[test$0]
- fn test() {}
+ mod indent {
+ #[test$0]
+ fn test() {}
+ }
"#,
r#"
- #[test]
- #[ignore]
- fn test() {}
+ mod indent {
+ #[test]
+ #[ignore]
+ fn test() {}
+ }
"#,
)
}
@@ -85,13 +92,17 @@ mod tests {
check_assist(
toggle_ignore,
r#"
- #[test$0]
- #[ignore]
- fn test() {}
+ mod indent {
+ #[test$0]
+ #[ignore]
+ fn test() {}
+ }
"#,
r#"
- #[test]
- fn test() {}
+ mod indent {
+ #[test]
+ fn test() {}
+ }
"#,
)
}