implement point_at_index_if_possible
This commit is contained in:
parent
1d4ddab1bf
commit
06f89b7924
1 changed files with 17 additions and 11 deletions
|
@ -2649,17 +2649,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
// two-phase not needed because index_ty is never mutable
|
// two-phase not needed because index_ty is never mutable
|
||||||
self.demand_coerce(idx, idx_t, index_ty, None, AllowTwoPhase::No);
|
self.demand_coerce(idx, idx_t, index_ty, None, AllowTwoPhase::No);
|
||||||
self.select_obligations_where_possible(false, |errors| {
|
self.select_obligations_where_possible(false, |errors| {
|
||||||
for error in errors {
|
self.point_at_index_if_possible(errors, idx.span)
|
||||||
match error.obligation.predicate.kind().skip_binder() {
|
|
||||||
ty::PredicateKind::Trait(predicate)
|
|
||||||
if self.tcx.is_diagnostic_item(
|
|
||||||
sym::SliceIndex,
|
|
||||||
predicate.trait_ref.def_id,
|
|
||||||
) => {}
|
|
||||||
_ => continue,
|
|
||||||
}
|
|
||||||
error.obligation.cause.span = idx.span;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
element_ty
|
element_ty
|
||||||
}
|
}
|
||||||
|
@ -2704,6 +2694,22 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn point_at_index_if_possible(
|
||||||
|
&self,
|
||||||
|
errors: &mut Vec<traits::FulfillmentError<'tcx>>,
|
||||||
|
span: Span,
|
||||||
|
) {
|
||||||
|
for error in errors {
|
||||||
|
match error.obligation.predicate.kind().skip_binder() {
|
||||||
|
ty::PredicateKind::Trait(predicate)
|
||||||
|
if self.tcx.is_diagnostic_item(sym::SliceIndex, predicate.trait_ref.def_id) => {
|
||||||
|
}
|
||||||
|
_ => continue,
|
||||||
|
}
|
||||||
|
error.obligation.cause.span = span;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn check_expr_yield(
|
fn check_expr_yield(
|
||||||
&self,
|
&self,
|
||||||
value: &'tcx hir::Expr<'tcx>,
|
value: &'tcx hir::Expr<'tcx>,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue