Add some more tests for underscore imports

This commit is contained in:
Matthew Jasper 2019-08-31 16:31:50 +01:00
parent b3146549ab
commit 754a875e15
11 changed files with 54 additions and 0 deletions

View file

@ -0,0 +1,18 @@
// Check that cyclic glob imports are allowed with underscore imports
// check-pass
mod x {
pub use crate::y::*;
pub use std::ops::Deref as _;
}
mod y {
pub use crate::x::*;
pub use std::ops::Deref as _;
}
pub fn main() {
use x::*;
(&0).deref();
}

View file

@ -0,0 +1,23 @@
// Check that underscore imports don't cause glob imports to be unshadowed
mod a {
pub use std::ops::Deref as Shadow;
}
mod b {
pub use crate::a::*;
macro_rules! m {
($i:ident) => { pub struct $i; }
}
m!(Shadow);
}
mod c {
use crate::b::Shadow as _; // Only imports the struct
fn f(x: &()) {
x.deref(); //~ ERROR no method named `deref` found
}
}
fn main() {}

View file

@ -0,0 +1,13 @@
error[E0599]: no method named `deref` found for type `&()` in the current scope
--> $DIR/shadow.rs:19:11
|
LL | x.deref();
| ^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a `use` for it:
`use std::ops::Deref;`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0599`.