// This is a non-regression test about differences in scopes computed by NLLs and `-Zpolonius=next` // found during the crater run for PR #117593. // // Live loans were computed too early compared to some of the liveness data coming from later passes // than `liveness::trace`, on some specific CFGs shapes: a variable was dead during tracing but its // regions were marked live later, and live loans were not recomputed at this point. //@ check-pass //@ revisions: nll polonius //@ [polonius] compile-flags: -Zpolonius=next // minimized from wavefc-cli-3.0.0 fn repro1() { let a = 0; let closure = || { let _b = a; }; let callback = if true { Some(closure) } else { None }; do_it(callback); } fn do_it(_: Option) where F: Fn(), { } // minimized from simple-server-0.4.0 fn repro2() { let mut a = &(); let s = S(&mut a); let _ = if true { Some(s) } else { None }; } struct S<'a>(&'a mut &'a ()); // minimized from https://github.com/SHaaD94/AICup2022 fn repro3() { let runner = (); let writer = debug_interface(&runner); let _ = if true { Some(writer) } else { None }; } fn debug_interface(_: &()) -> &mut dyn std::io::Write { unimplemented!() } fn main() {}