diff options
| author | bors <bors@rust-lang.org> | 2023-12-20 11:13:22 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-12-20 11:13:22 +0000 |
| commit | f9d52dc594d08c10a75aff9be38a33e484ac3a58 (patch) | |
| tree | 35e16957999e57dd899ef433e649743879e99f64 /compiler/rustc_resolve/src | |
| parent | 3e4a15ea067e14da83ed5dedfb64cae7a30684e9 (diff) | |
| parent | 7571f6f685d1d4f021ebfd0047ffb2531663652a (diff) | |
| download | rust-f9d52dc594d08c10a75aff9be38a33e484ac3a58.tar.gz rust-f9d52dc594d08c10a75aff9be38a33e484ac3a58.zip | |
Auto merge of #119134 - petrochenkov:feedvis2, r=compiler-errors
resolve: Feed visibilities for unresolved trait impl items Fixes https://github.com/rust-lang/rust/issues/119073
Diffstat (limited to 'compiler/rustc_resolve/src')
| -rw-r--r-- | compiler/rustc_resolve/src/late.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs index 037179350f0..cf50f630bf2 100644 --- a/compiler/rustc_resolve/src/late.rs +++ b/compiler/rustc_resolve/src/late.rs @@ -3078,17 +3078,25 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> { binding = self.r.resolution(module, key).try_borrow().ok().and_then(|r| r.binding); debug!(?binding); } + + let feed_visibility = |this: &mut Self, def_id| { + let vis = this.r.tcx.visibility(def_id).expect_local(); + this.r.feed_visibility(this.r.local_def_id(id), vis); + }; + let Some(binding) = binding else { // We could not find the method: report an error. let candidate = self.find_similarly_named_assoc_item(ident.name, kind); let path = &self.current_trait_ref.as_ref().unwrap().1.path; let path_names = path_names_to_string(path); self.report_error(span, err(ident, path_names, candidate)); + feed_visibility(self, module.def_id()); return; }; let res = binding.res(); let Res::Def(def_kind, id_in_trait) = res else { bug!() }; + feed_visibility(self, id_in_trait); match seen_trait_items.entry(id_in_trait) { Entry::Occupied(entry) => { @@ -3112,8 +3120,6 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> { | (DefKind::AssocFn, AssocItemKind::Fn(..)) | (DefKind::AssocConst, AssocItemKind::Const(..)) => { self.r.record_partial_res(id, PartialRes::new(res)); - let vis = self.r.tcx.visibility(id_in_trait).expect_local(); - self.r.feed_visibility(self.r.local_def_id(id), vis); return; } _ => {} |
