diff options
| author | bors <bors@rust-lang.org> | 2022-11-08 19:35:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-11-08 19:35:08 +0000 |
| commit | 85f4f41deb1557ca8ab228319d33003dd2f20f45 (patch) | |
| tree | b7604f9fd3635321f3ecabf75f3d4c180e68fbcb /compiler/rustc_middle | |
| parent | c5842b0be783dffa5a49693541acb79115c7eeef (diff) | |
| parent | 91d5a32bc59c50af762928da5a02b024b36c1891 (diff) | |
| download | rust-85f4f41deb1557ca8ab228319d33003dd2f20f45.tar.gz rust-85f4f41deb1557ca8ab228319d33003dd2f20f45.zip | |
Auto merge of #103252 - lcnr:recompute_applicable_impls, r=jackh726
selection failure: recompute applicable impls The way we currently skip errors for ambiguous trait obligations seems pretty fragile so we get some duplicate errors because of this. Removing this info from selection errors changes this system to be closer to my image of our new trait solver and is also making it far easier to change overflow errors to be non-fatal :sparkles: r? types cc `@estebank`
Diffstat (limited to 'compiler/rustc_middle')
| -rw-r--r-- | compiler/rustc_middle/src/traits/mod.rs | 3 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/ty/mod.rs | 8 |
2 files changed, 4 insertions, 7 deletions
diff --git a/compiler/rustc_middle/src/traits/mod.rs b/compiler/rustc_middle/src/traits/mod.rs index a29f0722ff7..05382bd887c 100644 --- a/compiler/rustc_middle/src/traits/mod.rs +++ b/compiler/rustc_middle/src/traits/mod.rs @@ -576,9 +576,6 @@ pub enum SelectionError<'tcx> { /// Signaling that an error has already been emitted, to avoid /// multiple errors being shown. ErrorReporting, - /// Multiple applicable `impl`s where found. The `DefId`s correspond to - /// all the `impl`s' Items. - Ambiguous(Vec<DefId>), } /// When performing resolution, it is typically the case that there diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index 27090c62d21..b509ae6dd3b 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -2550,11 +2550,11 @@ impl<'tcx> TyCtxt<'tcx> { /// Looks up the span of `impl_did` if the impl is local; otherwise returns `Err` /// with the name of the crate containing the impl. - pub fn span_of_impl(self, impl_did: DefId) -> Result<Span, Symbol> { - if let Some(impl_did) = impl_did.as_local() { - Ok(self.def_span(impl_did)) + pub fn span_of_impl(self, impl_def_id: DefId) -> Result<Span, Symbol> { + if let Some(impl_def_id) = impl_def_id.as_local() { + Ok(self.def_span(impl_def_id)) } else { - Err(self.crate_name(impl_did.krate)) + Err(self.crate_name(impl_def_id.krate)) } } |
