mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-26 06:35:27 +00:00
changing non-empty glob must import something to a lint
This commit is contained in:
parent
e369d87b01
commit
de9413bd34
@ -972,8 +972,9 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
|
||||
if !is_prelude &&
|
||||
max_vis.get() != ty::Visibility::Invisible && // Allow empty globs.
|
||||
!max_vis.get().is_at_least(directive.vis.get(), &*self) {
|
||||
let msg = "A non-empty glob must import something with the glob's visibility";
|
||||
self.r.session.span_err(directive.span, msg);
|
||||
let msg =
|
||||
"glob import doesn't reexport anything because no candidate is public enough";
|
||||
self.r.session.buffer_lint(UNUSED_IMPORTS, directive.id, directive.span, msg);
|
||||
}
|
||||
return None;
|
||||
}
|
||||
|
@ -1,16 +1,21 @@
|
||||
#![warn(unused_imports)]
|
||||
|
||||
mod a {
|
||||
fn foo() {}
|
||||
mod foo {}
|
||||
|
||||
mod a {
|
||||
pub use super::foo; //~ ERROR cannot be re-exported
|
||||
pub use super::*; //~ ERROR must import something with the glob's visibility
|
||||
pub use super::*;
|
||||
//~^ WARNING glob import doesn't reexport anything because no candidate is public enough
|
||||
}
|
||||
}
|
||||
|
||||
mod b {
|
||||
pub fn foo() {}
|
||||
mod foo { pub struct S; }
|
||||
mod foo {
|
||||
pub struct S;
|
||||
}
|
||||
|
||||
pub mod a {
|
||||
pub use super::foo; // This is OK since the value `foo` is visible enough.
|
||||
|
@ -1,34 +1,40 @@
|
||||
error[E0364]: `foo` is private, and cannot be re-exported
|
||||
--> $DIR/reexports.rs:6:17
|
||||
--> $DIR/reexports.rs:10:17
|
||||
|
|
||||
LL | pub use super::foo;
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
note: consider marking `foo` as `pub` in the imported module
|
||||
--> $DIR/reexports.rs:6:17
|
||||
--> $DIR/reexports.rs:10:17
|
||||
|
|
||||
LL | pub use super::foo;
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: A non-empty glob must import something with the glob's visibility
|
||||
--> $DIR/reexports.rs:7:17
|
||||
|
|
||||
LL | pub use super::*;
|
||||
| ^^^^^^^^
|
||||
|
||||
error[E0603]: module `foo` is private
|
||||
--> $DIR/reexports.rs:28:15
|
||||
--> $DIR/reexports.rs:35:15
|
||||
|
|
||||
LL | use b::a::foo::S;
|
||||
| ^^^
|
||||
|
||||
error[E0603]: module `foo` is private
|
||||
--> $DIR/reexports.rs:29:15
|
||||
--> $DIR/reexports.rs:36:15
|
||||
|
|
||||
LL | use b::b::foo::S as T;
|
||||
| ^^^
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
warning: this glob doesn't reexport anything because no canditate is public enough
|
||||
--> $DIR/reexports.rs:11:17
|
||||
|
|
||||
LL | pub use super::*;
|
||||
| ^^^^^^^^
|
||||
|
|
||||
note: lint level defined here
|
||||
--> $DIR/reexports.rs:1:9
|
||||
|
|
||||
LL | #![warn(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0364, E0603.
|
||||
For more information about an error, try `rustc --explain E0364`.
|
||||
|
Loading…
Reference in New Issue
Block a user