Add some extra information to opaque type cycle errors
This commit is contained in:
parent
66ae9998d5
commit
9e98feb84c
16 changed files with 421 additions and 24 deletions
|
@ -67,7 +67,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
}
|
||||
|
||||
AutoImplCandidate => {
|
||||
let data = self.confirm_auto_impl_candidate(obligation);
|
||||
let data = self.confirm_auto_impl_candidate(obligation)?;
|
||||
ImplSource::Builtin(data)
|
||||
}
|
||||
|
||||
|
@ -376,12 +376,12 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
fn confirm_auto_impl_candidate(
|
||||
&mut self,
|
||||
obligation: &TraitObligation<'tcx>,
|
||||
) -> Vec<PredicateObligation<'tcx>> {
|
||||
) -> Result<Vec<PredicateObligation<'tcx>>, SelectionError<'tcx>> {
|
||||
debug!(?obligation, "confirm_auto_impl_candidate");
|
||||
|
||||
let self_ty = self.infcx.shallow_resolve(obligation.predicate.self_ty());
|
||||
let types = self.constituent_types_for_ty(self_ty);
|
||||
self.vtable_auto_impl(obligation, obligation.predicate.def_id(), types)
|
||||
let types = self.constituent_types_for_ty(self_ty)?;
|
||||
Ok(self.vtable_auto_impl(obligation, obligation.predicate.def_id(), types))
|
||||
}
|
||||
|
||||
/// See `confirm_auto_impl_candidate`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue