about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorkennytm <kennytm@gmail.com>2018-01-23 17:03:44 +0800
committerkennytm <kennytm@gmail.com>2018-01-23 22:30:59 +0800
commit6dcaa0af20fca593fbf9bc80d43915024728a7a1 (patch)
treeabd21ee8b9fa5d26ea4ff11f6226c589732dff8d /src
parent117eb68122cee0346e15f83c248859a89063a86b (diff)
parentc3fabceab15442b2d4a13774cb07019bc7ec5bc5 (diff)
downloadrust-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.rs30
-rw-r--r--src/librustc_driver/lib.rs31
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);
 }