// This tests passes in Polonius mode, so is skipped in the automated compare-mode. // We will manually check it passes in Polonius tests, as we can't have a test here // which conditionally passes depending on a test revision/compile-flags. //@ ignore-compare-mode-polonius struct Foo; impl Foo { fn get_self(&mut self) -> Option<&mut Self> { Some(self) } fn new_self(&mut self) -> &mut Self { self } fn trigger_bug(&mut self) { let other = &mut (&mut *self); *other = match (*other).get_self() { Some(s) => s, None => (*other).new_self() //~^ ERROR cannot borrow `**other` as mutable more than once at a time [E0499] }; let c = other; } } fn main() {}