Skip to content

Commit bddf151

Browse files
committed
Use more accurate lifetimes
1 parent 1b7ec34 commit bddf151

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

compiler/rustc_interface/src/passes.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,14 @@ fn count_nodes(krate: &ast::Crate) -> usize {
8888
counter.count
8989
}
9090

91-
#[derive(Copy, Clone)]
92-
pub struct AccessAction(*mut dyn FnMut());
91+
pub struct AccessAction(*mut dyn for<'a> FnMut(&mut Resolver<'a>));
9392

9493
impl AccessAction {
95-
pub fn get(self) -> *mut dyn FnMut() {
94+
pub fn get(self) -> *mut dyn for<'a> FnMut(&mut Resolver<'a>) {
9695
self.0
9796
}
9897
}
9998

100-
#[derive(Copy, Clone)]
10199
pub enum Action {
102100
Initial,
103101
Access(AccessAction),
@@ -123,7 +121,7 @@ pub struct BoxedResolver {
123121
Box<
124122
dyn Generator<
125123
Action,
126-
Yield = YieldType<Result<ast::Crate>, fn(&mut Resolver<'_>)>,
124+
Yield = YieldType<Result<ast::Crate>, for<'a> fn(&mut Resolver<'a>)>,
127125
Return = ResolverOutputs,
128126
>,
129127
>,
@@ -150,16 +148,16 @@ impl BoxedResolver {
150148
(init, BoxedResolver { generator })
151149
}
152150

153-
pub fn access<F: FnOnce(&mut Resolver<'_>) -> R, R>(&mut self, f: F) -> R {
151+
pub fn access<F: for<'a> FnOnce(&mut Resolver<'a>) -> R, R>(&mut self, f: F) -> R {
154152
// Turn the FnOnce closure into *mut dyn FnMut()
155153
// so we can pass it in to the generator
156154
let mut r = None;
157155
let mut f = Some(f);
158-
let mut_f: &mut dyn FnMut(&mut Resolver<'_>) = &mut |resolver| {
156+
let mut_f: &mut dyn for<'a> FnMut(&mut Resolver<'a>) = &mut |resolver| {
159157
let f = f.take().unwrap();
160158
r = Some(f(resolver));
161159
};
162-
let mut_f = mut_f as *mut dyn FnMut(&mut Resolver<'_>);
160+
let mut_f = mut_f as *mut dyn for<'a> FnMut(&mut Resolver<'a>);
163161

164162
// Get the generator to call our closure
165163
unsafe {

0 commit comments

Comments
 (0)