diff options
| author | memoryruins <memoryruinsmusic@gmail.com> | 2018-08-14 10:26:47 -0400 |
|---|---|---|
| committer | memoryruins <memoryruinsmusic@gmail.com> | 2018-08-14 10:26:47 -0400 |
| commit | f4bed39c5c68e345e1d816f9af7cbf6b666bf717 (patch) | |
| tree | 00e02f7211209f3063b6d64438e2eaa50244fd62 | |
| parent | a7e877ebdd0c0dc7141b8bb898dd4aa4196f8c5f (diff) | |
| download | rust-f4bed39c5c68e345e1d816f9af7cbf6b666bf717.tar.gz rust-f4bed39c5c68e345e1d816f9af7cbf6b666bf717.zip | |
Add regression test for issue #30104
#30104
| -rw-r--r-- | src/test/ui/nll/issue-30104.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/test/ui/nll/issue-30104.rs b/src/test/ui/nll/issue-30104.rs new file mode 100644 index 00000000000..64c32a55d04 --- /dev/null +++ b/src/test/ui/nll/issue-30104.rs @@ -0,0 +1,52 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Regression test for #30104 + +// compile-pass + +#![feature(nll)] + +use std::ops::{Deref, DerefMut}; + +fn box_two_field(v: &mut Box<(i32, i32)>) { + let _a = &mut v.0; + let _b = &mut v.1; +} + +fn box_destructure(v: &mut Box<(i32, i32)>) { + let (ref mut _head, ref mut _tail) = **v; +} + +struct Wrap<T>(T); + +impl<T> Deref for Wrap<T> { + type Target = T; + fn deref(&self) -> &T { + &self.0 + } +} + +impl<T> DerefMut for Wrap<T> { + fn deref_mut(&mut self) -> &mut T { + &mut self.0 + } +} + +fn smart_two_field(v: &mut Wrap<(i32, i32)>) { + let _a = &mut v.0; + let _b = &mut v.1; +} + +fn smart_destructure(v: &mut Wrap<(i32, i32)>) { + let (ref mut _head, ref mut _tail) = **v; +} + +fn main() {} |
