Skip to content

Rollup of 4 pull requests #68276

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
resolve: Say "import" when reporting private imports
  • Loading branch information
petrochenkov committed Jan 12, 2020
commit a68334a87501c04ea2d62dc9d788aa43651f5ffc
3 changes: 3 additions & 0 deletions src/librustc_resolve/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -921,6 +921,9 @@ impl<'a> Resolver<'a> {
if is_constructor {
descr += " constructor";
}
if binding.is_import() {
descr += " import";
}

let mut err =
struct_span_err!(session, ident.span, E0603, "{} `{}` is private", descr, ident);
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/extern/extern-crate-visibility.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ mod foo {
}

// Check that private crates can be used from outside their modules, albeit with warnings
use foo::core::cell; //~ ERROR crate `core` is private
use foo::core::cell; //~ ERROR crate import `core` is private

fn f() {
foo::core::cell::Cell::new(0); //~ ERROR crate `core` is private
foo::core::cell::Cell::new(0); //~ ERROR crate import `core` is private

use foo::*;
mod core {} // Check that private crates are not glob imported
Expand Down
12 changes: 6 additions & 6 deletions src/test/ui/extern/extern-crate-visibility.stderr
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
error[E0603]: crate `core` is private
error[E0603]: crate import `core` is private
--> $DIR/extern-crate-visibility.rs:6:10
|
LL | use foo::core::cell;
| ^^^^ this crate is private
| ^^^^ this crate import is private
|
note: the crate `core` is defined here
note: the crate import `core` is defined here
--> $DIR/extern-crate-visibility.rs:2:5
|
LL | extern crate core;
| ^^^^^^^^^^^^^^^^^^

error[E0603]: crate `core` is private
error[E0603]: crate import `core` is private
--> $DIR/extern-crate-visibility.rs:9:10
|
LL | foo::core::cell::Cell::new(0);
| ^^^^ this crate is private
| ^^^^ this crate import is private
|
note: the crate `core` is defined here
note: the crate import `core` is defined here
--> $DIR/extern-crate-visibility.rs:2:5
|
LL | extern crate core;
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/import.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ error[E0432]: unresolved import `foo`
LL | use foo;
| ^^^ no `foo` in the root

error[E0603]: unresolved item `foo` is private
error[E0603]: unresolved item import `foo` is private
--> $DIR/import.rs:15:10
|
LL | zed::foo();
| ^^^ this unresolved item is private
| ^^^ this unresolved item import is private
|
note: the unresolved item `foo` is defined here
note: the unresolved item import `foo` is defined here
--> $DIR/import.rs:10:9
|
LL | use foo;
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/imports/issue-55884-2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ mod parser {
use ParseOptions;
}

pub use parser::ParseOptions; //~ ERROR struct `ParseOptions` is private
pub use parser::ParseOptions; //~ ERROR struct import `ParseOptions` is private

fn main() {}
6 changes: 3 additions & 3 deletions src/test/ui/imports/issue-55884-2.stderr
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
error[E0603]: struct `ParseOptions` is private
error[E0603]: struct import `ParseOptions` is private
--> $DIR/issue-55884-2.rs:12:17
|
LL | pub use parser::ParseOptions;
| ^^^^^^^^^^^^ this struct is private
| ^^^^^^^^^^^^ this struct import is private
|
note: the struct `ParseOptions` is defined here
note: the struct import `ParseOptions` is defined here
--> $DIR/issue-55884-2.rs:9:9
|
LL | use ParseOptions;
Expand Down
12 changes: 6 additions & 6 deletions src/test/ui/imports/reexports.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,25 @@ note: consider marking `foo` as `pub` in the imported module
LL | pub use super::foo;
| ^^^^^^^^^^

error[E0603]: module `foo` is private
error[E0603]: module import `foo` is private
--> $DIR/reexports.rs:33:15
|
LL | use b::a::foo::S;
| ^^^ this module is private
| ^^^ this module import is private
|
note: the module `foo` is defined here
note: the module import `foo` is defined here
--> $DIR/reexports.rs:21:17
|
LL | pub use super::foo; // This is OK since the value `foo` is visible enough.
| ^^^^^^^^^^

error[E0603]: module `foo` is private
error[E0603]: module import `foo` is private
--> $DIR/reexports.rs:34:15
|
LL | use b::b::foo::S as T;
| ^^^ this module is private
| ^^^ this module import is private
|
note: the module `foo` is defined here
note: the module import `foo` is defined here
--> $DIR/reexports.rs:26:17
|
LL | pub use super::*; // This is also OK since the value `foo` is visible enough.
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/privacy/privacy2.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ error[E0432]: unresolved import `bar::foo`
LL | use bar::foo;
| ^^^^^^^^ no `foo` in `bar`

error[E0603]: function `foo` is private
error[E0603]: function import `foo` is private
--> $DIR/privacy2.rs:23:20
|
LL | use bar::glob::foo;
| ^^^ this function is private
| ^^^ this function import is private
|
note: the function `foo` is defined here
note: the function import `foo` is defined here
--> $DIR/privacy2.rs:10:13
|
LL | use foo;
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/proc-macro/disappearing-resolution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ extern crate test_macros;
mod m {
use test_macros::Empty;
}
use m::Empty; //~ ERROR derive macro `Empty` is private
use m::Empty; //~ ERROR derive macro import `Empty` is private

// To resolve `empty_helper` we need to resolve `Empty`.
// During initial resolution `use m::Empty` introduces no entries, so we proceed to `macro_use`,
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/proc-macro/disappearing-resolution.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ error: cannot find attribute `empty_helper` in this scope
LL | #[empty_helper]
| ^^^^^^^^^^^^

error[E0603]: derive macro `Empty` is private
error[E0603]: derive macro import `Empty` is private
--> $DIR/disappearing-resolution.rs:11:8
|
LL | use m::Empty;
| ^^^^^ this derive macro is private
| ^^^^^ this derive macro import is private
|
note: the derive macro `Empty` is defined here
note: the derive macro import `Empty` is defined here
--> $DIR/disappearing-resolution.rs:9:9
|
LL | use test_macros::Empty;
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/shadowed/shadowed-use-visibility.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ mod foo {
}

mod bar {
use foo::bar::f as g; //~ ERROR module `bar` is private
use foo::bar::f as g; //~ ERROR module import `bar` is private

use foo as f;
pub use foo::*;
}

use bar::f::f; //~ ERROR module `f` is private
use bar::f::f; //~ ERROR module import `f` is private
fn main() {}
12 changes: 6 additions & 6 deletions src/test/ui/shadowed/shadowed-use-visibility.stderr
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
error[E0603]: module `bar` is private
error[E0603]: module import `bar` is private
--> $DIR/shadowed-use-visibility.rs:9:14
|
LL | use foo::bar::f as g;
| ^^^ this module is private
| ^^^ this module import is private
|
note: the module `bar` is defined here
note: the module import `bar` is defined here
--> $DIR/shadowed-use-visibility.rs:4:9
|
LL | use foo as bar;
| ^^^^^^^^^^

error[E0603]: module `f` is private
error[E0603]: module import `f` is private
--> $DIR/shadowed-use-visibility.rs:15:10
|
LL | use bar::f::f;
| ^ this module is private
| ^ this module import is private
|
note: the module `f` is defined here
note: the module import `f` is defined here
--> $DIR/shadowed-use-visibility.rs:11:9
|
LL | use foo as f;
Expand Down