|
1 | 1 | use syntax::{
|
2 | 2 | ast::{self, NameOwner, VisibilityOwner},
|
3 | 3 | AstNode,
|
4 |
| - SyntaxKind::{CONST, ENUM, FN, MODULE, STATIC, STRUCT, TRAIT, TYPE_ALIAS, VISIBILITY}, |
| 4 | + SyntaxKind::{ |
| 5 | + CONST, ENUM, FN, MACRO_DEF, MODULE, STATIC, STRUCT, TRAIT, TYPE_ALIAS, USE, VISIBILITY, |
| 6 | + }, |
5 | 7 | T,
|
6 | 8 | };
|
7 | 9 |
|
@@ -37,12 +39,15 @@ fn add_vis(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
|
37 | 39 | | T![enum]
|
38 | 40 | | T![trait]
|
39 | 41 | | T![type]
|
| 42 | + | T![use] |
| 43 | + | T![macro] |
40 | 44 | )
|
41 | 45 | });
|
42 | 46 |
|
43 | 47 | let (offset, target) = if let Some(keyword) = item_keyword {
|
44 | 48 | let parent = keyword.parent()?;
|
45 |
| - let def_kws = vec![CONST, STATIC, TYPE_ALIAS, FN, MODULE, STRUCT, ENUM, TRAIT]; |
| 49 | + let def_kws = |
| 50 | + vec![CONST, STATIC, TYPE_ALIAS, FN, MODULE, STRUCT, ENUM, TRAIT, USE, MACRO_DEF]; |
46 | 51 | // Parent is not a definition, can't add visibility
|
47 | 52 | if !def_kws.iter().any(|&def_kw| def_kw == parent.kind()) {
|
48 | 53 | return None;
|
@@ -122,6 +127,8 @@ mod tests {
|
122 | 127 | check_assist(change_visibility, "$0trait Foo {}", "pub(crate) trait Foo {}");
|
123 | 128 | check_assist(change_visibility, "m$0od {}", "pub(crate) mod {}");
|
124 | 129 | check_assist(change_visibility, "unsafe f$0n foo() {}", "pub(crate) unsafe fn foo() {}");
|
| 130 | + check_assist(change_visibility, "$0macro foo() {}", "pub(crate) macro foo() {}"); |
| 131 | + check_assist(change_visibility, "$0use foo;", "pub(crate) use foo;"); |
125 | 132 | }
|
126 | 133 |
|
127 | 134 | #[test]
|
|
0 commit comments