From 74b755d23366bcfa5437df25b023f5a2451e1ea6 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sat, 5 Sep 2020 16:15:16 +0200 Subject: Allow merge_imports assists to merge imports of equal visibility --- crates/assists/src/utils/insert_use.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'crates/assists/src/utils/insert_use.rs') diff --git a/crates/assists/src/utils/insert_use.rs b/crates/assists/src/utils/insert_use.rs index a920e12c5..98553b2e0 100644 --- a/crates/assists/src/utils/insert_use.rs +++ b/crates/assists/src/utils/insert_use.rs @@ -138,18 +138,23 @@ pub(crate) fn insert_use( algo::insert_children(scope.as_syntax_node(), insert_position, to_insert) } +fn eq_visibility(vis0: Option, vis1: Option) -> bool { + match (vis0, vis1) { + (None, None) => true, + // FIXME: Don't use the string representation to check for equality + // spaces inside of the node would break this comparison + (Some(vis0), Some(vis1)) => vis0.to_string() == vis1.to_string(), + _ => false, + } +} + pub(crate) fn try_merge_imports( old: &ast::Use, new: &ast::Use, merge_behaviour: MergeBehaviour, ) -> Option { // don't merge imports with different visibilities - if old - .visibility() - .and_then(|vis| vis.pub_token()) - .or_else(|| new.visibility().and_then(|vis| vis.pub_token())) - .is_some() - { + if !eq_visibility(old.visibility(), new.visibility()) { return None; } let old_tree = old.use_tree()?; -- cgit v1.2.3