diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/assists/src/handlers/expand_glob_import.rs | 30 | ||||
-rw-r--r-- | crates/syntax/src/ast/make.rs | 1 |
2 files changed, 18 insertions, 13 deletions
diff --git a/crates/assists/src/handlers/expand_glob_import.rs b/crates/assists/src/handlers/expand_glob_import.rs index b39d040f6..e14ac7f65 100644 --- a/crates/assists/src/handlers/expand_glob_import.rs +++ b/crates/assists/src/handlers/expand_glob_import.rs | |||
@@ -4,7 +4,11 @@ use ide_db::{ | |||
4 | defs::{classify_name_ref, Definition, NameRefClass}, | 4 | defs::{classify_name_ref, Definition, NameRefClass}, |
5 | search::SearchScope, | 5 | search::SearchScope, |
6 | }; | 6 | }; |
7 | use syntax::{algo, ast, AstNode, Direction, SyntaxNode, SyntaxToken, T}; | 7 | use syntax::{ |
8 | algo, | ||
9 | ast::{self, make}, | ||
10 | AstNode, Direction, SyntaxNode, SyntaxToken, T, | ||
11 | }; | ||
8 | 12 | ||
9 | use crate::{ | 13 | use crate::{ |
10 | assist_context::{AssistBuilder, AssistContext, Assists}, | 14 | assist_context::{AssistBuilder, AssistContext, Assists}, |
@@ -249,7 +253,10 @@ fn replace_ast( | |||
249 | 253 | ||
250 | let new_use_trees: Vec<ast::UseTree> = names_to_import | 254 | let new_use_trees: Vec<ast::UseTree> = names_to_import |
251 | .iter() | 255 | .iter() |
252 | .map(|n| ast::make::use_tree(ast::make::path_from_text(&n.to_string()), None, None, false)) | 256 | .map(|n| { |
257 | let path = make::path_unqualified(make::path_segment(make::name_ref(&n.to_string()))); | ||
258 | make::use_tree(path, None, None, false) | ||
259 | }) | ||
253 | .collect(); | 260 | .collect(); |
254 | 261 | ||
255 | let use_trees = [&existing_use_trees[..], &new_use_trees[..]].concat(); | 262 | let use_trees = [&existing_use_trees[..], &new_use_trees[..]].concat(); |
@@ -257,8 +264,8 @@ fn replace_ast( | |||
257 | match use_trees.as_slice() { | 264 | match use_trees.as_slice() { |
258 | [name] => { | 265 | [name] => { |
259 | if let Some(end_path) = name.path() { | 266 | if let Some(end_path) = name.path() { |
260 | let replacement = ast::make::use_tree( | 267 | let replacement = make::use_tree( |
261 | ast::make::path_from_text(&format!("{}::{}", path, end_path)), | 268 | make::path_from_text(&format!("{}::{}", path, end_path)), |
262 | None, | 269 | None, |
263 | None, | 270 | None, |
264 | false, | 271 | false, |
@@ -273,15 +280,12 @@ fn replace_ast( | |||
273 | } | 280 | } |
274 | names => { | 281 | names => { |
275 | let replacement = match parent { | 282 | let replacement = match parent { |
276 | Either::Left(_) => ast::make::use_tree( | 283 | Either::Left(_) => { |
277 | path, | 284 | make::use_tree(path, Some(make::use_tree_list(names.to_owned())), None, false) |
278 | Some(ast::make::use_tree_list(names.to_owned())), | 285 | .syntax() |
279 | None, | 286 | .clone() |
280 | false, | 287 | } |
281 | ) | 288 | Either::Right(_) => make::use_tree_list(names.to_owned()).syntax().clone(), |
282 | .syntax() | ||
283 | .clone(), | ||
284 | Either::Right(_) => ast::make::use_tree_list(names.to_owned()).syntax().clone(), | ||
285 | }; | 289 | }; |
286 | 290 | ||
287 | algo::diff( | 291 | algo::diff( |
diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs index a83f76857..c2c938ad1 100644 --- a/crates/syntax/src/ast/make.rs +++ b/crates/syntax/src/ast/make.rs | |||
@@ -33,6 +33,7 @@ pub fn path_unqualified(segment: ast::PathSegment) -> ast::Path { | |||
33 | pub fn path_qualified(qual: ast::Path, segment: ast::PathSegment) -> ast::Path { | 33 | pub fn path_qualified(qual: ast::Path, segment: ast::PathSegment) -> ast::Path { |
34 | path_from_text(&format!("{}::{}", qual, segment)) | 34 | path_from_text(&format!("{}::{}", qual, segment)) |
35 | } | 35 | } |
36 | // FIXME: make this private | ||
36 | pub fn path_from_text(text: &str) -> ast::Path { | 37 | pub fn path_from_text(text: &str) -> ast::Path { |
37 | ast_from_text(text) | 38 | ast_from_text(text) |
38 | } | 39 | } |