diff --git a/rls-rustc/src/lib.rs b/rls-rustc/src/lib.rs index 988c83b377c..b5d77dff5c5 100644 --- a/rls-rustc/src/lib.rs +++ b/rls-rustc/src/lib.rs @@ -9,7 +9,7 @@ extern crate rustc_span; #[cfg(feature = "ipc")] use rustc_driver::Compilation; -use rustc_driver::{run_compiler, Callbacks}; +use rustc_driver::{Callbacks, RunCompiler}; use rustc_interface::interface; #[cfg(feature = "ipc")] use rustc_interface::Queries; @@ -75,8 +75,10 @@ pub fn run() -> Result<(), ()> { }; rustc_driver::install_ice_hook(); - rustc_driver::catch_fatal_errors(|| { - run_compiler(&args, &mut shim_calls, file_loader, None, None) + rustc_driver::catch_fatal_errors(move || { + let mut compiler = RunCompiler::new(&args, &mut shim_calls); + compiler.set_file_loader(file_loader); + compiler.run() }) .map(|_| ()) .map_err(|_| ()) diff --git a/rls/src/build/rustc.rs b/rls/src/build/rustc.rs index 947869aabb3..b937c3cf252 100644 --- a/rls/src/build/rustc.rs +++ b/rls/src/build/rustc.rs @@ -19,7 +19,7 @@ use log::trace; use rls_data::Analysis; use rls_vfs::Vfs; -use self::rustc_driver::{run_compiler, Compilation}; +use self::rustc_driver::{Compilation, RunCompiler}; use self::rustc_interface::interface; use self::rustc_interface::Queries; use self::rustc_save_analysis as save; @@ -185,14 +185,12 @@ fn run_in_process( let stderr = Arc::clone(&stderr); || { rustc_driver::catch_fatal_errors(move || { - // Replace stderr so we catch most errors. - run_compiler( - &args, - &mut callbacks, - Some(Box::new(ReplacedFileLoader::new(changed))), - Some(Box::new(BufWriter(stderr))), - None, - ) + let mut compiler = RunCompiler::new(&args, &mut callbacks); + compiler + .set_file_loader(Some(Box::new(ReplacedFileLoader::new(changed)))) + // Replace stderr so we catch most errors. + .set_emitter(Some(Box::new(BufWriter(stderr)))); + compiler.run() }) } })