Rollup merge of #140614 - yuk1ty:fix-invalid-module-name-visibility, r=davidtwco

Correct warning message in restricted visibility

Fixes #131220
This commit is contained in:
Guillaume Gomez
2025-05-07 18:19:05 +02:00
committed by GitHub
4 changed files with 57 additions and 2 deletions

View File

@@ -309,7 +309,10 @@ impl Visibility {
} else if restricted_id == tcx.parent_module_from_def_id(def_id).to_local_def_id() {
"pub(self)".to_string()
} else {
format!("pub({})", tcx.item_name(restricted_id.to_def_id()))
format!(
"pub(in crate{})",
tcx.def_path(restricted_id.to_def_id()).to_string_no_crate_verbose()
)
}
}
ty::Visibility::Public => "pub".to_string(),

View File

@@ -62,7 +62,7 @@ warning: glob import doesn't reexport anything with visibility `pub` because no
LL | pub use super::*;
| ^^^^^^^^
|
note: the most public imported item is `pub(a)`
note: the most public imported item is `pub(in crate::a)`
--> $DIR/reexports.rs:11:17
|
LL | pub use super::*;

View File

@@ -0,0 +1,25 @@
//@ check-pass
#![allow(dead_code)]
mod outer {
pub mod inner {
pub(in crate::outer) struct Foo;
pub fn bar() -> Foo {
//~^ WARNING type `Foo` is more private than the item `outer::inner::bar` [private_interfaces]
Foo
}
}
pub mod nested {
pub mod inner {
pub(in crate::outer::nested) struct NestedFoo;
pub fn bar() -> NestedFoo {
//~^ WARNING type `NestedFoo` is more private than the item `nested::inner::bar` [private_interfaces]
NestedFoo
}
}
}
}
fn main() {}

View File

@@ -0,0 +1,27 @@
warning: type `Foo` is more private than the item `outer::inner::bar`
--> $DIR/pub-restricted-warning.rs:8:9
|
LL | pub fn bar() -> Foo {
| ^^^^^^^^^^^^^^^^^^^ function `outer::inner::bar` is reachable at visibility `pub(crate)`
|
note: but type `Foo` is only usable at visibility `pub(in crate::outer)`
--> $DIR/pub-restricted-warning.rs:7:9
|
LL | pub(in crate::outer) struct Foo;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: `#[warn(private_interfaces)]` on by default
warning: type `NestedFoo` is more private than the item `nested::inner::bar`
--> $DIR/pub-restricted-warning.rs:17:13
|
LL | pub fn bar() -> NestedFoo {
| ^^^^^^^^^^^^^^^^^^^^^^^^^ function `nested::inner::bar` is reachable at visibility `pub(crate)`
|
note: but type `NestedFoo` is only usable at visibility `pub(in crate::outer::nested)`
--> $DIR/pub-restricted-warning.rs:16:13
|
LL | pub(in crate::outer::nested) struct NestedFoo;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: 2 warnings emitted