@@ -76,7 +76,7 @@ pub(crate) struct Queries {
76
76
parse : Query < ast:: Crate > ,
77
77
crate_name : Query < String > ,
78
78
register_plugins : Query < ( ast:: Crate , PluginInfo ) > ,
79
- expansion : Query < ( ast:: Crate , Rc < Option < RefCell < BoxedResolver > > > ) > ,
79
+ expansion : Query < ( ast:: Crate , Steal < Rc < RefCell < BoxedResolver > > > ) > ,
80
80
dep_graph : Query < DepGraph > ,
81
81
lower_to_hir : Query < ( Steal < hir:: map:: Forest > , ExpansionResult ) > ,
82
82
prepare_outputs : Query < OutputFilenames > ,
@@ -142,7 +142,7 @@ impl Compiler {
142
142
143
143
pub fn expansion (
144
144
& self
145
- ) -> Result < & Query < ( ast:: Crate , Rc < Option < RefCell < BoxedResolver > > > ) > > {
145
+ ) -> Result < & Query < ( ast:: Crate , Steal < Rc < RefCell < BoxedResolver > > > ) > > {
146
146
self . queries . expansion . compute ( || {
147
147
let crate_name = self . crate_name ( ) ?. peek ( ) . clone ( ) ;
148
148
let ( krate, plugin_info) = self . register_plugins ( ) ?. take ( ) ;
@@ -152,7 +152,7 @@ impl Compiler {
152
152
krate,
153
153
& crate_name,
154
154
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) ) ) ) )
156
156
} )
157
157
}
158
158
@@ -176,9 +176,10 @@ impl Compiler {
176
176
pub fn lower_to_hir ( & self ) -> Result < & Query < ( Steal < hir:: map:: Forest > , ExpansionResult ) > > {
177
177
self . queries . lower_to_hir . compute ( || {
178
178
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| {
182
183
passes:: lower_to_hir (
183
184
self . session ( ) ,
184
185
self . cstore ( ) ,
@@ -187,7 +188,6 @@ impl Compiler {
187
188
& krate
188
189
)
189
190
} ) ?) ;
190
- expansion_result. give ( ( krate, Rc :: new ( None ) ) ) ;
191
191
Ok ( ( hir, BoxedResolver :: to_expansion_result ( resolver) ) )
192
192
} )
193
193
}
0 commit comments