@@ -241,6 +241,8 @@ pub fn run_compiler(
241241
242242 callbacks. config ( & mut config) ;
243243
244+ let pretty_info = parse_pretty ( & mut config. opts , & matches) ;
245+
244246 interface:: run_compiler ( config, |compiler| {
245247 let sess = compiler. session ( ) ;
246248 let should_stop = RustcDefaultCalls :: print_crate_info (
@@ -260,14 +262,9 @@ pub fn run_compiler(
260262 return sess. compile_status ( ) ;
261263 }
262264
263- let pretty_info = parse_pretty ( sess, & matches) ;
264-
265- compiler. parse ( ) ?;
266-
267265 if let Some ( ( ppm, opt_uii) ) = pretty_info {
268266 if ppm. needs_ast_map ( & opt_uii) {
269- pretty:: visit_crate ( sess, & mut compiler. parse ( ) ?. peek_mut ( ) , ppm) ;
270- compiler. global_ctxt ( ) ?. peek_mut ( ) . enter ( |tcx| {
267+ compiler. enter ( |tcx| {
271268 let expansion_result = tcx. expand_macros ( ( ) ) ?;
272269 pretty:: print_after_hir_lowering (
273270 tcx,
@@ -281,19 +278,24 @@ pub fn run_compiler(
281278 } ) ?;
282279 return sess. compile_status ( ) ;
283280 } else {
284- let mut krate = compiler. parse ( ) ?. take ( ) ;
285- pretty:: visit_crate ( sess, & mut krate, ppm) ;
286- pretty:: print_after_parsing (
287- sess,
288- & compiler. input ( ) ,
289- & krate,
290- ppm,
291- compiler. output_file ( ) . as_ref ( ) . map ( |p| & * * p) ,
292- ) ;
281+ compiler. enter ( |tcx| {
282+ let krate = tcx. parse ( ( ) ) ?;
283+ let krate = krate. borrow ( ) ;
284+ pretty:: print_after_parsing (
285+ sess,
286+ & compiler. input ( ) ,
287+ & krate,
288+ ppm,
289+ compiler. output_file ( ) . as_ref ( ) . map ( |p| & * * p) ,
290+ ) ;
291+ Ok ( ( ) )
292+ } ) ?;
293293 return sess. compile_status ( ) ;
294294 }
295295 }
296296
297+ compiler. enter ( |tcx| tcx. parse ( ( ) ) ) ?;
298+
297299 if !callbacks. after_parsing ( compiler) {
298300 return sess. compile_status ( ) ;
299301 }
@@ -304,15 +306,15 @@ pub fn run_compiler(
304306 return sess. compile_status ( ) ;
305307 }
306308
307- compiler. register_plugins ( ) ?;
309+ compiler. enter ( |tcx| tcx . register_plugins ( ( ) ) ) ?;
308310
309311 // Lint plugins are registered; now we can process command line flags.
310312 if sess. opts . describe_lints {
311313 describe_lints ( & sess, & sess. lint_store . borrow ( ) , true ) ;
312314 return sess. compile_status ( ) ;
313315 }
314316
315- compiler. global_ctxt ( ) ? . peek_mut ( ) . enter ( |tcx| {
317+ compiler. enter ( |tcx| {
316318 tcx. prepare_outputs ( ( ) ) ?;
317319 Ok ( ( ) )
318320 } ) ?;
@@ -323,7 +325,7 @@ pub fn run_compiler(
323325 return sess. compile_status ( ) ;
324326 }
325327
326- compiler. global_ctxt ( ) ? . peek_mut ( ) . enter ( |tcx| {
328+ compiler. enter ( |tcx| {
327329 tcx. lower_ast_to_hir ( ( ) ) ?;
328330 Ok ( ( ) )
329331 } ) ?;
@@ -334,10 +336,10 @@ pub fn run_compiler(
334336 }
335337
336338 if sess. opts . debugging_opts . save_analysis {
337- compiler. global_ctxt ( ) ? . peek_mut ( ) . enter ( |tcx| {
339+ compiler. enter ( |tcx| {
338340 let expansion_result = tcx. expand_macros ( ( ) ) ?;
339341 let result = tcx. analysis ( LOCAL_CRATE ) ;
340- let crate_name = & tcx. crate_name . as_str ( ) ;
342+ let crate_name = & tcx. crate_name ( LOCAL_CRATE ) . as_str ( ) ;
341343
342344 time ( sess, "save analysis" , || {
343345 save:: process_crate (
@@ -355,20 +357,20 @@ pub fn run_compiler(
355357 // (needed by the RLS)
356358 } ) ?;
357359 } else {
358- compiler. global_ctxt ( ) ? . peek_mut ( ) . enter ( |tcx| {
360+ compiler. enter ( |tcx| {
359361 // Drop AST after lowering HIR to free memory
360362 mem:: drop ( tcx. expand_macros ( ( ) ) . unwrap ( ) . ast_crate . steal ( ) ) ;
361363 } ) ;
362364 }
363365
364- compiler. global_ctxt ( ) ? . peek_mut ( ) . enter ( |tcx| tcx. analysis ( LOCAL_CRATE ) ) ?;
366+ compiler. enter ( |tcx| tcx. analysis ( LOCAL_CRATE ) ) ?;
365367
366368 if !callbacks. after_analysis ( compiler) {
367369 return sess. compile_status ( ) ;
368370 }
369371
370372 if sess. opts . debugging_opts . save_analysis {
371- compiler. global_ctxt ( ) ? . peek_mut ( ) . enter ( |tcx| {
373+ compiler. enter ( |tcx| {
372374 // Drop AST after lowering HIR to free memory
373375 mem:: drop ( tcx. expand_macros ( ( ) ) . unwrap ( ) . ast_crate . steal ( ) ) ;
374376 } ) ;
@@ -441,22 +443,22 @@ fn make_input(free_matches: &[String]) -> Option<(Input, Option<PathBuf>, Option
441443 }
442444}
443445
444- fn parse_pretty ( sess : & Session ,
446+ fn parse_pretty ( opts : & mut config :: Options ,
445447 matches : & getopts:: Matches )
446448 -> Option < ( PpMode , Option < UserIdentifiedItem > ) > {
447- let pretty = if sess . opts . debugging_opts . unstable_options {
449+ let pretty = if opts. debugging_opts . unstable_options {
448450 matches. opt_default ( "pretty" , "normal" ) . map ( |a| {
449451 // stable pretty-print variants only
450- pretty:: parse_pretty ( sess , & a, false )
452+ pretty:: parse_pretty ( opts , & a, false )
451453 } )
452454 } else {
453455 None
454456 } ;
455457
456458 if pretty. is_none ( ) {
457- sess . opts . debugging_opts . unpretty . as_ref ( ) . map ( |a| {
459+ opts. debugging_opts . unpretty . clone ( ) . map ( |a| {
458460 // extended with unstable pretty-print variants
459- pretty:: parse_pretty ( sess , & a, true )
461+ pretty:: parse_pretty ( opts , & a, true )
460462 } )
461463 } else {
462464 pretty
0 commit comments