diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index acdb7c4d4edf..afeb8c122bb7 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -203,6 +203,8 @@ impl<'a> Resolver<'a> { }; match self.resolve_ident_in_module(module, ident, ns, false, path_span) { Err(Determined) => continue, + Ok(binding) + if !self.is_accessible_from(binding.vis, single_import.parent) => continue, Ok(_) | Err(Undetermined) => return Err(Undetermined), } } @@ -255,8 +257,11 @@ impl<'a> Resolver<'a> { module, ident, ns, false, false, path_span, ); self.current_module = orig_current_module; + match result { Err(Determined) => continue, + Ok(binding) + if !self.is_accessible_from(binding.vis, glob_import.parent) => continue, Ok(_) | Err(Undetermined) => return Err(Undetermined), } } diff --git a/src/test/ui/imports/issue-53140.rs b/src/test/ui/imports/issue-53140.rs new file mode 100644 index 000000000000..dcfa054f2513 --- /dev/null +++ b/src/test/ui/imports/issue-53140.rs @@ -0,0 +1,21 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// compile-pass + +mod m { + pub struct S(u8); + + use S as Z; +} + +use m::*; + +fn main() {}