Skip to content

Commit faf8a2a

Browse files
committed
Only suggest change mut if vars are resolved
1 parent 2c6bcac commit faf8a2a

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/librustc/traits/error_reporting.rs

+6
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,12 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
11341134
{ // Do not suggest removal of borrow from type arguments.
11351135
return;
11361136
}
1137+
let trait_ref = self.resolve_vars_if_possible(trait_ref);
1138+
if trait_ref.has_infer_types() {
1139+
// Do not ICE while trying to find if a reborrow would succeed on a trait with
1140+
// unresolved bindings.
1141+
return;
1142+
}
11371143

11381144
if let ty::Ref(region, t_type, mutability) = trait_ref.skip_binder().self_ty().kind {
11391145
let trait_type = match mutability {

src/test/ui/suggestions/suggest-remove-refs-1.stderr

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ LL | for (i, n) in &v.iter().enumerate() {
88
| help: consider removing 1 leading `&`-references
99
|
1010
= help: the trait `std::iter::Iterator` is not implemented for `&std::iter::Enumerate<std::slice::Iter<'_, {integer}>>`
11-
= note: `std::iter::Iterator` is implemented for `&mut std::iter::Enumerate<std::slice::Iter<'_, {integer}>>`, but not for `&std::iter::Enumerate<std::slice::Iter<'_, {integer}>>`
1211
= note: required by `std::iter::IntoIterator::into_iter`
1312

1413
error: aborting due to previous error

0 commit comments

Comments
 (0)