Open
Description
As discussion with @Techassi, we should warn/error if the visibility of the inner module doesn't match the outer module.
The inner module ends up with the same visibility as the parent anyway, but it is confusing if it is not the same.
#[versioned(version(name = "v1alpha1"))]
pub mod versioned {
// contents of this mod get merged with the generated `v1alpha` mod.
// nothing unusual here, pub all the way
pub mod v1alpha1 {
pub use v1alpha1_impl::Error;
}
}
Is equivalent to:
#[versioned(version(name = "v1alpha1"))]
pub mod versioned {
// contents of this mod get merged with the generated `v1alpha` mod,
// with `pub` visibility (because of `pub mod versioned`).
// 👇
mod v1alpha1 {
pub use v1alpha1_impl::Error;
}
}
However, it appears confusing to the reader. Eg:
How can the pub use
be of any use inside a private mod
?
... with the answer being oh, the mod
is actually pub mod
because of pub mod versioned
which leads to pub mod v1alpha
being generated, which absorbs the contents of the mod v1alpha1
that you see in the source.
Metadata
Metadata
Assignees
Labels
No labels