]> git.proxmox.com Git - rustc.git/blame - src/test/ui/nll/issue-22323-temp-destruction.rs
Update upstream source from tag 'upstream/1.31.0_beta.4+dfsg1'
[rustc.git] / src / test / ui / nll / issue-22323-temp-destruction.rs
CommitLineData
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
8fn main() {
9 let _s = construct().borrow().consume_borrowed();
10}
11
12fn construct() -> Value { Value }
13
14pub struct Value;
15
16impl Value {
17 fn borrow<'a>(&'a self) -> Borrowed<'a> { unimplemented!() }
18}
19
20pub struct Borrowed<'a> {
21 _inner: Guard<'a, Value>,
22}
23
24impl<'a> Borrowed<'a> {
25 fn consume_borrowed(self) -> String { unimplemented!() }
26}
27
28pub struct Guard<'a, T: ?Sized + 'a> {
29 _lock: &'a T,
30}
31
32impl<'a, T: ?Sized> Drop for Guard<'a, T> { fn drop(&mut self) {} }