diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 325fc11fdeb7e..4d25609bfd266 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2314,7 +2314,7 @@ impl<'a> Resolver<'a> { _ => return None, }; - if path.len() == 1 || result.base_def == Def::Err { + if path.len() == 1 || result.base_def == Def::Err || global { return Some(result); } diff --git a/src/test/compile-fail/lint-qualification.rs b/src/test/compile-fail/lint-qualification.rs index af9b21dadd1d0..57c2166565f96 100644 --- a/src/test/compile-fail/lint-qualification.rs +++ b/src/test/compile-fail/lint-qualification.rs @@ -21,8 +21,9 @@ fn main() { let _ = || -> Result<(), ()> { try!(Ok(())); Ok(()) }; // issue #37345 - macro_rules! m { - () => { $crate::foo::bar(); } - } - m!(); // issue #37357 + macro_rules! m { () => { + $crate::foo::bar(); // issue #37357 + ::foo::bar(); // issue #38682 + } } + m!(); }