Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions compiler/rustc_middle/src/hir/map/collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,14 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {

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> {
Expand Down
7 changes: 7 additions & 0 deletions compiler/rustc_passes/src/hir_id_validator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,13 @@ impl<'a, 'hir> intravisit::Visitor<'hir> for HirIdValidator<'a, 'hir> {
// 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),
Expand Down
12 changes: 12 additions & 0 deletions src/test/ui/foreign/foreign-pub-super.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Test for #79487
// check-pass

#![allow(dead_code)]

mod sha2 {
extern "C" {
pub(super) fn GFp_sha512_block_data_order();
}
}

fn main() {}