@@ -76,7 +76,7 @@ pub(crate) struct Queries {
7676 parse : Query < ast:: Crate > ,
7777 crate_name : Query < String > ,
7878 register_plugins : Query < ( ast:: Crate , PluginInfo ) > ,
79- expansion : Query < ( ast:: Crate , Rc < Option < RefCell < BoxedResolver > > > ) > ,
79+ expansion : Query < ( ast:: Crate , Steal < Rc < RefCell < BoxedResolver > > > ) > ,
8080 dep_graph : Query < DepGraph > ,
8181 lower_to_hir : Query < ( Steal < hir:: map:: Forest > , ExpansionResult ) > ,
8282 prepare_outputs : Query < OutputFilenames > ,
@@ -142,7 +142,7 @@ impl Compiler {
142142
143143 pub fn expansion (
144144 & self
145- ) -> Result < & Query < ( ast:: Crate , Rc < Option < RefCell < BoxedResolver > > > ) > > {
145+ ) -> Result < & Query < ( ast:: Crate , Steal < Rc < RefCell < BoxedResolver > > > ) > > {
146146 self . queries . expansion . compute ( || {
147147 let crate_name = self . crate_name ( ) ?. peek ( ) . clone ( ) ;
148148 let ( krate, plugin_info) = self . register_plugins ( ) ?. take ( ) ;
@@ -152,7 +152,7 @@ impl Compiler {
152152 krate,
153153 & crate_name,
154154 plugin_info,
155- ) . map ( |( krate, resolver) | ( krate, Rc :: new ( Some ( RefCell :: new ( resolver) ) ) ) )
155+ ) . map ( |( krate, resolver) | ( krate, Steal :: new ( Rc :: new ( RefCell :: new ( resolver) ) ) ) )
156156 } )
157157 }
158158
@@ -176,9 +176,10 @@ impl Compiler {
176176 pub fn lower_to_hir ( & self ) -> Result < & Query < ( Steal < hir:: map:: Forest > , ExpansionResult ) > > {
177177 self . queries . lower_to_hir . compute ( || {
178178 let expansion_result = self . expansion ( ) ?;
179- let ( krate, resolver) = expansion_result. take ( ) ;
180- let resolver_ref = & * resolver;
181- let hir = Steal :: new ( resolver_ref. as_ref ( ) . unwrap ( ) . borrow_mut ( ) . access ( |resolver| {
179+ let peeked = expansion_result. peek ( ) ;
180+ let krate = & peeked. 0 ;
181+ let resolver = peeked. 1 . steal ( ) ;
182+ let hir = Steal :: new ( resolver. borrow_mut ( ) . access ( |resolver| {
182183 passes:: lower_to_hir (
183184 self . session ( ) ,
184185 self . cstore ( ) ,
@@ -187,7 +188,6 @@ impl Compiler {
187188 & krate
188189 )
189190 } ) ?) ;
190- expansion_result. give ( ( krate, Rc :: new ( None ) ) ) ;
191191 Ok ( ( hir, BoxedResolver :: to_expansion_result ( resolver) ) )
192192 } )
193193 }
0 commit comments