Rollup merge of #64043 - matthewjasper:underscore-import-tests, r=alexcrichton

Add some more tests for underscore imports
This commit is contained in:
Mazdak Farrokhzad 2019-09-05 03:59:42 +02:00 committed by GitHub
commit fe1c1f8c36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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`.