blob: 57dc140110246bd6f184c05215d56f3ecfc6331f [file] [log] [blame]
// `Call` terminators can write to a local which has existing loans
// and those need to be killed like a regular assignment to a local.
// This is a simplified version of issue 47680, is correctly accepted
// by NLL but was incorrectly rejected by Polonius because of these
// missing `killed` facts.
// check-pass
// compile-flags: -Z borrowck=mir -Z polonius
// ignore-compare-mode-nll
struct Thing;
impl Thing {
fn next(&mut self) -> &mut Self { unimplemented!() }
}
fn main() {
let mut temp = &mut Thing;
loop {
let v = temp.next();
temp = v; // accepted by NLL, was incorrectly rejected by Polonius
}
}