about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Koropoff <bkoropoff@gmail.com>2014-11-08 21:49:29 -0800
committerBrian Koropoff <bkoropoff@gmail.com>2014-11-08 21:49:29 -0800
commitfb4e618c33789da31614d1d92b7c760df5db426b (patch)
treeef70f339e6990a3d178f44b19e31737f2a9e098e
parent93c85eb8bdcc910a27caf6abd20207a626ae98e5 (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.rs4
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.
             }