diff options
| author | lcnr <rust@lcnr.de> | 2025-05-02 16:24:28 +0000 | 
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2025-05-02 18:45:28 +0000 | 
| commit | ffa7d1ee5dba9d0a9979d784a5c38e3a05a5ff9e (patch) | |
| tree | 0bb55d6921f0f2b35f6784deb9233d6efb793167 /compiler/rustc_borrowck/src/lib.rs | |
| parent | f97b3c6044a67e0b5d0d0891ca3a6c5d982b2285 (diff) | |
| download | rust-ffa7d1ee5dba9d0a9979d784a5c38e3a05a5ff9e.tar.gz rust-ffa7d1ee5dba9d0a9979d784a5c38e3a05a5ff9e.zip | |
borrowck nested items in dead code
Diffstat (limited to 'compiler/rustc_borrowck/src/lib.rs')
| -rw-r--r-- | compiler/rustc_borrowck/src/lib.rs | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs index 44af1b76539..f9d8d858f16 100644 --- a/compiler/rustc_borrowck/src/lib.rs +++ b/compiler/rustc_borrowck/src/lib.rs @@ -127,6 +127,14 @@ fn mir_borrowck( Ok(tcx.arena.alloc(opaque_types)) } else { let mut root_cx = BorrowCheckRootCtxt::new(tcx, def); + // We need to manually borrowck all nested bodies from the HIR as + // we do not generate MIR for dead code. Not doing so causes us to + // never check closures in dead code. + let nested_bodies = tcx.nested_bodies_within(def); + for def_id in nested_bodies { + root_cx.get_or_insert_nested(def_id); + } + let PropagatedBorrowCheckResults { closure_requirements, used_mut_upvars } = do_mir_borrowck(&mut root_cx, def, None).0; debug_assert!(closure_requirements.is_none()); | 
