diff --git a/src/librustc/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs index 31c8cb25c521..1bbd24de6ae4 100644 --- a/src/librustc/traits/error_reporting.rs +++ b/src/librustc/traits/error_reporting.rs @@ -914,11 +914,16 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { new_trait_ref.to_predicate()); if selcx.evaluate_obligation(&new_obligation) { - let remove_refs = refs_remaining + 1; + let mut remove_refs = refs_remaining + 1; let suggest_snippet = snippet.chars() - .filter(|c| !c.is_whitespace()) - .skip(remove_refs) + .skip_while(|c| c.is_whitespace() || { + if *c == '&' && remove_refs > 0 { + true + } else { + false + } + }) .collect::(); err.span_suggestion(span,