]> git.lizzy.rs Git - rust.git/commitdiff
Update closure errors to emit context for FnMut
authorTommy Ip <hkmp7tommy@gmail.com>
Tue, 6 Jun 2017 08:06:56 +0000 (09:06 +0100)
committerTommy Ip <hkmp7tommy@gmail.com>
Tue, 6 Jun 2017 08:06:56 +0000 (09:06 +0100)
It now handles both FnMut and FnOnce case.

src/librustc/traits/error_reporting.rs

index e29e4786671bf01ddcb86038165a3e874308b093..73753382a7cd7e0735d0bfaedd90a1c9725090d0 100644 (file)
@@ -657,13 +657,18 @@ pub fn report_selection_error(&self,
                         };
 
                         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(