about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2018-01-03 14:22:38 -0800
committerEsteban Küber <esteban@kuber.com.ar>2018-01-15 07:04:38 -0800
commitc31c60cbb9ceb75402240bfe1adc9c2b48a29aa0 (patch)
tree4b678c7fcf172d79b0cfd2a39c0992dea67aadd3
parent846042161c17bcc696715b3dfe2e6c4970da0b34 (diff)
downloadrust-c31c60cbb9ceb75402240bfe1adc9c2b48a29aa0.tar.gz
rust-c31c60cbb9ceb75402240bfe1adc9c2b48a29aa0.zip
Reword diagnostic
-rw-r--r--src/librustc/infer/error_reporting/mod.rs16
-rw-r--r--src/test/ui/borrowck/issue-45983.stderr6
2 files changed, 9 insertions, 13 deletions
diff --git a/src/librustc/infer/error_reporting/mod.rs b/src/librustc/infer/error_reporting/mod.rs
index 3cd7c5e0af3..cdb90c7ba7e 100644
--- a/src/librustc/infer/error_reporting/mod.rs
+++ b/src/librustc/infer/error_reporting/mod.rs
@@ -1071,7 +1071,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
         // #45983: when trying to assign the contents of an argument to a binding outside of a
         // closure, provide a specific message pointing this out.
         if let (&SubregionOrigin::BindingTypeIsNotValidAtDecl(ref external_span),
-                &SubregionOrigin::Subtype(TypeTrace { ref cause, .. }),
+                &SubregionOrigin::Subtype(_),
                 &RegionKind::ReFree(ref free_region)) = (&sub_origin, &sup_origin, sup_region) {
             let hir = &self.tcx.hir;
             if let Some(node_id) = hir.as_local_node_id(free_region.scope) {
@@ -1084,15 +1084,11 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
                         let mut err = self.tcx.sess.struct_span_err(
                             sp,
                             "borrowed data cannot be moved outside of its closure");
-                        let label = match cause.code {
-                            ObligationCauseCode::ExprAssignable => {
-                                "cannot be assigned to binding outside of its closure"
-                            }
-                            _ => "cannot be moved outside of its closure",
-                        };
-                        err.span_label(sp, label);
-                        err.span_label(*closure_span, "closure you can't escape");
-                        err.span_label(*external_span, "binding declared outside of closure");
+                        err.span_label(sp, "cannot be moved outside of its closure");
+                        err.span_label(*external_span,
+                                       "borrowed data cannot be moved into here...");
+                        err.span_label(*closure_span,
+                                       "...because it cannot outlive this closure");
                         err.emit();
                         return;
                     }
diff --git a/src/test/ui/borrowck/issue-45983.stderr b/src/test/ui/borrowck/issue-45983.stderr
index 689fe6053c9..cbc4a557be9 100644
--- a/src/test/ui/borrowck/issue-45983.stderr
+++ b/src/test/ui/borrowck/issue-45983.stderr
@@ -2,11 +2,11 @@ error: borrowed data cannot be moved outside of its closure
   --> $DIR/issue-45983.rs:17:27
    |
 16 |     let x = None;
-   |         - binding declared outside of closure
+   |         - borrowed data cannot be moved into here...
 17 |     give_any(|y| x = Some(y));
-   |              ---          ^ cannot be assigned to binding outside of its closure
+   |              ---          ^ cannot be moved outside of its closure
    |              |
-   |              closure you can't escape
+   |              ...because it cannot outlive this closure
 
 error: aborting due to previous error