1
1
use ra_syntax:: {
2
2
ast:: { self , NameOwner , VisibilityOwner } ,
3
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
7
T ,
6
8
} ;
7
9
use test_utils:: mark;
@@ -28,12 +30,15 @@ pub(crate) fn change_visibility(acc: &mut Assists, ctx: &AssistContext) -> Optio
28
30
29
31
fn add_vis ( acc : & mut Assists , ctx : & AssistContext ) -> Option < ( ) > {
30
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
39
let ( offset, target) = if let Some ( keyword) = item_keyword {
35
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
42
// Parent is not a definition, can't add visibility
38
43
if !def_kws. iter ( ) . any ( |& def_kw| def_kw == parent. kind ( ) ) {
39
44
return None ;
@@ -151,6 +156,11 @@ mod tests {
151
156
check_assist ( change_visibility, "<|>const FOO = 3u8;" , "pub(crate) const FOO = 3u8;" ) ;
152
157
}
153
158
159
+ #[ test]
160
+ fn change_visibility_static ( ) {
161
+ check_assist ( change_visibility, "<|>static FOO = 3u8;" , "pub(crate) static FOO = 3u8;" ) ;
162
+ }
163
+
154
164
#[ test]
155
165
fn change_visibility_handles_comment_attrs ( ) {
156
166
check_assist (
0 commit comments