Similarly to what is done for ImplItemRef and TraitItemRef.
Fixes #79487
self.visit_nested_impl_item(id);
}
+
+ fn visit_foreign_item_ref(&mut self, fi: &'hir ForeignItemRef<'hir>) {
+ // Do not visit the duplicate information in ForeignItemRef. We want to
+ // map the actual nodes, not the duplicate ones in the *Ref.
+ let ForeignItemRef { id, ident: _, span: _, vis: _ } = *fi;
+
+ self.visit_nested_foreign_item(id);
+ }
}
struct HirItemLike<T> {
// different owner.
}
+ fn visit_foreign_item_ref(&mut self, _: &'hir hir::ForeignItemRef<'hir>) {
+ // Explicitly do nothing here. ForeignItemRefs contain hir::Visibility
+ // values that actually belong to an ForeignItem instead of the ItemKind::ForeignMod
+ // we are currently in. So for those it's correct that they have a
+ // different owner.
+ }
+
fn visit_generic_param(&mut self, param: &'hir hir::GenericParam<'hir>) {
if let hir::GenericParamKind::Type {
synthetic: Some(hir::SyntheticTyParamKind::ImplTrait),
--- /dev/null
+// Test for #79487
+// check-pass
+
+#![allow(dead_code)]
+
+mod sha2 {
+ extern "C" {
+ pub(super) fn GFp_sha512_block_data_order();
+ }
+}
+
+fn main() {}