diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2021-05-31 16:24:09 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2021-06-08 19:24:16 +0200 |
| commit | bddf151deac83ad9306c31806ebacfede93e4b99 (patch) | |
| tree | 77b95d534001532f928642a842f865973050a661 /compiler/rustc_interface/src | |
| parent | 1b7ec348783f1ebd3c4610c56ec02608dd3dad54 (diff) | |
| download | rust-bddf151deac83ad9306c31806ebacfede93e4b99.tar.gz rust-bddf151deac83ad9306c31806ebacfede93e4b99.zip | |
Use more accurate lifetimes
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/passes.rs | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index e68d601a98d..8f6c955056d 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -88,16 +88,14 @@ fn count_nodes(krate: &ast::Crate) -> usize { counter.count } -#[derive(Copy, Clone)] -pub struct AccessAction(*mut dyn FnMut()); +pub struct AccessAction(*mut dyn for<'a> FnMut(&mut Resolver<'a>)); impl AccessAction { - pub fn get(self) -> *mut dyn FnMut() { + pub fn get(self) -> *mut dyn for<'a> FnMut(&mut Resolver<'a>) { self.0 } } -#[derive(Copy, Clone)] pub enum Action { Initial, Access(AccessAction), @@ -123,7 +121,7 @@ pub struct BoxedResolver { Box< dyn Generator< Action, - Yield = YieldType<Result<ast::Crate>, fn(&mut Resolver<'_>)>, + Yield = YieldType<Result<ast::Crate>, for<'a> fn(&mut Resolver<'a>)>, Return = ResolverOutputs, >, >, @@ -150,16 +148,16 @@ impl BoxedResolver { (init, BoxedResolver { generator }) } - pub fn access<F: FnOnce(&mut Resolver<'_>) -> R, R>(&mut self, f: F) -> R { + pub fn access<F: for<'a> FnOnce(&mut Resolver<'a>) -> R, R>(&mut self, f: F) -> R { // Turn the FnOnce closure into *mut dyn FnMut() // so we can pass it in to the generator let mut r = None; let mut f = Some(f); - let mut_f: &mut dyn FnMut(&mut Resolver<'_>) = &mut |resolver| { + let mut_f: &mut dyn for<'a> FnMut(&mut Resolver<'a>) = &mut |resolver| { let f = f.take().unwrap(); r = Some(f(resolver)); }; - let mut_f = mut_f as *mut dyn FnMut(&mut Resolver<'_>); + let mut_f = mut_f as *mut dyn for<'a> FnMut(&mut Resolver<'a>); // Get the generator to call our closure unsafe { |
