aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/handlers/merge_imports.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/handlers/merge_imports.rs')
-rw-r--r--crates/ra_assists/src/handlers/merge_imports.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/crates/ra_assists/src/handlers/merge_imports.rs b/crates/ra_assists/src/handlers/merge_imports.rs
index 96b1ab86a..e9c49b7d0 100644
--- a/crates/ra_assists/src/handlers/merge_imports.rs
+++ b/crates/ra_assists/src/handlers/merge_imports.rs
@@ -1,7 +1,10 @@
1use std::iter::successors; 1use std::iter::successors;
2 2
3use ast::{edit::AstNodeEdit, make}; 3use ra_syntax::{
4use ra_syntax::{ast, AstNode, AstToken, Direction, InsertPosition, SyntaxElement, T}; 4 algo::neighbor,
5 ast::{self, edit::AstNodeEdit, make},
6 AstNode, AstToken, Direction, InsertPosition, SyntaxElement, T,
7};
5 8
6use crate::{Assist, AssistCtx, AssistId}; 9use crate::{Assist, AssistCtx, AssistId};
7 10
@@ -23,7 +26,7 @@ pub(crate) fn merge_imports(ctx: AssistCtx) -> Option<Assist> {
23 let (merged, to_delete) = [Direction::Prev, Direction::Next] 26 let (merged, to_delete) = [Direction::Prev, Direction::Next]
24 .iter() 27 .iter()
25 .copied() 28 .copied()
26 .filter_map(|dir| next_use_item(&use_item, dir)) 29 .filter_map(|dir| neighbor(&use_item, dir))
27 .filter_map(|it| Some((it.clone(), it.use_tree()?))) 30 .filter_map(|it| Some((it.clone(), it.use_tree()?)))
28 .find_map(|(use_item, use_tree)| { 31 .find_map(|(use_item, use_tree)| {
29 Some((try_merge_trees(&tree, &use_tree)?, use_item.clone())) 32 Some((try_merge_trees(&tree, &use_tree)?, use_item.clone()))
@@ -49,10 +52,6 @@ pub(crate) fn merge_imports(ctx: AssistCtx) -> Option<Assist> {
49 }) 52 })
50} 53}
51 54
52fn next_use_item(this_use_item: &ast::UseItem, direction: Direction) -> Option<ast::UseItem> {
53 this_use_item.syntax().siblings(direction).skip(1).find_map(ast::UseItem::cast)
54}
55
56fn try_merge_trees(old: &ast::UseTree, new: &ast::UseTree) -> Option<ast::UseTree> { 55fn try_merge_trees(old: &ast::UseTree, new: &ast::UseTree) -> Option<ast::UseTree> {
57 let lhs_path = old.path()?; 56 let lhs_path = old.path()?;
58 let rhs_path = new.path()?; 57 let rhs_path = new.path()?;