summaryrefslogtreecommitdiffstats
path: root/src/test/ui/borrowck/borrowck-uniq-via-ref.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/borrowck/borrowck-uniq-via-ref.rs')
-rw-r--r--src/test/ui/borrowck/borrowck-uniq-via-ref.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/borrowck-uniq-via-ref.rs b/src/test/ui/borrowck/borrowck-uniq-via-ref.rs
new file mode 100644
index 000000000..bdf7cc57a
--- /dev/null
+++ b/src/test/ui/borrowck/borrowck-uniq-via-ref.rs
@@ -0,0 +1,49 @@
+// run-pass
+#![allow(dead_code)]
+
+// pretty-expanded FIXME #23616
+
+struct Rec {
+ f: Box<isize>,
+}
+
+struct Outer {
+ f: Inner
+}
+
+struct Inner {
+ g: Innermost
+}
+
+struct Innermost {
+ h: Box<isize>,
+}
+
+fn borrow(_v: &isize) {}
+
+fn box_mut(v: &mut Box<isize>) {
+ borrow(&**v); // OK: &mut -> &imm
+}
+
+fn box_mut_rec(v: &mut Rec) {
+ borrow(&*v.f); // OK: &mut -> &imm
+}
+
+fn box_mut_recs(v: &mut Outer) {
+ borrow(&*v.f.g.h); // OK: &mut -> &imm
+}
+
+fn box_imm(v: &Box<isize>) {
+ borrow(&**v); // OK
+}
+
+fn box_imm_rec(v: &Rec) {
+ borrow(&*v.f); // OK
+}
+
+fn box_imm_recs(v: &Outer) {
+ borrow(&*v.f.g.h); // OK
+}
+
+pub fn main() {
+}