Skip to content

Commit

Permalink
Ensure unboxed closure upvars are marked as used mutably
Browse files Browse the repository at this point in the history
Closes #18336
  • Loading branch information
bkoropoff committed Oct 26, 2014
1 parent f168c12 commit 2877e47
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/librustc/middle/borrowck/check_loans.rs
Expand Up @@ -825,12 +825,20 @@ impl<'a, 'tcx> CheckLoanCtxt<'a, 'tcx> {
mc::cat_rvalue(..) |
mc::cat_static_item |
mc::cat_deref(_, _, mc::UnsafePtr(..)) |
mc::cat_deref(_, _, mc::BorrowedPtr(..)) |
mc::cat_deref(_, _, mc::Implicit(..)) => {
assert_eq!(cmt.mutbl, mc::McDeclared);
return;
}

mc::cat_deref(_, _, mc::BorrowedPtr(..)) => {
assert_eq!(cmt.mutbl, mc::McDeclared);
// We need to drill down to upvar if applicable
match cmt.upvar() {
Some(b) => cmt = b,
None => return
}
}

mc::cat_discr(b, _) |
mc::cat_deref(b, _, mc::OwnedPtr) => {
assert_eq!(cmt.mutbl, mc::McInherited);
Expand Down

0 comments on commit 2877e47

Please sign in to comment.