@@ -948,14 +948,30 @@ impl<'c, 'b, 'a: 'b+'c, 'gcx, 'tcx: 'a> MirBorrowckCtxt<'c, 'b, 'a, 'gcx, 'tcx>
948948 let mut err = match ( loan1. kind , "immutable" , "mutable" ,
949949 loan2. kind , "immutable" , "mutable" ) {
950950 ( BorrowKind :: Shared , lft, _, BorrowKind :: Mut , _, rgt) |
951- ( BorrowKind :: Mut , _, lft, BorrowKind :: Shared , rgt, _) |
952- ( BorrowKind :: Mut , _, lft, BorrowKind :: Mut , _, rgt) =>
951+ ( BorrowKind :: Mut , _, lft, BorrowKind :: Shared , rgt, _) =>
953952 self . tcx . cannot_reborrow_already_borrowed (
954953 span, & self . describe_lvalue ( lvalue) ,
955954 "" , lft, "it" , rgt, "" , Origin :: Mir ) ,
956955
957- _ => self . tcx . cannot_mutably_borrow_multiply (
958- span, & self . describe_lvalue ( lvalue) , "" , Origin :: Mir ) ,
956+ ( BorrowKind :: Mut , _, _, BorrowKind :: Mut , _, _) =>
957+ self . tcx . cannot_mutably_borrow_multiply (
958+ span, & self . describe_lvalue ( lvalue) , "" , Origin :: Mir ) ,
959+
960+ ( BorrowKind :: Unique , _, _, BorrowKind :: Unique , _, _) =>
961+ self . tcx . cannot_uniquely_borrow_by_two_closures (
962+ span, & self . describe_lvalue ( lvalue) , Origin :: Mir ) ,
963+
964+ ( BorrowKind :: Unique , _, _, _, _, _) =>
965+ self . tcx . cannot_uniquely_borrow_by_one_closure (
966+ span, & self . describe_lvalue ( lvalue) , "it" , "" , Origin :: Mir ) ,
967+
968+ ( _, _, _, BorrowKind :: Unique , _, _) =>
969+ self . tcx . cannot_reborrow_already_uniquely_borrowed (
970+ span, & self . describe_lvalue ( lvalue) , "it" , "" , Origin :: Mir ) ,
971+
972+ ( BorrowKind :: Shared , _, _, BorrowKind :: Shared , _, _) =>
973+ unreachable ! ( ) ,
974+
959975 // FIXME: add span labels for first and second mutable borrows, as well as
960976 // end point for first.
961977 } ;
0 commit comments