From 56c39aec759db19be4a9f9f318a0c1f870992d38 Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Sat, 13 Dec 2014 09:27:44 +0100 Subject: [PATCH] fixes for new rules for lifetimes and destructors. note that some of these cases may actually be fixes to latent bugs, in some sense (depending on what our guarantees are about e.g. what a hashmap should be allowed to access in its own destructor). --- src/libregex/vm.rs | 6 ++++-- src/test/auxiliary/issue-2631-a.rs | 3 ++- src/test/run-pass/issue-13304.rs | 5 +++-- src/test/run-pass/issue-14456.rs | 3 ++- src/test/run-pass/issue-3026.rs | 2 +- .../multidispatch-conditional-impl-not-considered.rs | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libregex/vm.rs b/src/libregex/vm.rs index 9605536a052c0..84f9a70b3e483 100644 --- a/src/libregex/vm.rs +++ b/src/libregex/vm.rs @@ -120,8 +120,10 @@ impl<'r, 't> Nfa<'r, 't> { }; let mut matched = false; let ninsts = self.prog.insts.len(); - let mut clist = &mut Threads::new(self.which, ninsts, ncaps); - let mut nlist = &mut Threads::new(self.which, ninsts, ncaps); + let mut cthread = Threads::new(self.which, ninsts, ncaps); + let mut nthread = Threads::new(self.which, ninsts, ncaps); + let mut clist = &mut cthread; + let mut nlist = &mut nthread; let mut groups: Vec<_> = repeat(None).take(ncaps * 2).collect(); diff --git a/src/test/auxiliary/issue-2631-a.rs b/src/test/auxiliary/issue-2631-a.rs index e340331dbfd11..dd1ad413a3d27 100644 --- a/src/test/auxiliary/issue-2631-a.rs +++ b/src/test/auxiliary/issue-2631-a.rs @@ -19,5 +19,6 @@ pub type header_map = HashMap>>>>; // the unused ty param is necessary so this gets monomorphized pub fn request(req: &header_map) { - let _x = req["METHOD".to_string()].clone().borrow().clone()[0].clone(); + let data = req["METHOD".to_string()].clone(); + let _x = data.borrow().clone()[0].clone(); } diff --git a/src/test/run-pass/issue-13304.rs b/src/test/run-pass/issue-13304.rs index 11003c6fc524d..fbe073eef2c97 100644 --- a/src/test/run-pass/issue-13304.rs +++ b/src/test/run-pass/issue-13304.rs @@ -37,7 +37,8 @@ fn parent() { } fn child() { - for line in io::stdin().lock().lines() { + let mut stdin = io::stdin(); + for line in stdin.lock().lines() { println!("{}", line.unwrap()); - } + }; } diff --git a/src/test/run-pass/issue-14456.rs b/src/test/run-pass/issue-14456.rs index f5fdf8704ed25..302e191f670c0 100644 --- a/src/test/run-pass/issue-14456.rs +++ b/src/test/run-pass/issue-14456.rs @@ -27,7 +27,8 @@ fn main() { fn child() { io::stdout().write_line("foo").unwrap(); io::stderr().write_line("bar").unwrap(); - assert_eq!(io::stdin().lock().read_line().err().unwrap().kind, io::EndOfFile); + let mut stdin = io::stdin(); + assert_eq!(stdin.lock().read_line().err().unwrap().kind, io::EndOfFile); } fn test() { diff --git a/src/test/run-pass/issue-3026.rs b/src/test/run-pass/issue-3026.rs index cd71bfce27428..bd0ab605d070e 100644 --- a/src/test/run-pass/issue-3026.rs +++ b/src/test/run-pass/issue-3026.rs @@ -17,7 +17,7 @@ extern crate collections; use std::collections::HashMap; pub fn main() { - let mut buggy_map: HashMap = HashMap::new(); let x = box 1; + let mut buggy_map: HashMap = HashMap::new(); buggy_map.insert(42, &*x); } diff --git a/src/test/run-pass/multidispatch-conditional-impl-not-considered.rs b/src/test/run-pass/multidispatch-conditional-impl-not-considered.rs index 5db5a6267bf2b..49ecef9c7359a 100644 --- a/src/test/run-pass/multidispatch-conditional-impl-not-considered.rs +++ b/src/test/run-pass/multidispatch-conditional-impl-not-considered.rs @@ -29,5 +29,5 @@ impl Bar { fn main() { let b = RefCell::new(Bar); - b.borrow().foo() + b.borrow().foo(); }