diff options
Diffstat (limited to 'compiler/rustc_interface/src/queries.rs')
| -rw-r--r-- | compiler/rustc_interface/src/queries.rs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index 2320f0b47d2..cc9c30986e9 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -246,13 +246,20 @@ impl<'tcx> Queries<'tcx> { let expansion_result = self.expansion()?; let (krate, boxed_resolver, _) = &*expansion_result.peek(); let crate_name = self.crate_name()?.peek(); - passes::prepare_outputs( - self.session(), - self.compiler, - &krate, - &boxed_resolver, - &crate_name, - ) + + // These borrow(), borrow_mut() and access() calls are separate statements to prevent a + // "temporary value dropped while borrowed" error. + let boxed_resolver = boxed_resolver.borrow(); + let mut boxed_resolver = boxed_resolver.borrow_mut(); + boxed_resolver.access(|resolver| { + passes::prepare_outputs( + self.session(), + self.compiler, + &krate, + resolver, + &crate_name, + ) + }) }) } |
