about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan Turner <jonathandturner@users.noreply.github.com>2016-08-11 06:33:59 -0700
committerGitHub <noreply@github.com>2016-08-11 06:33:59 -0700
commitc7513d79a1046df028a458e011d27c86de6fc8e2 (patch)
tree7e2b8586697b5796f4fe4e2c55607f0c4b4c7d73
parent02834435226768257f7f71b416c6a347fc6e1613 (diff)
parentaa40ec7f1155dc63bac19d218a56aec8109ac8e2 (diff)
downloadrust-c7513d79a1046df028a458e011d27c86de6fc8e2.tar.gz
rust-c7513d79a1046df028a458e011d27c86de6fc8e2.zip
Rollup merge of #35530 - srdja:master, r=jonathandturner
Update E0008 and E0007 to new format

Part of #35233
A fix for #35496

r? @jonathandturner
-rw-r--r--src/librustc_const_eval/check_match.rs10
-rw-r--r--src/test/compile-fail/E0007.rs6
-rw-r--r--src/test/compile-fail/E0008.rs4
3 files changed, 15 insertions, 5 deletions
diff --git a/src/librustc_const_eval/check_match.rs b/src/librustc_const_eval/check_match.rs
index 366b58e06c4..b34949d7a4f 100644
--- a/src/librustc_const_eval/check_match.rs
+++ b/src/librustc_const_eval/check_match.rs
@@ -1115,9 +1115,15 @@ fn check_legality_of_move_bindings(cx: &MatchCheckCtxt,
 
         // x @ Foo(..) is legal, but x @ Foo(y) isn't.
         if sub.map_or(false, |p| pat_contains_bindings(&p)) {
-            span_err!(cx.tcx.sess, p.span, E0007, "cannot bind by-move with sub-bindings");
+            struct_span_err!(cx.tcx.sess, p.span, E0007,
+                             "cannot bind by-move with sub-bindings")
+                .span_label(p.span, &format!("binds an already bound by-move value by moving it"))
+                .emit();
         } else if has_guard {
-            span_err!(cx.tcx.sess, p.span, E0008, "cannot bind by-move into a pattern guard");
+            struct_span_err!(cx.tcx.sess, p.span, E0008,
+                      "cannot bind by-move into a pattern guard")
+                .span_label(p.span, &format!("moves value into pattern guard"))
+                .emit();
         } else if by_ref_span.is_some() {
             let mut err = struct_span_err!(cx.tcx.sess, p.span, E0009,
                                            "cannot bind by-move and by-ref in the same pattern");
diff --git a/src/test/compile-fail/E0007.rs b/src/test/compile-fail/E0007.rs
index bfc0f1afe3a..4be115b8afd 100644
--- a/src/test/compile-fail/E0007.rs
+++ b/src/test/compile-fail/E0007.rs
@@ -11,8 +11,10 @@
 fn main() {
     let x = Some("s".to_string());
     match x {
-        op_string @ Some(s) => {}, //~ ERROR E0007
-                                   //~| ERROR E0303
+        op_string @ Some(s) => {},
+        //~^ ERROR E0007
+        //~| NOTE binds an already bound by-move value by moving it
+        //~| ERROR E0303
         None => {},
     }
 }
diff --git a/src/test/compile-fail/E0008.rs b/src/test/compile-fail/E0008.rs
index 97dd0f368bd..20cc1cbd223 100644
--- a/src/test/compile-fail/E0008.rs
+++ b/src/test/compile-fail/E0008.rs
@@ -10,7 +10,9 @@
 
 fn main() {
     match Some("hi".to_string()) {
-        Some(s) if s.len() == 0 => {}, //~ ERROR E0008
+        Some(s) if s.len() == 0 => {},
+        //~^ ERROR E0008
+        //~| NOTE moves value into pattern guard
         _ => {},
     }
 }