diff options
-rw-r--r-- | crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs | 21 | ||||
-rw-r--r-- | crates/ra_assists/src/lib.rs | 2 | ||||
-rw-r--r-- | crates/ra_assists/src/tests/generated.rs | 15 |
3 files changed, 28 insertions, 10 deletions
diff --git a/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs index a36587633..2b1951aff 100644 --- a/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs | |||
@@ -18,9 +18,9 @@ use ra_db::FileId; | |||
18 | use ra_fmt::leading_indent; | 18 | use ra_fmt::leading_indent; |
19 | use rustc_hash::FxHashSet; | 19 | use rustc_hash::FxHashSet; |
20 | 20 | ||
21 | // Assist extract_struct_from_enum | 21 | // Assist: extract_struct_from_enum_variant |
22 | // | 22 | // |
23 | // Extracts a struct from enum variant | 23 | // Extracts a struct from enum variant. |
24 | // | 24 | // |
25 | // ``` | 25 | // ``` |
26 | // enum A { <|>One(u32, u32) } | 26 | // enum A { <|>One(u32, u32) } |
@@ -29,9 +29,12 @@ use rustc_hash::FxHashSet; | |||
29 | // ``` | 29 | // ``` |
30 | // struct One(pub u32, pub u32); | 30 | // struct One(pub u32, pub u32); |
31 | // | 31 | // |
32 | // enum A { One(One) }" | 32 | // enum A { One(One) } |
33 | // ``` | 33 | // ``` |
34 | pub(crate) fn extract_struct_from_enum(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { | 34 | pub(crate) fn extract_struct_from_enum_variant( |
35 | acc: &mut Assists, | ||
36 | ctx: &AssistContext, | ||
37 | ) -> Option<()> { | ||
35 | let variant = ctx.find_node_at_offset::<ast::EnumVariant>()?; | 38 | let variant = ctx.find_node_at_offset::<ast::EnumVariant>()?; |
36 | let field_list = match variant.kind() { | 39 | let field_list = match variant.kind() { |
37 | ast::StructKind::Tuple(field_list) => field_list, | 40 | ast::StructKind::Tuple(field_list) => field_list, |
@@ -221,7 +224,7 @@ mod tests { | |||
221 | #[test] | 224 | #[test] |
222 | fn test_extract_struct_several_fields() { | 225 | fn test_extract_struct_several_fields() { |
223 | check_assist( | 226 | check_assist( |
224 | extract_struct_from_enum, | 227 | extract_struct_from_enum_variant, |
225 | "enum A { <|>One(u32, u32) }", | 228 | "enum A { <|>One(u32, u32) }", |
226 | r#"struct One(pub u32, pub u32); | 229 | r#"struct One(pub u32, pub u32); |
227 | 230 | ||
@@ -232,7 +235,7 @@ enum A { One(One) }"#, | |||
232 | #[test] | 235 | #[test] |
233 | fn test_extract_struct_one_field() { | 236 | fn test_extract_struct_one_field() { |
234 | check_assist( | 237 | check_assist( |
235 | extract_struct_from_enum, | 238 | extract_struct_from_enum_variant, |
236 | "enum A { <|>One(u32) }", | 239 | "enum A { <|>One(u32) }", |
237 | r#"struct One(pub u32); | 240 | r#"struct One(pub u32); |
238 | 241 | ||
@@ -243,7 +246,7 @@ enum A { One(One) }"#, | |||
243 | #[test] | 246 | #[test] |
244 | fn test_extract_struct_pub_visibility() { | 247 | fn test_extract_struct_pub_visibility() { |
245 | check_assist( | 248 | check_assist( |
246 | extract_struct_from_enum, | 249 | extract_struct_from_enum_variant, |
247 | "pub enum A { <|>One(u32, u32) }", | 250 | "pub enum A { <|>One(u32, u32) }", |
248 | r#"pub struct One(pub u32, pub u32); | 251 | r#"pub struct One(pub u32, pub u32); |
249 | 252 | ||
@@ -254,7 +257,7 @@ pub enum A { One(One) }"#, | |||
254 | #[test] | 257 | #[test] |
255 | fn test_extract_struct_with_complex_imports() { | 258 | fn test_extract_struct_with_complex_imports() { |
256 | check_assist( | 259 | check_assist( |
257 | extract_struct_from_enum, | 260 | extract_struct_from_enum_variant, |
258 | r#"mod my_mod { | 261 | r#"mod my_mod { |
259 | fn another_fn() { | 262 | fn another_fn() { |
260 | let m = my_other_mod::MyEnum::MyField(1, 1); | 263 | let m = my_other_mod::MyEnum::MyField(1, 1); |
@@ -305,7 +308,7 @@ fn another_fn() { | |||
305 | fn check_not_applicable(ra_fixture: &str) { | 308 | fn check_not_applicable(ra_fixture: &str) { |
306 | let fixture = | 309 | let fixture = |
307 | format!("//- main.rs crate:main deps:core\n{}\n{}", ra_fixture, FamousDefs::FIXTURE); | 310 | format!("//- main.rs crate:main deps:core\n{}\n{}", ra_fixture, FamousDefs::FIXTURE); |
308 | check_assist_not_applicable(extract_struct_from_enum, &fixture) | 311 | check_assist_not_applicable(extract_struct_from_enum_variant, &fixture) |
309 | } | 312 | } |
310 | 313 | ||
311 | #[test] | 314 | #[test] |
diff --git a/crates/ra_assists/src/lib.rs b/crates/ra_assists/src/lib.rs index 88ce9b62e..185428bd5 100644 --- a/crates/ra_assists/src/lib.rs +++ b/crates/ra_assists/src/lib.rs | |||
@@ -156,7 +156,7 @@ mod handlers { | |||
156 | change_return_type_to_result::change_return_type_to_result, | 156 | change_return_type_to_result::change_return_type_to_result, |
157 | change_visibility::change_visibility, | 157 | change_visibility::change_visibility, |
158 | early_return::convert_to_guarded_return, | 158 | early_return::convert_to_guarded_return, |
159 | extract_struct_from_enum_variant::extract_struct_from_enum, | 159 | extract_struct_from_enum_variant::extract_struct_from_enum_variant, |
160 | fill_match_arms::fill_match_arms, | 160 | fill_match_arms::fill_match_arms, |
161 | fix_visibility::fix_visibility, | 161 | fix_visibility::fix_visibility, |
162 | flip_binexpr::flip_binexpr, | 162 | flip_binexpr::flip_binexpr, |
diff --git a/crates/ra_assists/src/tests/generated.rs b/crates/ra_assists/src/tests/generated.rs index d17504529..40a223727 100644 --- a/crates/ra_assists/src/tests/generated.rs +++ b/crates/ra_assists/src/tests/generated.rs | |||
@@ -338,6 +338,21 @@ fn main() { | |||
338 | } | 338 | } |
339 | 339 | ||
340 | #[test] | 340 | #[test] |
341 | fn doctest_extract_struct_from_enum_variant() { | ||
342 | check_doc_test( | ||
343 | "extract_struct_from_enum_variant", | ||
344 | r#####" | ||
345 | enum A { <|>One(u32, u32) } | ||
346 | "#####, | ||
347 | r#####" | ||
348 | struct One(pub u32, pub u32); | ||
349 | |||
350 | enum A { One(One) } | ||
351 | "#####, | ||
352 | ) | ||
353 | } | ||
354 | |||
355 | #[test] | ||
341 | fn doctest_fill_match_arms() { | 356 | fn doctest_fill_match_arms() { |
342 | check_doc_test( | 357 | check_doc_test( |
343 | "fill_match_arms", | 358 | "fill_match_arms", |