about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLuqman Aden <me@luqman.ca>2014-08-22 10:10:29 -0700
committerLuqman Aden <me@luqman.ca>2014-08-22 10:18:22 -0700
commit30ab05aeb5ba13dc292e625456ea5edf486dddd9 (patch)
tree6c9c787906dd54b92e7813165b3d430c99a532be
parent36789fbbc5568b71c1eee85bcc20ffbdcf79f7a4 (diff)
downloadrust-30ab05aeb5ba13dc292e625456ea5edf486dddd9.tar.gz
rust-30ab05aeb5ba13dc292e625456ea5edf486dddd9.zip
librustc: Properly tag upvars in proc's to stop misleading unused_mut warnings.
-rw-r--r--src/librustc/middle/borrowck/gather_loans/restrictions.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/librustc/middle/borrowck/gather_loans/restrictions.rs b/src/librustc/middle/borrowck/gather_loans/restrictions.rs
index d1e9a2c0a74..a686084a4a2 100644
--- a/src/librustc/middle/borrowck/gather_loans/restrictions.rs
+++ b/src/librustc/middle/borrowck/gather_loans/restrictions.rs
@@ -70,18 +70,19 @@ impl<'a> RestrictionsContext<'a> {
             mc::cat_arg(local_id) => {
                 // R-Variable, locally declared
                 let lp = Rc::new(LpVar(local_id));
-                SafeIf(lp.clone(), vec!(lp))
+                SafeIf(lp.clone(), vec![lp])
             }
 
             mc::cat_upvar(upvar_id, _) => {
                 // R-Variable, captured into closure
                 let lp = Rc::new(LpUpvar(upvar_id));
-                SafeIf(lp.clone(), vec!(lp))
+                SafeIf(lp.clone(), vec![lp])
             }
 
-            mc::cat_copied_upvar(..) => {
-                // FIXME(#2152) allow mutation of upvars
-                Safe
+            mc::cat_copied_upvar(mc::CopiedUpvar { upvar_id, .. }) => {
+                // R-Variable, copied/moved into closure
+                let lp = Rc::new(LpVar(upvar_id));
+                SafeIf(lp.clone(), vec![lp])
             }
 
             mc::cat_downcast(cmt_base) => {