Skip to content

Commit b5c330b

Browse files
author
Jesse Bakker
committed
Make change_visibility assist work for tuple struct field visibility
1 parent 89e1f97 commit b5c330b

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

crates/ra_assists/src/handlers/change_visibility.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ fn add_vis(ctx: AssistCtx) -> Option<Assist> {
4747
return None;
4848
}
4949
(vis_offset(&parent), keyword.text_range())
50-
} else {
51-
let field_name: ast::Name = ctx.find_node_at_offset()?;
50+
} else if let Some(field_name) = ctx.find_node_at_offset::<ast::Name>() {
5251
let field = field_name.syntax().ancestors().find_map(ast::RecordFieldDef::cast)?;
5352
if field.name()? != field_name {
5453
tested_by!(change_visibility_field_false_positive);
@@ -58,6 +57,13 @@ fn add_vis(ctx: AssistCtx) -> Option<Assist> {
5857
return None;
5958
}
6059
(vis_offset(field.syntax()), field_name.syntax().text_range())
60+
} else if let Some(field) = ctx.find_node_at_offset::<ast::TupleFieldDef>() {
61+
if field.visibility().is_some() {
62+
return None;
63+
}
64+
(vis_offset(field.syntax()), field.syntax().text_range())
65+
} else {
66+
return None;
6167
};
6268

6369
ctx.add_assist(AssistId("change_visibility"), "Change visibility to pub(crate)", |edit| {
@@ -129,7 +135,8 @@ mod tests {
129135
change_visibility,
130136
r"struct S { <|>field: u32 }",
131137
r"struct S { <|>pub(crate) field: u32 }",
132-
)
138+
);
139+
check_assist(change_visibility, r"struct S ( <|>u32 )", r"struct S ( <|>pub(crate) u32 )");
133140
}
134141

135142
#[test]

0 commit comments

Comments
 (0)