diff options
| author | Tommy Ip <hkmp7tommy@gmail.com> | 2017-06-06 09:06:56 +0100 |
|---|---|---|
| committer | Tommy Ip <hkmp7tommy@gmail.com> | 2017-06-06 09:06:56 +0100 |
| commit | 94c808c1d3fbf6f73b2bfdb8d6fbcad1d260fe64 (patch) | |
| tree | cb6554617f69b981eb586741fdd2c3bf45785379 | |
| parent | 9cbb5f9a245f859c94d90acebef02adbc4a807e3 (diff) | |
| download | rust-94c808c1d3fbf6f73b2bfdb8d6fbcad1d260fe64.tar.gz rust-94c808c1d3fbf6f73b2bfdb8d6fbcad1d260fe64.zip | |
Update closure errors to emit context for FnMut
It now handles both FnMut and FnOnce case.
| -rw-r--r-- | src/librustc/traits/error_reporting.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/librustc/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs index e29e4786671..73753382a7c 100644 --- a/src/librustc/traits/error_reporting.rs +++ b/src/librustc/traits/error_reporting.rs @@ -657,13 +657,18 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { }; if let Some(tables) = infer_tables { - if let Some(&(ty::ClosureKind::FnOnce, Some((span, name)))) = - tables.closure_kinds.get(&node_id) - { - err.span_note( - span, - &format!("closure is `FnOnce` because it moves the \ - variable `{}` out of its environment", name)); + match tables.closure_kinds.get(&node_id) { + Some(&(ty::ClosureKind::FnOnce, Some((span, name)))) => { + err.span_note(span, &format!( + "closure is `FnOnce` because it moves the \ + variable `{}` out of its environment", name)); + }, + Some(&(ty::ClosureKind::FnMut, Some((span, name)))) => { + err.span_note(span, &format!( + "closure is `FnMut` because it mutates the \ + variable `{}` here", name)); + }, + _ => {} } } else { err.span_note( |
