Rollup merge of #119168 - petrochenkov:feedvis4, r=compiler-errors
resolve: Stop feeding visibilities for import list stems Fixes https://github.com/rust-lang/rust/issues/119126
This commit is contained in:
commit
c36bb5dbb1
@ -394,6 +394,7 @@ fn build_reduced_graph_for_use_tree(
|
||||
id: NodeId,
|
||||
parent_prefix: &[Segment],
|
||||
nested: bool,
|
||||
list_stem: bool,
|
||||
// The whole `use` item
|
||||
item: &Item,
|
||||
vis: ty::Visibility,
|
||||
@ -404,7 +405,9 @@ fn build_reduced_graph_for_use_tree(
|
||||
parent_prefix, use_tree, nested
|
||||
);
|
||||
|
||||
if nested {
|
||||
// Top level use tree reuses the item's id and list stems reuse their parent
|
||||
// use tree's ids, so in both cases their visibilities are already filled.
|
||||
if nested && !list_stem {
|
||||
self.r.feed_visibility(self.r.local_def_id(id), vis);
|
||||
}
|
||||
|
||||
@ -592,7 +595,7 @@ fn build_reduced_graph_for_use_tree(
|
||||
for &(ref tree, id) in items {
|
||||
self.build_reduced_graph_for_use_tree(
|
||||
// This particular use tree
|
||||
tree, id, &prefix, true, // The whole `use` item
|
||||
tree, id, &prefix, true, false, // The whole `use` item
|
||||
item, vis, root_span,
|
||||
);
|
||||
}
|
||||
@ -613,6 +616,7 @@ fn build_reduced_graph_for_use_tree(
|
||||
id,
|
||||
&prefix,
|
||||
true,
|
||||
true,
|
||||
// The whole `use` item
|
||||
item,
|
||||
ty::Visibility::Restricted(
|
||||
@ -648,6 +652,7 @@ fn build_reduced_graph_for_item(&mut self, item: &'b Item) {
|
||||
item.id,
|
||||
&[],
|
||||
false,
|
||||
false,
|
||||
// The whole `use` item
|
||||
item,
|
||||
vis,
|
||||
|
14
tests/ui/privacy/import-list-stem-visibility-issue-119126.rs
Normal file
14
tests/ui/privacy/import-list-stem-visibility-issue-119126.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// check-pass
|
||||
// edition: 2018
|
||||
|
||||
mod outer {
|
||||
mod inner {
|
||||
pub mod inner2 {}
|
||||
}
|
||||
pub(crate) use inner::{};
|
||||
pub(crate) use inner::{{}};
|
||||
pub(crate) use inner::{inner2::{}};
|
||||
pub(crate) use inner::{inner2::{{}}};
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user