diff options
-rw-r--r-- | crates/ra_assists/src/handlers/change_visibility.rs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/crates/ra_assists/src/handlers/change_visibility.rs b/crates/ra_assists/src/handlers/change_visibility.rs index 703ee2143..4343b423c 100644 --- a/crates/ra_assists/src/handlers/change_visibility.rs +++ b/crates/ra_assists/src/handlers/change_visibility.rs | |||
@@ -1,7 +1,9 @@ | |||
1 | use ra_syntax::{ | 1 | use ra_syntax::{ |
2 | ast::{self, NameOwner, VisibilityOwner}, | 2 | ast::{self, NameOwner, VisibilityOwner}, |
3 | AstNode, | 3 | AstNode, |
4 | SyntaxKind::{CONST_DEF, ENUM_DEF, FN_DEF, MODULE, STRUCT_DEF, TRAIT_DEF, VISIBILITY}, | 4 | SyntaxKind::{ |
5 | CONST_DEF, ENUM_DEF, FN_DEF, MODULE, STATIC_DEF, STRUCT_DEF, TRAIT_DEF, VISIBILITY, | ||
6 | }, | ||
5 | T, | 7 | T, |
6 | }; | 8 | }; |
7 | use test_utils::mark; | 9 | use test_utils::mark; |
@@ -28,12 +30,15 @@ pub(crate) fn change_visibility(acc: &mut Assists, ctx: &AssistContext) -> Optio | |||
28 | 30 | ||
29 | fn add_vis(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { | 31 | fn add_vis(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { |
30 | let item_keyword = ctx.token_at_offset().find(|leaf| { | 32 | let item_keyword = ctx.token_at_offset().find(|leaf| { |
31 | matches!(leaf.kind(), T![const] | T![fn] | T![mod] | T![struct] | T![enum] | T![trait]) | 33 | matches!( |
34 | leaf.kind(), | ||
35 | T![const] | T![static] | T![fn] | T![mod] | T![struct] | T![enum] | T![trait] | ||
36 | ) | ||
32 | }); | 37 | }); |
33 | 38 | ||
34 | let (offset, target) = if let Some(keyword) = item_keyword { | 39 | let (offset, target) = if let Some(keyword) = item_keyword { |
35 | let parent = keyword.parent(); | 40 | let parent = keyword.parent(); |
36 | let def_kws = vec![CONST_DEF, FN_DEF, MODULE, STRUCT_DEF, ENUM_DEF, TRAIT_DEF]; | 41 | let def_kws = vec![CONST_DEF, STATIC_DEF, FN_DEF, MODULE, STRUCT_DEF, ENUM_DEF, TRAIT_DEF]; |
37 | // Parent is not a definition, can't add visibility | 42 | // Parent is not a definition, can't add visibility |
38 | if !def_kws.iter().any(|&def_kw| def_kw == parent.kind()) { | 43 | if !def_kws.iter().any(|&def_kw| def_kw == parent.kind()) { |
39 | return None; | 44 | return None; |
@@ -152,6 +157,11 @@ mod tests { | |||
152 | } | 157 | } |
153 | 158 | ||
154 | #[test] | 159 | #[test] |
160 | fn change_visibility_static() { | ||
161 | check_assist(change_visibility, "<|>static FOO = 3u8;", "pub(crate) static FOO = 3u8;"); | ||
162 | } | ||
163 | |||
164 | #[test] | ||
155 | fn change_visibility_handles_comment_attrs() { | 165 | fn change_visibility_handles_comment_attrs() { |
156 | check_assist( | 166 | check_assist( |
157 | change_visibility, | 167 | change_visibility, |