@@ -948,14 +948,30 @@ impl<'c, 'b, 'a: 'b+'c, 'gcx, 'tcx: 'a> MirBorrowckCtxt<'c, 'b, 'a, 'gcx, 'tcx>
948
948
let mut err = match ( loan1. kind , "immutable" , "mutable" ,
949
949
loan2. kind , "immutable" , "mutable" ) {
950
950
( 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, _) =>
953
952
self . tcx . cannot_reborrow_already_borrowed (
954
953
span, & self . describe_lvalue ( lvalue) ,
955
954
"" , lft, "it" , rgt, "" , Origin :: Mir ) ,
956
955
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
+
959
975
// FIXME: add span labels for first and second mutable borrows, as well as
960
976
// end point for first.
961
977
} ;
0 commit comments