]>
Commit | Line | Data |
---|---|---|
0bf4aa26 XL |
1 | // rust-lang/rust#22323: regression test demonstrating that NLL |
2 | // precisely tracks temporary destruction order. | |
3 | ||
4 | // compile-pass | |
5 | ||
6 | #![feature(nll)] | |
7 | ||
8 | fn main() { | |
9 | let _s = construct().borrow().consume_borrowed(); | |
10 | } | |
11 | ||
12 | fn construct() -> Value { Value } | |
13 | ||
14 | pub struct Value; | |
15 | ||
16 | impl Value { | |
17 | fn borrow<'a>(&'a self) -> Borrowed<'a> { unimplemented!() } | |
18 | } | |
19 | ||
20 | pub struct Borrowed<'a> { | |
21 | _inner: Guard<'a, Value>, | |
22 | } | |
23 | ||
24 | impl<'a> Borrowed<'a> { | |
25 | fn consume_borrowed(self) -> String { unimplemented!() } | |
26 | } | |
27 | ||
28 | pub struct Guard<'a, T: ?Sized + 'a> { | |
29 | _lock: &'a T, | |
30 | } | |
31 | ||
32 | impl<'a, T: ?Sized> Drop for Guard<'a, T> { fn drop(&mut self) {} } |