]> git.lizzy.rs Git - rust.git/commitdiff
mir-borrowck: Move span_label calls for `cannot_use_when_mutably_borrowed()` inside...
authorBasile Desloges <basile.desloges@gmail.com>
Thu, 28 Sep 2017 14:45:09 +0000 (16:45 +0200)
committerBasile Desloges <basile.desloges@gmail.com>
Fri, 29 Sep 2017 13:41:26 +0000 (15:41 +0200)
src/librustc_borrowck/borrowck/check_loans.rs
src/librustc_mir/borrow_check.rs
src/librustc_mir/util/borrowck_errors.rs

index 0036a74c861dfe94d8c086238320cbc472375086..834bde660a83347466eb0ed5e4118986ee7ac1c4 100644 (file)
@@ -640,14 +640,10 @@ fn check_for_copy_of_frozen_path(&self,
             UseOk => { }
             UseWhileBorrowed(loan_path, loan_span) => {
                 let desc = self.bccx.loan_path_to_string(copy_path);
-                self.bccx.cannot_use_when_mutably_borrowed(span, &desc, Origin::Ast)
-                    .span_label(loan_span,
-                               format!("borrow of `{}` occurs here",
-                                       &self.bccx.loan_path_to_string(&loan_path))
-                               )
-                    .span_label(span,
-                               format!("use of borrowed `{}`",
-                                        &self.bccx.loan_path_to_string(&loan_path)))
+                self.bccx.cannot_use_when_mutably_borrowed(
+                        span, &desc,
+                        loan_span, &self.bccx.loan_path_to_string(&loan_path),
+                        Origin::Ast)
                     .emit();
             }
         }
index d2ab00a46c79b9be993c5ca8a022fb3052614fa1..b38df4416e8ac810cc204f31279f6fa704ae9b5d 100644 (file)
@@ -931,14 +931,11 @@ fn report_use_while_mutably_borrowed(&mut self,
                                          _context: Context,
                                          (lvalue, span): (&Lvalue, Span),
                                          borrow : &BorrowData) {
-        let described_lvalue = self.describe_lvalue(lvalue);
-        let borrow_span = self.retrieve_borrow_span(borrow);
 
         let mut err = self.tcx.cannot_use_when_mutably_borrowed(
-            span, &described_lvalue, Origin::Mir);
-
-        err.span_label(borrow_span, format!("borrow of `{}` occurs here", described_lvalue));
-        err.span_label(span, format!("use of borrowed `{}`", described_lvalue));
+            span, &self.describe_lvalue(lvalue),
+            self.retrieve_borrow_span(borrow), &self.describe_lvalue(&borrow.lvalue),
+            Origin::Mir);
 
         err.emit();
     }
index 7aec361e892c09b9c26541e344d5cc05c5e4455b..3b96ac3f2e7c1da034f1f672930f29bb61fbd7b0 100644 (file)
@@ -57,12 +57,22 @@ fn cannot_move_when_borrowed(&self, span: Span, desc: &str, o: Origin)
                          desc, OGN=o)
     }
 
-    fn cannot_use_when_mutably_borrowed(&self, span: Span, desc: &str, o: Origin)
+    fn cannot_use_when_mutably_borrowed(&self,
+                                        span: Span,
+                                        desc: &str,
+                                        borrow_span: Span,
+                                        borrow_desc: &str,
+                                        o: Origin)
                                         -> DiagnosticBuilder
     {
-        struct_span_err!(self, span, E0503,
+        let mut err = struct_span_err!(self, span, E0503,
                          "cannot use `{}` because it was mutably borrowed{OGN}",
-                         desc, OGN=o)
+                         desc, OGN=o);
+
+        err.span_label(borrow_span, format!("borrow of `{}` occurs here", borrow_desc));
+        err.span_label(span, format!("use of borrowed `{}`", borrow_desc));
+
+        err
     }
 
     fn cannot_act_on_uninitialized_variable(&self,