resolve: Reject some inaccessible candidates sooner during import resolution
This allows import resolution to progress in cases like #53140
This commit is contained in:
parent
3ac79c7184
commit
7b47fd793f
@ -296,6 +296,8 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> {
|
||||
};
|
||||
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),
|
||||
}
|
||||
}
|
||||
@ -365,8 +367,11 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> {
|
||||
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),
|
||||
}
|
||||
}
|
||||
|
21
src/test/ui/imports/issue-53140.rs
Normal file
21
src/test/ui/imports/issue-53140.rs
Normal file
@ -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 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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() {}
|
Loading…
Reference in New Issue
Block a user