Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/flip_comma.rs')
-rw-r--r--crates/ide-assists/src/handlers/flip_comma.rs53
1 files changed, 20 insertions, 33 deletions
diff --git a/crates/ide-assists/src/handlers/flip_comma.rs b/crates/ide-assists/src/handlers/flip_comma.rs
index 95e035c053..dd27269b00 100644
--- a/crates/ide-assists/src/handlers/flip_comma.rs
+++ b/crates/ide-assists/src/handlers/flip_comma.rs
@@ -1,8 +1,8 @@
use syntax::{
algo::non_trivia_sibling,
ast::{self, syntax_factory::SyntaxFactory},
- syntax_editor::{Element, SyntaxMapping},
- AstNode, Direction, NodeOrToken, SyntaxElement, SyntaxKind, SyntaxToken, T,
+ syntax_editor::SyntaxMapping,
+ AstNode, Direction, NodeOrToken, SyntaxKind, SyntaxToken, T,
};
use crate::{AssistContext, AssistId, AssistKind, Assists};
@@ -39,37 +39,24 @@ pub(crate) fn flip_comma(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<(
return None;
}
- let prev = match prev {
- SyntaxElement::Node(node) => node.syntax_element(),
- _ => prev,
- };
- let next = match next {
- SyntaxElement::Node(node) => node.syntax_element(),
- _ => next,
- };
-
- acc.add(
- AssistId("flip_comma", AssistKind::RefactorRewrite),
- "Flip comma",
- comma.text_range(),
- |builder| {
- let parent = comma.parent().unwrap();
- let mut editor = builder.make_editor(&parent);
-
- if let Some(parent) = ast::TokenTree::cast(parent) {
- // An attribute. It often contains a path followed by a
- // token tree (e.g. `align(2)`), so we have to be smarter.
- let (new_tree, mapping) = flip_tree(parent.clone(), comma);
- editor.replace(parent.syntax(), new_tree.syntax());
- editor.add_mappings(mapping);
- } else {
- editor.replace(prev.clone(), next.clone());
- editor.replace(next.clone(), prev.clone());
- }
-
- builder.add_file_edits(ctx.file_id(), editor);
- },
- )
+ let target = comma.text_range();
+ acc.add(AssistId("flip_comma", AssistKind::RefactorRewrite), "Flip comma", target, |builder| {
+ let parent = comma.parent().unwrap();
+ let mut editor = builder.make_editor(&parent);
+
+ if let Some(parent) = ast::TokenTree::cast(parent) {
+ // An attribute. It often contains a path followed by a
+ // token tree (e.g. `align(2)`), so we have to be smarter.
+ let (new_tree, mapping) = flip_tree(parent.clone(), comma);
+ editor.replace(parent.syntax(), new_tree.syntax());
+ editor.add_mappings(mapping);
+ } else {
+ editor.replace(prev.clone(), next.clone());
+ editor.replace(next.clone(), prev.clone());
+ }
+
+ builder.add_file_edits(ctx.file_id(), editor);
+ })
}
fn flip_tree(tree: ast::TokenTree, comma: SyntaxToken) -> (ast::TokenTree, SyntaxMapping) {