mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 17:24:06 +00:00
7dffd24da5
Suggest publicly accessible paths for items in private mod: When encountering a path in non-import situations that are not reachable due to privacy constraints, search for any public re-exports that the user could use instead. Track whether an import suggestion is offering a re-export. When encountering a path with private segments, mention if the item at the final path segment is not publicly accessible at all. Add item visibility metadata to privacy errors from imports: On unreachable imports, record the item that was being imported in order to suggest publicly available re-exports or to be explicit that the item is not available publicly from any path. In order to allow this, we add a mode to `resolve_path` that will not add new privacy errors, nor return early if it encounters one. This way we can get the `Res` corresponding to the final item in the import, which is used in the privacy error machinery.
48 lines
1.2 KiB
Plaintext
48 lines
1.2 KiB
Plaintext
error[E0603]: module `bar` is private
|
|
--> $DIR/privacy-in-paths.rs:24:16
|
|
|
|
|
LL | ::foo::bar::baz::f();
|
|
| ^^^ - function `f` is not publicly re-exported
|
|
| |
|
|
| private module
|
|
|
|
|
note: the module `bar` is defined here
|
|
--> $DIR/privacy-in-paths.rs:3:5
|
|
|
|
|
LL | mod bar {
|
|
| ^^^^^^^
|
|
|
|
error[E0603]: module `bar` is private
|
|
--> $DIR/privacy-in-paths.rs:25:16
|
|
|
|
|
LL | ::foo::bar::S::f();
|
|
| ^^^ private module
|
|
|
|
|
note: the module `bar` is defined here
|
|
--> $DIR/privacy-in-paths.rs:3:5
|
|
|
|
|
LL | mod bar {
|
|
| ^^^^^^^
|
|
help: consider importing this struct through its public re-export instead
|
|
|
|
|
LL | foo::S::f();
|
|
| ~~~~~~
|
|
|
|
error[E0603]: trait `T` is private
|
|
--> $DIR/privacy-in-paths.rs:26:23
|
|
|
|
|
LL | <() as ::foo::T>::Assoc::f();
|
|
| ^ ----- associated type `Assoc` is not publicly re-exported
|
|
| |
|
|
| private trait
|
|
|
|
|
note: the trait `T` is defined here
|
|
--> $DIR/privacy-in-paths.rs:8:5
|
|
|
|
|
LL | trait T {
|
|
| ^^^^^^^
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0603`.
|