@@ -148,13 +148,18 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec<String>, externs: Externs,
148
148
let arenas = ty:: CtxtArenas :: new ( ) ;
149
149
let hir_map = driver:: make_map ( & sess, & mut hir_forest) ;
150
150
151
- abort_on_err ( driver:: phase_3_run_analysis_passes ( & sess,
151
+ let krate_and_analysis = abort_on_err ( driver:: phase_3_run_analysis_passes ( & sess,
152
152
& cstore,
153
153
hir_map,
154
154
& arenas,
155
155
& name,
156
156
resolve:: MakeGlobMap :: No ,
157
- |tcx, _, analysis, _| {
157
+ |tcx, _, analysis, result| {
158
+ // Return if the driver hit an err (in `result`)
159
+ if let Err ( _) = result {
160
+ return None
161
+ }
162
+
158
163
let _ignore = tcx. dep_graph . in_ignore ( ) ;
159
164
let ty:: CrateAnalysis { access_levels, .. } = analysis;
160
165
@@ -195,11 +200,17 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec<String>, externs: Externs,
195
200
196
201
let external_paths = ctxt. external_paths . borrow_mut ( ) . take ( ) ;
197
202
* analysis. external_paths . borrow_mut ( ) = external_paths;
203
+
198
204
let map = ctxt. external_typarams . borrow_mut ( ) . take ( ) ;
199
205
* analysis. external_typarams . borrow_mut ( ) = map;
206
+
200
207
let map = ctxt. inlined . borrow_mut ( ) . take ( ) ;
201
208
* analysis. inlined . borrow_mut ( ) = map;
209
+
202
210
analysis. deref_trait_did = ctxt. deref_trait_did . get ( ) ;
203
- ( krate, analysis)
204
- } ) , & sess)
211
+
212
+ Some ( ( krate, analysis) )
213
+ } ) , & sess) ;
214
+
215
+ krate_and_analysis. unwrap ( )
205
216
}
0 commit comments