Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | crates/ide-assists/src/handlers/merge_imports.rs | 4 | ||||
| -rw-r--r-- | crates/ide-assists/src/handlers/normalize_import.rs | 2 | ||||
| -rw-r--r-- | crates/ide-db/src/imports/insert_use.rs | 4 | ||||
| -rw-r--r-- | crates/ide-db/src/imports/insert_use/tests.rs | 13 | ||||
| -rw-r--r-- | crates/ide-db/src/imports/merge_imports.rs | 23 | ||||
| -rw-r--r-- | crates/parser/src/output.rs | 2 |
6 files changed, 22 insertions, 26 deletions
diff --git a/crates/ide-assists/src/handlers/merge_imports.rs b/crates/ide-assists/src/handlers/merge_imports.rs index e942be33d9..5d81f49b18 100644 --- a/crates/ide-assists/src/handlers/merge_imports.rs +++ b/crates/ide-assists/src/handlers/merge_imports.rs @@ -98,7 +98,7 @@ fn merge_uses( }; let mut merged = first.clone(); for item in &rest { - merged = try_merge_imports(editor, &merged, item, mb)?; + merged = try_merge_imports(editor.make(), &merged, item, mb)?; } for item in rest { item.remove(editor); @@ -118,7 +118,7 @@ fn merge_use_trees( let mut merged = first.clone(); for item in &rest { - merged = try_merge_trees(editor, &merged, item, MergeBehavior::Crate)?; + merged = try_merge_trees(editor.make(), &merged, item, MergeBehavior::Crate)?; } for item in rest { item.remove(editor); diff --git a/crates/ide-assists/src/handlers/normalize_import.rs b/crates/ide-assists/src/handlers/normalize_import.rs index 07571d74d8..906f38cba4 100644 --- a/crates/ide-assists/src/handlers/normalize_import.rs +++ b/crates/ide-assists/src/handlers/normalize_import.rs @@ -27,7 +27,7 @@ pub(crate) fn normalize_import(acc: &mut Assists, ctx: &AssistContext<'_, '_>) - let target = use_item.syntax().text_range(); let (editor, _) = SyntaxEditor::new(use_item.syntax().ancestors().last().unwrap()); let normalized_use_item = - try_normalize_import(&editor, &use_item, ctx.config.insert_use.granularity.into())?; + try_normalize_import(editor.make(), &use_item, ctx.config.insert_use.granularity.into())?; editor.replace(use_item.syntax(), normalized_use_item.syntax()); acc.add(AssistId::refactor_rewrite("normalize_import"), "Normalize import", target, |builder| { diff --git a/crates/ide-db/src/imports/insert_use.rs b/crates/ide-db/src/imports/insert_use.rs index 1fd493fd2a..27e3ed6bdb 100644 --- a/crates/ide-db/src/imports/insert_use.rs +++ b/crates/ide-db/src/imports/insert_use.rs @@ -263,7 +263,9 @@ fn insert_use_with_alias_option_with_editor( for existing_use in scope.as_syntax_node().children().filter_map(ast::Use::cast).filter(filter) { - if let Some(merged) = try_merge_imports(syntax_editor, &existing_use, &use_item, mb) { + if let Some(merged) = + try_merge_imports(syntax_editor.make(), &existing_use, &use_item, mb) + { syntax_editor.replace(existing_use.syntax(), merged.syntax()); return; } diff --git a/crates/ide-db/src/imports/insert_use/tests.rs b/crates/ide-db/src/imports/insert_use/tests.rs index a30d290490..34ff7c8d5b 100644 --- a/crates/ide-db/src/imports/insert_use/tests.rs +++ b/crates/ide-db/src/imports/insert_use/tests.rs @@ -1,4 +1,5 @@ use stdx::trim_indent; +use syntax::ast::syntax_factory::SyntaxFactory; use test_fixture::WithFixture; use test_utils::{CURSOR_MARKER, assert_eq_text}; @@ -1430,8 +1431,8 @@ fn check_merge_only_fail(ra_fixture0: &str, ra_fixture1: &str, mb: MergeBehavior .find_map(ast::Use::cast) .unwrap(); - let (editor, _) = SyntaxEditor::new(use0.syntax().ancestors().last().unwrap()); - let result = try_merge_imports(&editor, &use0, &use1, mb); + let make = SyntaxFactory::without_mappings(); + let result = try_merge_imports(&make, &use0, &use1, mb); assert_eq!(result.map(|u| u.to_string()), None); } @@ -1496,8 +1497,8 @@ fn check_merge(ra_fixture0: &str, ra_fixture1: &str, last: &str, mb: MergeBehavi .find_map(ast::Use::cast) .unwrap(); - let (editor, _) = SyntaxEditor::new(use0.syntax().ancestors().last().unwrap()); - let result = try_merge_imports(&editor, &use0, &use1, mb); + let make = SyntaxFactory::without_mappings(); + let result = try_merge_imports(&make, &use0, &use1, mb); assert_eq!(result.map(|u| u.to_string().trim().to_owned()), Some(last.trim().to_owned())); } @@ -1527,8 +1528,8 @@ fn merge_gated_imports_with_different_values() { .find_map(ast::Use::cast) .unwrap(); - let (editor, _) = SyntaxEditor::new(use0.syntax().ancestors().last().unwrap()); - let result = try_merge_imports(&editor, &use0, &use1, MergeBehavior::Crate); + let make = SyntaxFactory::without_mappings(); + let result = try_merge_imports(&make, &use0, &use1, MergeBehavior::Crate); assert_eq!(result, None); } diff --git a/crates/ide-db/src/imports/merge_imports.rs b/crates/ide-db/src/imports/merge_imports.rs index 95e654df17..9b68c27ae3 100644 --- a/crates/ide-db/src/imports/merge_imports.rs +++ b/crates/ide-db/src/imports/merge_imports.rs @@ -40,7 +40,7 @@ impl MergeBehavior { /// Merge `rhs` into `lhs` keeping both intact. pub fn try_merge_imports( - editor: &SyntaxEditor, + make: &SyntaxFactory, lhs: &ast::Use, rhs: &ast::Use, merge_behavior: MergeBehavior, @@ -53,7 +53,6 @@ pub fn try_merge_imports( return None; } - let make = editor.make(); let lhs_tree = lhs.use_tree()?; let rhs_tree = rhs.use_tree()?; let merged_tree = try_merge_trees_with_factory(lhs_tree, rhs_tree, merge_behavior, make)?; @@ -67,12 +66,11 @@ pub fn try_merge_imports( /// Merge `rhs` into `lhs` keeping both intact. pub fn try_merge_trees( - editor: &SyntaxEditor, + make: &SyntaxFactory, lhs: &ast::UseTree, rhs: &ast::UseTree, merge: MergeBehavior, ) -> Option<ast::UseTree> { - let make = editor.make(); let merged = try_merge_trees_with_factory(lhs.clone(), rhs.clone(), merge, make)?; // Ignore `None` result because normalization should not affect the merge result. @@ -100,15 +98,11 @@ fn try_merge_trees_with_factory( { // we can't merge if the renames are different (`A as a` and `A as b`), // and we can safely return here - let lhs_name = lhs - .rename() - .and_then(|lhs_name| lhs_name.name()) - .map(|name| name.text().to_string()); - let rhs_name = rhs - .rename() - .and_then(|rhs_name| rhs_name.name()) - .map(|name| name.text().to_string()); - if lhs_name != rhs_name { + let lhs_name = lhs.rename().and_then(|lhs_name| lhs_name.name()); + let rhs_name = rhs.rename().and_then(|rhs_name| rhs_name.name()); + if lhs_name.as_ref().map(|name| name.text()) + != rhs_name.as_ref().map(|name| name.text()) + { return None; } @@ -263,11 +257,10 @@ impl From<MergeBehavior> for NormalizationStyle { /// - `foo::bar::{self}` -> `{foo::bar}` /// - `foo::bar` -> `{foo::bar}` pub fn try_normalize_import( - editor: &SyntaxEditor, + make: &SyntaxFactory, use_item: &ast::Use, style: NormalizationStyle, ) -> Option<ast::Use> { - let make = editor.make(); let use_tree = try_normalize_use_tree(use_item.use_tree()?, style, make)?; make_use_with_tree(use_item, use_tree) diff --git a/crates/parser/src/output.rs b/crates/parser/src/output.rs index 2f09b11218..ce64db8ada 100644 --- a/crates/parser/src/output.rs +++ b/crates/parser/src/output.rs @@ -18,7 +18,7 @@ pub struct Output { /// /// ```text /// |16 bit kind|8 bit n_input_tokens|4 bit tag|4 bit leftover| - /// `````` + /// ``` event: Vec<u32>, error: Vec<String>, } |