diff options
| author | kennytm <kennytm@gmail.com> | 2018-01-23 17:03:44 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-01-23 22:30:59 +0800 |
| commit | 6dcaa0af20fca593fbf9bc80d43915024728a7a1 (patch) | |
| tree | abd21ee8b9fa5d26ea4ff11f6226c589732dff8d /src | |
| parent | 117eb68122cee0346e15f83c248859a89063a86b (diff) | |
| parent | c3fabceab15442b2d4a13774cb07019bc7ec5bc5 (diff) | |
| download | rust-6dcaa0af20fca593fbf9bc80d43915024728a7a1.tar.gz rust-6dcaa0af20fca593fbf9bc80d43915024728a7a1.zip | |
Rollup merge of #47661 - bjorn3:refactor_driver, r=michaelwoerister
Inline some rustc_driver function
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_driver/driver.rs | 30 | ||||
| -rw-r--r-- | src/librustc_driver/lib.rs | 31 |
2 files changed, 22 insertions, 39 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 468a08b1fd9..f19ffc0e12a 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -51,14 +51,12 @@ use std::iter; use std::path::{Path, PathBuf}; use std::rc::Rc; use std::sync::mpsc; -use syntax::{ast, diagnostics, visit}; -use syntax::attr; +use syntax::{self, ast, attr, diagnostics, visit}; use syntax::ext::base::ExtCtxt; use syntax::fold::Folder; use syntax::parse::{self, PResult}; use syntax::util::node_count::NodeCounter; use syntax_pos::FileName; -use syntax; use syntax_ext; use derive_registrar; @@ -274,10 +272,6 @@ pub fn compile_input(trans: Box<TransCrate>, Ok(()) } -fn keep_hygiene_data(sess: &Session) -> bool { - sess.opts.debugging_opts.keep_hygiene_data -} - pub fn source_name(input: &Input) -> FileName { match *input { Input::File(ref ifile) => ifile.clone().into(), @@ -851,7 +845,7 @@ pub fn phase_2_configure_and_expand<F>(sess: &Session, || lint::check_ast_crate(sess, &krate)); // Discard hygiene data, which isn't required after lowering to HIR. - if !keep_hygiene_data(sess) { + if !sess.opts.debugging_opts.keep_hygiene_data { syntax::ext::hygiene::clear_markings(); } @@ -915,18 +909,6 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(trans: &TransCrate, mpsc::Receiver<Box<Any + Send>>, CompileResult) -> R { - macro_rules! try_with_f { - ($e: expr, ($($t:tt)*)) => { - match $e { - Ok(x) => x, - Err(x) => { - f($($t)*, Err(x)); - return Err(x); - } - } - } - } - let time_passes = sess.time_passes(); let query_result_on_disk_cache = time(time_passes, @@ -987,7 +969,13 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(trans: &TransCrate, || stability::check_unstable_api_usage(tcx)); // passes are timed inside typeck - try_with_f!(typeck::check_crate(tcx), (tcx, analysis, rx)); + match typeck::check_crate(tcx) { + Ok(x) => x, + Err(x) => { + f(tcx, analysis, rx, Err(x)); + return Err(x); + } + } time(time_passes, "const checking", diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index 541405975f6..04e94979c71 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -670,7 +670,7 @@ impl<'a> CompilerCalls<'a> for RustcDefaultCalls { control.after_hir_lowering.stop = Compilation::Stop; } - if save_analysis(sess) { + if sess.opts.debugging_opts.save_analysis { enable_save_analysis(&mut control); } @@ -705,10 +705,6 @@ pub fn enable_save_analysis(control: &mut CompileController) { control.make_glob_map = resolve::MakeGlobMap::Yes; } -fn save_analysis(sess: &Session) -> bool { - sess.opts.debugging_opts.save_analysis -} - impl RustcDefaultCalls { pub fn list_metadata(sess: &Session, cstore: &CrateStore, @@ -1330,20 +1326,19 @@ pub fn diagnostics_registry() -> errors::registry::Registry { Registry::new(&all_errors) } -pub fn get_args() -> Vec<String> { - env::args_os().enumerate() - .map(|(i, arg)| arg.into_string().unwrap_or_else(|arg| { - early_error(ErrorOutputType::default(), - &format!("Argument {} is not valid Unicode: {:?}", i, arg)) - })) - .collect() -} - pub fn main() { env_logger::init().unwrap(); - let result = run(|| run_compiler(&get_args(), - &mut RustcDefaultCalls, - None, - None)); + let result = run(|| { + let args = env::args_os().enumerate() + .map(|(i, arg)| arg.into_string().unwrap_or_else(|arg| { + early_error(ErrorOutputType::default(), + &format!("Argument {} is not valid Unicode: {:?}", i, arg)) + })) + .collect::<Vec<_>>(); + run_compiler(&args, + &mut RustcDefaultCalls, + None, + None) + }); process::exit(result as i32); } |
