diff options
| author | Brian Koropoff <bkoropoff@gmail.com> | 2014-11-08 21:49:29 -0800 |
|---|---|---|
| committer | Brian Koropoff <bkoropoff@gmail.com> | 2014-11-08 21:49:29 -0800 |
| commit | fb4e618c33789da31614d1d92b7c760df5db426b (patch) | |
| tree | ef70f339e6990a3d178f44b19e31737f2a9e098e | |
| parent | 93c85eb8bdcc910a27caf6abd20207a626ae98e5 (diff) | |
Fix upvars sometimes not being marked as used mutably
Drill down the loan path for McDeclared references as well since it might lead to an upvar. Closes #18769
| -rw-r--r-- | src/librustc/middle/borrowck/gather_loans/mod.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/librustc/middle/borrowck/gather_loans/mod.rs b/src/librustc/middle/borrowck/gather_loans/mod.rs index 1a12828922c..7d893a0533a 100644 --- a/src/librustc/middle/borrowck/gather_loans/mod.rs +++ b/src/librustc/middle/borrowck/gather_loans/mod.rs @@ -395,10 +395,10 @@ impl<'a, 'tcx> GatherLoanCtxt<'a, 'tcx> { LpUpvar(ty::UpvarId{ var_id: local_id, closure_expr_id: _ }) => { self.tcx().used_mut_nodes.borrow_mut().insert(local_id); } - LpExtend(ref base, mc::McInherited, _) => { + LpExtend(ref base, mc::McInherited, _) | + LpExtend(ref base, mc::McDeclared, _) => { self.mark_loan_path_as_mutated(&**base); } - LpExtend(_, mc::McDeclared, _) | LpExtend(_, mc::McImmutable, _) => { // Nothing to do. } |
