about summary refs log tree commit diff
path: root/compiler/rustc_interface/src
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-12-08 12:59:02 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2023-02-14 10:01:25 +0000
commit43a5cc383d9cf96825561b646e5f4686ae45c6c1 (patch)
treeba6fd4702116d7e1bbe96021fd328fe1d6c9ad24 /compiler/rustc_interface/src
parente9ab7872fd77861e3d182ea85a82c4649c5bb3f8 (diff)
downloadrust-43a5cc383d9cf96825561b646e5f4686ae45c6c1.tar.gz
rust-43a5cc383d9cf96825561b646e5f4686ae45c6c1.zip
Separate the lifetime of the session and the arena in the resolver
Diffstat (limited to 'compiler/rustc_interface/src')
-rw-r--r--compiler/rustc_interface/src/passes.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs
index c8d8afae39e..e85cc7ad36d 100644
--- a/compiler/rustc_interface/src/passes.rs
+++ b/compiler/rustc_interface/src/passes.rs
@@ -82,7 +82,7 @@ mod boxed_resolver {
     struct BoxedResolverInner {
         session: Lrc<Session>,
         resolver_arenas: Option<ResolverArenas<'static>>,
-        resolver: Option<Resolver<'static>>,
+        resolver: Option<Resolver<'static, 'static>>,
         _pin: PhantomPinned,
     }
 
@@ -98,7 +98,10 @@ mod boxed_resolver {
     impl BoxedResolver {
         pub(super) fn new(
             session: Lrc<Session>,
-            make_resolver: impl for<'a> FnOnce(&'a Session, &'a ResolverArenas<'a>) -> Resolver<'a>,
+            make_resolver: impl for<'a, 'tcx> FnOnce(
+                &'tcx Session,
+                &'a ResolverArenas<'a>,
+            ) -> Resolver<'a, 'tcx>,
         ) -> BoxedResolver {
             let mut boxed_resolver = Box::new(BoxedResolverInner {
                 session,
@@ -121,7 +124,10 @@ mod boxed_resolver {
             }
         }
 
-        pub fn access<F: for<'a> FnOnce(&mut Resolver<'a>) -> R, R>(&mut self, f: F) -> R {
+        pub fn access<F: for<'a, 'tcx> FnOnce(&mut Resolver<'a, 'tcx>) -> R, R>(
+            &mut self,
+            f: F,
+        ) -> R {
             // SAFETY: The resolver doesn't need to be pinned.
             let mut resolver = unsafe {
                 self.0.as_mut().map_unchecked_mut(|boxed_resolver| &mut boxed_resolver.resolver)
@@ -256,7 +262,7 @@ pub fn configure_and_expand(
     lint_store: &LintStore,
     mut krate: ast::Crate,
     crate_name: Symbol,
-    resolver: &mut Resolver<'_>,
+    resolver: &mut Resolver<'_, '_>,
 ) -> Result<ast::Crate> {
     trace!("configure_and_expand");
     pre_expansion_lint(sess, lint_store, resolver.registered_tools(), &krate, crate_name);