diff options
| author | bors <bors@rust-lang.org> | 2013-12-28 14:12:01 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-12-28 14:12:01 -0800 |
| commit | 292269708701f1dfc663668aa72584617b3d9ccc (patch) | |
| tree | 129e62e91472bdcd8fb0d1e36e9856cca62e4aba | |
| parent | 482f75f595d5f3e89cc2c5cecd3f382828c08838 (diff) | |
| parent | eaae0ac68a6ab1a668ac4b5695aba35b571c8c00 (diff) | |
| download | rust-292269708701f1dfc663668aa72584617b3d9ccc.tar.gz rust-292269708701f1dfc663668aa72584617b3d9ccc.zip | |
auto merge of #11175 : klutzy/rust/ice, r=alexcrichton
`ln_str` caused ICE if `RUST_LOG=rustc::middle::liveness` is given due to borrow failure.
| -rw-r--r-- | src/librustc/middle/liveness.rs | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index 8532f959a2c..94c7efbe747 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -789,21 +789,32 @@ impl Liveness { str::from_utf8_owned(io::mem::with_mem_writer(|wr| { let wr = wr as &mut io::Writer; { - let lnks = self.ir.lnks.borrow(); + let lnks = self.ir.lnks.try_borrow(); write!(wr, "[ln({}) of kind {:?} reads", *ln, - lnks.get()[*ln]); + lnks.and_then(|lnks| Some(lnks.get()[*ln]))); + } + let users = self.users.try_borrow(); + match users { + Some(users) => { + self.write_vars(wr, ln, |idx| users.get()[idx].reader); + write!(wr, " writes"); + self.write_vars(wr, ln, |idx| users.get()[idx].writer); + } + None => { + write!(wr, " (users borrowed)"); + } + } + let successors = self.successors.try_borrow(); + match successors { + Some(successors) => { + write!(wr, " precedes {}]", successors.get()[*ln].to_str()); + } + None => { + write!(wr, " precedes (successors borrowed)]"); + } } - let users = self.users.borrow(); - self.write_vars(wr, ln, |idx| users.get()[idx].reader); - write!(wr, " writes"); - self.write_vars(wr, ln, |idx| users.get()[idx].writer); - let successor = { - let successors = self.successors.borrow(); - successors.get()[*ln] - }; - write!(wr, " precedes {}]", successor.to_str()); })) } |
