未验证 提交 df137907 编写于 作者: M Mark Simulacrum 提交者: GitHub

Rollup merge of #51288 - Mark-Simulacrum:delete-is-import, r=eddyb

Remove rustdoc-specific is_import field from HIR

Fixes #47100.

I believe that there is no need to check for the name being the same, as this
part of rustdoc seems to be strictly interested in exploring "public modules."
Re-exports from the same module cannot visit another module; and, re-exports
cannot export items with a greater visibility than that item declares.
Therefore, I think this code is either sufficient, or in fact does more than
is necessary, depending on whether rustdoc cares about the re-export itself.

r? @EddyB
......@@ -134,9 +134,6 @@ pub struct Export {
/// The visibility of the export.
/// We include non-`pub` exports for hygienic macros that get used from extern crates.
pub vis: ty::Visibility,
/// True if from a `use` or and `extern crate`.
/// Used in rustdoc.
pub is_import: bool,
}
impl CtorKind {
......
......@@ -1115,8 +1115,7 @@ fn to_stable_hash_key(&self, hcx: &StableHashingContext<'a>) -> DefPathHash {
ident,
def,
vis,
span,
is_import
span
});
impl<'a> HashStable<StableHashingContext<'a>>
......
......@@ -665,7 +665,6 @@ pub fn each_child_of_item<F>(&self, id: DefIndex, mut callback: F, sess: &Sessio
def: def,
vis: ty::Visibility::Public,
span: DUMMY_SP,
is_import: false,
});
}
}
......@@ -705,7 +704,6 @@ pub fn each_child_of_item<F>(&self, id: DefIndex, mut callback: F, sess: &Sessio
ident: Ident::from_interned_str(self.item_name(child_index)),
vis: self.get_visibility(child_index),
span: self.entry(child_index).span.decode((self, sess)),
is_import: false,
});
}
}
......@@ -722,8 +720,7 @@ pub fn each_child_of_item<F>(&self, id: DefIndex, mut callback: F, sess: &Sessio
(self.get_def(child_index), def_key.disambiguated_data.data.get_opt_name()) {
let ident = Ident::from_interned_str(name);
let vis = self.get_visibility(child_index);
let is_import = false;
callback(def::Export { def, ident, vis, span, is_import });
callback(def::Export { def, ident, vis, span });
// For non-re-export structs and variants add their constructors to children.
// Re-export lists automatically contain constructors when necessary.
match def {
......@@ -734,7 +731,7 @@ pub fn each_child_of_item<F>(&self, id: DefIndex, mut callback: F, sess: &Sessio
callback(def::Export {
def: ctor_def,
vis: self.get_visibility(ctor_def_id.index),
ident, span, is_import,
ident, span,
});
}
}
......@@ -744,7 +741,7 @@ pub fn each_child_of_item<F>(&self, id: DefIndex, mut callback: F, sess: &Sessio
let ctor_kind = self.get_ctor_kind(child_index);
let ctor_def = Def::VariantCtor(def_id, ctor_kind);
let vis = self.get_visibility(child_index);
callback(def::Export { def: ctor_def, ident, vis, span, is_import });
callback(def::Export { def: ctor_def, ident, vis, span });
}
_ => {}
}
......
......@@ -803,7 +803,6 @@ pub fn define_macro(&mut self,
def: def,
vis: ty::Visibility::Public,
span: item.span,
is_import: false,
});
} else {
self.unused_macros.insert(def_id);
......
......@@ -1008,7 +1008,6 @@ fn finalize_resolutions_in(&mut self, module: Module<'b>) {
def: def,
span: binding.span,
vis: binding.vis,
is_import: true,
});
}
}
......
......@@ -68,7 +68,8 @@ pub fn visit_mod(&mut self, def_id: DefId) {
}
for item in self.cx.tcx.item_children(def_id).iter() {
if !item.is_import || item.vis == Visibility::Public {
if self.cx.tcx.def_key(item.def.def_id()).parent.map_or(false, |d| d == def_id.index) ||
item.vis == Visibility::Public {
self.visit_item(item.def);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册