Use ty_error_with_guaranteed in many more places
This commit is contained in:
parent
fdbc4329cb
commit
1e7ef03b40
16 changed files with 306 additions and 226 deletions
|
@ -1213,8 +1213,8 @@ struct Progress<'tcx> {
|
|||
}
|
||||
|
||||
impl<'tcx> Progress<'tcx> {
|
||||
fn error(tcx: TyCtxt<'tcx>) -> Self {
|
||||
Progress { term: tcx.ty_error().into(), obligations: vec![] }
|
||||
fn error(tcx: TyCtxt<'tcx>, guar: ErrorGuaranteed) -> Self {
|
||||
Progress { term: tcx.ty_error_with_guaranteed(guar).into(), obligations: vec![] }
|
||||
}
|
||||
|
||||
fn with_addl_obligations(mut self, mut obligations: Vec<PredicateObligation<'tcx>>) -> Self {
|
||||
|
@ -1240,8 +1240,8 @@ fn project<'cx, 'tcx>(
|
|||
)));
|
||||
}
|
||||
|
||||
if obligation.predicate.references_error() {
|
||||
return Ok(Projected::Progress(Progress::error(selcx.tcx())));
|
||||
if let Err(guar) = obligation.predicate.error_reported() {
|
||||
return Ok(Projected::Progress(Progress::error(selcx.tcx(), guar)));
|
||||
}
|
||||
|
||||
let mut candidates = ProjectionCandidateSet::None;
|
||||
|
@ -2097,8 +2097,9 @@ fn confirm_impl_candidate<'cx, 'tcx>(
|
|||
let trait_def_id = tcx.trait_id_of_impl(impl_def_id).unwrap();
|
||||
|
||||
let param_env = obligation.param_env;
|
||||
let Ok(assoc_ty) = specialization_graph::assoc_def(tcx, impl_def_id, assoc_item_id) else {
|
||||
return Progress { term: tcx.ty_error().into(), obligations: nested };
|
||||
let assoc_ty = match specialization_graph::assoc_def(tcx, impl_def_id, assoc_item_id) {
|
||||
Ok(assoc_ty) => assoc_ty,
|
||||
Err(guar) => return Progress::error(tcx, guar),
|
||||
};
|
||||
|
||||
if !assoc_ty.item.defaultness(tcx).has_value() {
|
||||
|
@ -2194,8 +2195,9 @@ fn confirm_impl_trait_in_trait_candidate<'tcx>(
|
|||
let mut obligations = data.nested;
|
||||
|
||||
let trait_fn_def_id = tcx.impl_trait_in_trait_parent(obligation.predicate.def_id);
|
||||
let Ok(leaf_def) = specialization_graph::assoc_def(tcx, data.impl_def_id, trait_fn_def_id) else {
|
||||
return Progress { term: tcx.ty_error().into(), obligations };
|
||||
let leaf_def = match specialization_graph::assoc_def(tcx, data.impl_def_id, trait_fn_def_id) {
|
||||
Ok(assoc_ty) => assoc_ty,
|
||||
Err(guar) => return Progress::error(tcx, guar),
|
||||
};
|
||||
if !leaf_def.item.defaultness(tcx).has_value() {
|
||||
return Progress { term: tcx.ty_error().into(), obligations };
|
||||
|
@ -2269,7 +2271,10 @@ fn confirm_impl_trait_in_trait_candidate<'tcx>(
|
|||
obligation.recursion_depth + 1,
|
||||
tcx.bound_return_position_impl_trait_in_trait_tys(impl_fn_def_id)
|
||||
.map_bound(|tys| {
|
||||
tys.map_or_else(|_| tcx.ty_error(), |tys| tys[&obligation.predicate.def_id])
|
||||
tys.map_or_else(
|
||||
|guar| tcx.ty_error_with_guaranteed(guar),
|
||||
|tys| tys[&obligation.predicate.def_id],
|
||||
)
|
||||
})
|
||||
.subst(tcx, impl_fn_substs),
|
||||
&mut obligations,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue