about summary refs log tree commit diff
diff options
context:
space:
mode:
authormemoryruins <memoryruinsmusic@gmail.com>2018-08-14 10:26:47 -0400
committermemoryruins <memoryruinsmusic@gmail.com>2018-08-14 10:26:47 -0400
commitf4bed39c5c68e345e1d816f9af7cbf6b666bf717 (patch)
tree00e02f7211209f3063b6d64438e2eaa50244fd62
parenta7e877ebdd0c0dc7141b8bb898dd4aa4196f8c5f (diff)
downloadrust-f4bed39c5c68e345e1d816f9af7cbf6b666bf717.tar.gz
rust-f4bed39c5c68e345e1d816f9af7cbf6b666bf717.zip
Add regression test for issue #30104
#30104
-rw-r--r--src/test/ui/nll/issue-30104.rs52
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() {}