| // This test is a copy of `ui/nll/issue-46589.rs` which fails in NLL but succeeds in Polonius. |
| // As we can't have a test here which conditionally passes depending on a test |
| // revision/compile-flags. We ensure here that it passes in Polonius mode. |
| |
| //@ check-pass |
| //@ compile-flags: -Z 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() |
| }; |
| |
| let c = other; |
| } |
| } |
| |
| fn main() {} |