// `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 polonius 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 } }