Migrate expand_glob_import assist to use SyntaxEditor

This commit is contained in:
Hmikihiro 2025-08-05 01:16:39 +09:00
parent 8d75311400
commit 0e456af6a1

View file

@ -9,7 +9,6 @@ use stdx::never;
use syntax::{ use syntax::{
AstNode, Direction, SyntaxNode, SyntaxToken, T, AstNode, Direction, SyntaxNode, SyntaxToken, T,
ast::{self, Use, UseTree, VisibilityKind, make}, ast::{self, Use, UseTree, VisibilityKind, make},
ted,
}; };
use crate::{ use crate::{
@ -165,8 +164,6 @@ fn build_expanded_import(
let filtered_defs = let filtered_defs =
if reexport_public_items { refs_in_target } else { refs_in_target.used_refs(ctx) }; if reexport_public_items { refs_in_target } else { refs_in_target.used_refs(ctx) };
let use_tree = builder.make_mut(use_tree);
let names_to_import = find_names_to_import(filtered_defs, imported_defs); let names_to_import = find_names_to_import(filtered_defs, imported_defs);
let expanded = make::use_tree_list(names_to_import.iter().map(|n| { let expanded = make::use_tree_list(names_to_import.iter().map(|n| {
let path = make::ext::ident_path( let path = make::ext::ident_path(
@ -176,22 +173,24 @@ fn build_expanded_import(
})) }))
.clone_for_update(); .clone_for_update();
let mut editor = builder.make_editor(use_tree.syntax());
match use_tree.star_token() { match use_tree.star_token() {
Some(star) => { Some(star) => {
let needs_braces = use_tree.path().is_some() && names_to_import.len() != 1; let needs_braces = use_tree.path().is_some() && names_to_import.len() != 1;
if needs_braces { if needs_braces {
ted::replace(star, expanded.syntax()) editor.replace(star, expanded.syntax())
} else { } else {
let without_braces = expanded let without_braces = expanded
.syntax() .syntax()
.children_with_tokens() .children_with_tokens()
.filter(|child| !matches!(child.kind(), T!['{'] | T!['}'])) .filter(|child| !matches!(child.kind(), T!['{'] | T!['}']))
.collect(); .collect();
ted::replace_with_many(star, without_braces) editor.replace_with_many(star, without_braces)
} }
} }
None => never!(), None => never!(),
} }
builder.add_file_edits(ctx.vfs_file_id(), editor);
} }
fn get_export_visibility_kind(use_item: &Use) -> VisibilityKind { fn get_export_visibility_kind(use_item: &Use) -> VisibilityKind {