Skip to content

Commit

Permalink
resolve: Say "import" when reporting private imports
Browse files Browse the repository at this point in the history
  • Loading branch information
petrochenkov committed Jan 16, 2020
1 parent 28c3f6e commit c84efe9
Show file tree
Hide file tree
Showing 12 changed files with 39 additions and 36 deletions.
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

0 comments on commit c84efe9

Please sign in to comment.