mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-28 04:45:05 +00:00
Merge #4265
4265: Make `change_visibility` assist work for tuple struct fields r=matklad a=Jesse-Bakker Fixes #4206 Co-authored-by: Jesse Bakker <git@jessebakker.com>
This commit is contained in:
commit
f68e099777
1 changed files with 10 additions and 3 deletions
|
@ -47,8 +47,7 @@ fn add_vis(ctx: AssistCtx) -> Option<Assist> {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
(vis_offset(&parent), keyword.text_range())
|
(vis_offset(&parent), keyword.text_range())
|
||||||
} else {
|
} else if let Some(field_name) = ctx.find_node_at_offset::<ast::Name>() {
|
||||||
let field_name: ast::Name = ctx.find_node_at_offset()?;
|
|
||||||
let field = field_name.syntax().ancestors().find_map(ast::RecordFieldDef::cast)?;
|
let field = field_name.syntax().ancestors().find_map(ast::RecordFieldDef::cast)?;
|
||||||
if field.name()? != field_name {
|
if field.name()? != field_name {
|
||||||
tested_by!(change_visibility_field_false_positive);
|
tested_by!(change_visibility_field_false_positive);
|
||||||
|
@ -58,6 +57,13 @@ fn add_vis(ctx: AssistCtx) -> Option<Assist> {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
(vis_offset(field.syntax()), field_name.syntax().text_range())
|
(vis_offset(field.syntax()), field_name.syntax().text_range())
|
||||||
|
} else if let Some(field) = ctx.find_node_at_offset::<ast::TupleFieldDef>() {
|
||||||
|
if field.visibility().is_some() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
(vis_offset(field.syntax()), field.syntax().text_range())
|
||||||
|
} else {
|
||||||
|
return None;
|
||||||
};
|
};
|
||||||
|
|
||||||
ctx.add_assist(AssistId("change_visibility"), "Change visibility to pub(crate)", |edit| {
|
ctx.add_assist(AssistId("change_visibility"), "Change visibility to pub(crate)", |edit| {
|
||||||
|
@ -129,7 +135,8 @@ mod tests {
|
||||||
change_visibility,
|
change_visibility,
|
||||||
r"struct S { <|>field: u32 }",
|
r"struct S { <|>field: u32 }",
|
||||||
r"struct S { <|>pub(crate) field: u32 }",
|
r"struct S { <|>pub(crate) field: u32 }",
|
||||||
)
|
);
|
||||||
|
check_assist(change_visibility, r"struct S ( <|>u32 )", r"struct S ( <|>pub(crate) u32 )");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in a new issue