aboutsummaryrefslogtreecommitdiff
path: root/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2020-09-03 13:22:22 +0100
committerLukas Wirth <[email protected]>2020-09-03 17:36:08 +0100
commitc1925df7fc91a171925ecb59b9f1895ee59ce72f (patch)
tree475182f8b2f91a200cfa1662f7407242b6220cb6 /crates/assists/src/handlers/extract_struct_from_enum_variant.rs
parent952f3856822d471cf5062e82f544c901c385f3ae (diff)
Replace insert_use_statement with the new insert_use
Diffstat (limited to 'crates/assists/src/handlers/extract_struct_from_enum_variant.rs')
-rw-r--r--crates/assists/src/handlers/extract_struct_from_enum_variant.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/crates/assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
index 8ac20210a..d9c50f25f 100644
--- a/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
+++ b/crates/assists/src/handlers/extract_struct_from_enum_variant.rs
@@ -10,9 +10,12 @@ use syntax::{
10}; 10};
11 11
12use crate::{ 12use crate::{
13 assist_context::AssistBuilder, utils::insert_use_statement, AssistContext, AssistId, 13 assist_context::AssistBuilder,
14 AssistKind, Assists, 14 utils::{insert_use, MergeBehaviour},
15 AssistContext, AssistId, AssistKind, Assists,
15}; 16};
17use ast::make;
18use insert_use::find_insert_use_container;
16 19
17// Assist: extract_struct_from_enum_variant 20// Assist: extract_struct_from_enum_variant
18// 21//
@@ -107,12 +110,15 @@ fn insert_import(
107 if let Some(mut mod_path) = mod_path { 110 if let Some(mut mod_path) = mod_path {
108 mod_path.segments.pop(); 111 mod_path.segments.pop();
109 mod_path.segments.push(variant_hir_name.clone()); 112 mod_path.segments.push(variant_hir_name.clone());
110 insert_use_statement( 113 let container = find_insert_use_container(path.syntax(), ctx)?;
111 path.syntax(), 114 let syntax = container.either(|l| l.syntax().clone(), |r| r.syntax().clone());
112 &mod_path.to_string(), 115
113 ctx, 116 let new_syntax = insert_use(
114 builder.text_edit_builder(), 117 &syntax,
118 make::path_from_text(&mod_path.to_string()),
119 Some(MergeBehaviour::Full),
115 ); 120 );
121 builder.replace(syntax.text_range(), new_syntax.to_string())
116 } 122 }
117 Some(()) 123 Some(())
118} 124}