Auto merge of #15486 - petr-tik:n15134_hide_private_from_autocomplete_2, r=Veykril

fix: Fix item tree lowering pub(self) to pub()

Prior to this, the item tree lowered `pub(self)` visibility to `pub()`
Fix #15134 - tested with a unit test and
a manual end-to-end test of building rust-analyzer from my branch and opening the reproduction repository
This commit is contained in:
bors 2023-12-08 11:02:08 +00:00
commit 4f3d862fcf
4 changed files with 38 additions and 2 deletions

View File

@ -370,3 +370,15 @@ fn generics_with_attributes() {
"#]],
)
}
#[test]
fn pub_self() {
check(
r#"
pub(self) struct S;
"#,
expect![[r#"
pub(self) struct S;
"#]],
)
}

View File

@ -96,8 +96,8 @@ pub(crate) fn resolve_visibility(
let types = result.take_types()?;
match types {
ModuleDefId::ModuleId(m) => Visibility::Module(m),
_ => {
// error: visibility needs to refer to module
_ => {
return None;
}
}

View File

@ -73,7 +73,7 @@ pub(crate) fn from_ast_with_span_map_and_default(
RawVisibility::Module(path)
}
ast::VisibilityKind::PubSelf => {
let path = ModPath::from_kind(PathKind::Plain);
let path = ModPath::from_kind(PathKind::Super(0));
RawVisibility::Module(path)
}
ast::VisibilityKind::Pub => RawVisibility::Public,

View File

@ -1286,6 +1286,30 @@ fn here_we_go() fn()
);
}
#[test]
fn completes_only_public() {
check(
r#"
//- /e.rs
pub(self) fn i_should_be_hidden() {}
pub(in crate::e) fn i_should_also_be_hidden() {}
pub fn i_am_public () {}
//- /lib.rs crate:krate
pub mod e;
//- /main.rs deps:krate crate:main
use krate::e;
fn main() {
e::$0
}"#,
expect![
"fn i_am_public() fn()
"
],
)
}
#[test]
fn completion_filtering_excludes_non_identifier_doc_aliases() {
check_edit(