Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 115646d

Browse files
committed
Align set_visibility with the rest of the set_ edit-in-place methods
1 parent 581d457 commit 115646d

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

crates/ide-assists/src/handlers/fix_visibility.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ fn add_vis_to_referenced_module_def(acc: &mut Assists, ctx: &AssistContext<'_>)
7979
edit.edit_file(target_file);
8080

8181
let vis_owner = edit.make_mut(vis_owner);
82-
vis_owner.set_visibility(missing_visibility.clone_for_update());
82+
vis_owner.set_visibility(Some(missing_visibility.clone_for_update()));
8383

8484
if let Some((cap, vis)) = ctx.config.snippet_cap.zip(vis_owner.visibility()) {
8585
edit.add_tabstop_before(cap, vis);
@@ -131,7 +131,7 @@ fn add_vis_to_referenced_record_field(acc: &mut Assists, ctx: &AssistContext<'_>
131131
edit.edit_file(target_file);
132132

133133
let vis_owner = edit.make_mut(vis_owner);
134-
vis_owner.set_visibility(missing_visibility.clone_for_update());
134+
vis_owner.set_visibility(Some(missing_visibility.clone_for_update()));
135135

136136
if let Some((cap, vis)) = ctx.config.snippet_cap.zip(vis_owner.visibility()) {
137137
edit.add_tabstop_before(cap, vis);

crates/syntax/src/ast/edit_in_place.rs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,20 +1007,24 @@ impl ast::IdentPat {
10071007
}
10081008

10091009
pub trait HasVisibilityEdit: ast::HasVisibility {
1010-
fn set_visibility(&self, visibility: ast::Visibility) {
1011-
match self.visibility() {
1012-
Some(current_visibility) => {
1013-
ted::replace(current_visibility.syntax(), visibility.syntax())
1014-
}
1015-
None => {
1016-
let vis_before = self
1017-
.syntax()
1018-
.children_with_tokens()
1019-
.find(|it| !matches!(it.kind(), WHITESPACE | COMMENT | ATTR))
1020-
.unwrap_or_else(|| self.syntax().first_child_or_token().unwrap());
1021-
1022-
ted::insert(ted::Position::before(vis_before), visibility.syntax());
1010+
fn set_visibility(&self, visibility: Option<ast::Visibility>) {
1011+
if let Some(visibility) = visibility {
1012+
match self.visibility() {
1013+
Some(current_visibility) => {
1014+
ted::replace(current_visibility.syntax(), visibility.syntax())
1015+
}
1016+
None => {
1017+
let vis_before = self
1018+
.syntax()
1019+
.children_with_tokens()
1020+
.find(|it| !matches!(it.kind(), WHITESPACE | COMMENT | ATTR))
1021+
.unwrap_or_else(|| self.syntax().first_child_or_token().unwrap());
1022+
1023+
ted::insert(ted::Position::before(vis_before), visibility.syntax());
1024+
}
10231025
}
1026+
} else if let Some(visibility) = self.visibility() {
1027+
ted::remove(visibility.syntax());
10241028
}
10251029
}
10261030
}

0 commit comments

Comments
 (0)