24 lines
603 B
Rust
24 lines
603 B
Rust
// `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
|
|
}
|
|
}
|