Skip to content

Commit d201e27

Browse files
committed
review comments
1 parent 4be51c8 commit d201e27

File tree

1 file changed

+19
-20
lines changed
  • src/librustc_typeck/check

1 file changed

+19
-20
lines changed

src/librustc_typeck/check/mod.rs

+19-20
Original file line numberDiff line numberDiff line change
@@ -3481,31 +3481,30 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
34813481
errors: &mut Vec<traits::FulfillmentError<'_>>,
34823482
call_expr: &'tcx hir::Expr,
34833483
) {
3484-
if let hir::ExprKind::Call(path, _args) = &call_expr.node {
3484+
if let hir::ExprKind::Call(path, _) = &call_expr.node {
34853485
if let hir::ExprKind::Path(qpath) = &path.node {
3486-
if let hir::QPath::Resolved(_self, path) = &qpath {
3486+
if let hir::QPath::Resolved(_, path) = &qpath {
34873487
for error in errors {
34883488
if let ty::Predicate::Trait(predicate) = error.obligation.predicate {
34893489
// If any of the type arguments in this path segment caused the
34903490
// `FullfillmentError`, point at its span (#61860).
3491-
for segment in &path.segments {
3492-
if let Some(args) = &segment.args {
3493-
for arg in &args.args {
3494-
if let hir::GenericArg::Type(hir_ty) = &arg {
3495-
if let hir::TyKind::Path(
3496-
hir::QPath::TypeRelative(..),
3497-
) = &hir_ty.node {
3498-
// Avoid ICE with associated types. As this is best
3499-
// effort only, it's ok to ignore the case. It
3500-
// would trigger in `is_send::<T::AssocType>();`
3501-
// from `typeck-default-trait-impl-assoc-type.rs`.
3502-
} else {
3503-
let ty = AstConv::ast_ty_to_ty(self, hir_ty);
3504-
let ty = self.resolve_vars_if_possible(&ty);
3505-
if ty == predicate.skip_binder().self_ty() {
3506-
error.obligation.cause.span = hir_ty.span;
3507-
}
3508-
}
3491+
for arg in path.segments.iter()
3492+
.filter_map(|seg| seg.args.as_ref())
3493+
.flat_map(|a| a.args.iter())
3494+
{
3495+
if let hir::GenericArg::Type(hir_ty) = &arg {
3496+
if let hir::TyKind::Path(
3497+
hir::QPath::TypeRelative(..),
3498+
) = &hir_ty.node {
3499+
// Avoid ICE with associated types. As this is best
3500+
// effort only, it's ok to ignore the case. It
3501+
// would trigger in `is_send::<T::AssocType>();`
3502+
// from `typeck-default-trait-impl-assoc-type.rs`.
3503+
} else {
3504+
let ty = AstConv::ast_ty_to_ty(self, hir_ty);
3505+
let ty = self.resolve_vars_if_possible(&ty);
3506+
if ty == predicate.skip_binder().self_ty() {
3507+
error.obligation.cause.span = hir_ty.span;
35093508
}
35103509
}
35113510
}

0 commit comments

Comments
 (0)