Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/ast/edit_in_place.rs')
-rw-r--r--crates/syntax/src/ast/edit_in_place.rs17
1 files changed, 11 insertions, 6 deletions
diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs
index 247dfe0b45..c9944b75b0 100644
--- a/crates/syntax/src/ast/edit_in_place.rs
+++ b/crates/syntax/src/ast/edit_in_place.rs
@@ -538,9 +538,13 @@ impl ast::UseTree {
/// `foo::bar` -> `{foo::bar}`
///
/// `{foo::bar}` -> `{foo::bar}`
- pub fn wrap_in_tree_list(&self) {
- if self.path().is_none() {
- return;
+ pub fn wrap_in_tree_list(&self) -> Option<()> {
+ if self.use_tree_list().is_some()
+ && self.path().is_none()
+ && self.star_token().is_none()
+ && self.rename().is_none()
+ {
+ return None;
}
let subtree = self.clone_subtree().clone_for_update();
ted::remove_all_iter(self.syntax().children_with_tokens());
@@ -548,6 +552,7 @@ impl ast::UseTree {
self.syntax(),
make::use_tree_list(once(subtree)).clone_for_update().syntax(),
);
+ Some(())
}
}
@@ -960,10 +965,10 @@ impl ast::IdentPat {
}
pub trait HasVisibilityEdit: ast::HasVisibility {
- fn set_visibility(&self, visbility: ast::Visibility) {
+ fn set_visibility(&self, visibility: ast::Visibility) {
match self.visibility() {
Some(current_visibility) => {
- ted::replace(current_visibility.syntax(), visbility.syntax())
+ ted::replace(current_visibility.syntax(), visibility.syntax())
}
None => {
let vis_before = self
@@ -972,7 +977,7 @@ pub trait HasVisibilityEdit: ast::HasVisibility {
.find(|it| !matches!(it.kind(), WHITESPACE | COMMENT | ATTR))
.unwrap_or_else(|| self.syntax().first_child_or_token().unwrap());
- ted::insert(ted::Position::before(vis_before), visbility.syntax());
+ ted::insert(ted::Position::before(vis_before), visibility.syntax());
}
}
}