2019-11-03 18:00:00 -06:00
|
|
|
// check-pass
|
2019-04-30 08:59:29 -05:00
|
|
|
|
|
|
|
#![warn(unused_imports)] // Warning explanation here, it's OK
|
|
|
|
|
|
|
|
mod test {
|
|
|
|
pub trait A {
|
|
|
|
fn a();
|
|
|
|
}
|
|
|
|
|
|
|
|
impl A for () {
|
|
|
|
fn a() { }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub trait B {
|
|
|
|
fn b(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
impl B for () {
|
|
|
|
fn b(self) { }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub trait Unused {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
use test::Unused; // This is really unused, so warning is OK
|
2019-11-05 18:00:00 -06:00
|
|
|
//~^ WARNING unused import
|
2019-04-30 08:59:29 -05:00
|
|
|
use test::A; // This is used by the test2::func() through import of super::*
|
|
|
|
use test::B; // This is used by the test2::func() through import of super::*
|
|
|
|
|
|
|
|
mod test2 {
|
|
|
|
use super::*;
|
|
|
|
pub fn func() {
|
|
|
|
let _ = <()>::a();
|
|
|
|
let _ = ().b();
|
|
|
|
test3::inner_func();
|
|
|
|
}
|
|
|
|
mod test3 {
|
2019-05-01 08:17:43 -05:00
|
|
|
use super::*;
|
|
|
|
pub fn inner_func() {
|
|
|
|
let _ = <()>::a();
|
|
|
|
let _ = ().b();
|
|
|
|
}
|
2019-04-30 08:59:29 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
test2::func();
|
|
|
|
}
|