Introduce rustc_interface and move some methods there
This commit is contained in:
parent
1999a22881
commit
23a51f91c9
29 changed files with 1334 additions and 1055 deletions
|
|
@ -1,5 +1,5 @@
|
|||
use rustc_lint;
|
||||
use rustc_driver::{self, driver, target_features, abort_on_err};
|
||||
use rustc_driver::{driver, abort_on_err};
|
||||
use rustc::session::{self, config};
|
||||
use rustc::hir::def_id::{DefId, DefIndex, DefIndexAddressSpace, CrateNum, LOCAL_CRATE};
|
||||
use rustc::hir::def::Def;
|
||||
|
|
@ -11,6 +11,7 @@ use rustc::hir::map as hir_map;
|
|||
use rustc::lint::{self, LintPass};
|
||||
use rustc::session::config::ErrorOutputType;
|
||||
use rustc::util::nodemap::{FxHashMap, FxHashSet};
|
||||
use rustc_interface::util;
|
||||
use rustc_resolve as resolve;
|
||||
use rustc_metadata::creader::CrateLoader;
|
||||
use rustc_metadata::cstore::CStore;
|
||||
|
|
@ -402,7 +403,7 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
|
|||
debugging_options.ui_testing);
|
||||
|
||||
let mut sess = session::build_session_(
|
||||
sessopts, cpath, diagnostic_handler, source_map,
|
||||
sessopts, cpath, diagnostic_handler, source_map, Default::default(),
|
||||
);
|
||||
|
||||
lint::builtin::HardwiredLints.get_lints()
|
||||
|
|
@ -422,12 +423,12 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
|
|||
lint::Allow);
|
||||
});
|
||||
|
||||
let codegen_backend = rustc_driver::get_codegen_backend(&sess);
|
||||
let codegen_backend = util::get_codegen_backend(&sess);
|
||||
let cstore = Rc::new(CStore::new(codegen_backend.metadata_loader()));
|
||||
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
|
||||
|
||||
let mut cfg = config::build_configuration(&sess, config::parse_cfgspecs(cfgs));
|
||||
target_features::add_configuration(&mut cfg, &sess, &*codegen_backend);
|
||||
util::add_configuration(&mut cfg, &sess, &*codegen_backend);
|
||||
sess.parse_sess.config = cfg;
|
||||
|
||||
let control = &driver::CompileController::basic();
|
||||
|
|
@ -481,23 +482,23 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
|
|||
|
||||
let mut arenas = AllArenas::new();
|
||||
let hir_map = hir_map::map_crate(&sess, &*cstore, &mut hir_forest, &defs);
|
||||
let output_filenames = driver::build_output_filenames(&input,
|
||||
let output_filenames = util::build_output_filenames(&input,
|
||||
&None,
|
||||
&None,
|
||||
&[],
|
||||
&sess);
|
||||
|
||||
let resolver = RefCell::new(resolver);
|
||||
abort_on_err(driver::phase_3_run_analysis_passes(&*codegen_backend,
|
||||
control,
|
||||
&sess,
|
||||
&*cstore,
|
||||
hir_map,
|
||||
resolutions,
|
||||
&mut arenas,
|
||||
&name,
|
||||
&output_filenames,
|
||||
|tcx, _, result| {
|
||||
driver::phase_3_run_analysis_passes(&*codegen_backend,
|
||||
control,
|
||||
&sess,
|
||||
&*cstore,
|
||||
hir_map,
|
||||
resolutions,
|
||||
&mut arenas,
|
||||
&name,
|
||||
&output_filenames,
|
||||
|tcx, _, result| {
|
||||
if result.is_err() {
|
||||
sess.fatal("Compilation failed, aborting rustdoc");
|
||||
}
|
||||
|
|
@ -615,6 +616,6 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
|
|||
ctxt.sess().abort_if_errors();
|
||||
|
||||
(krate, ctxt.renderinfo.into_inner(), render_options, passes)
|
||||
}), &sess)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ extern crate rustc_lint;
|
|||
extern crate rustc_metadata;
|
||||
extern crate rustc_target;
|
||||
extern crate rustc_typeck;
|
||||
extern crate rustc_interface;
|
||||
extern crate serialize;
|
||||
extern crate syntax;
|
||||
extern crate syntax_pos;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@ use errors::{self, FatalError};
|
|||
use errors::emitter::ColorConfig;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_lint;
|
||||
use rustc_driver::{self, driver, target_features, Compilation};
|
||||
use rustc_driver::{self, driver, Compilation};
|
||||
use rustc_driver::driver::phase_2_configure_and_expand;
|
||||
use rustc_metadata::cstore::CStore;
|
||||
use rustc_interface::util;
|
||||
use rustc::hir;
|
||||
use rustc::hir::intravisit;
|
||||
use rustc::session::{self, CompileIncomplete, config};
|
||||
|
|
@ -70,15 +71,15 @@ pub fn run(mut options: Options) -> isize {
|
|||
Some(source_map.clone()));
|
||||
|
||||
let mut sess = session::build_session_(
|
||||
sessopts, Some(options.input), handler, source_map.clone(),
|
||||
sessopts, Some(options.input), handler, source_map.clone(), Default::default(),
|
||||
);
|
||||
let codegen_backend = rustc_driver::get_codegen_backend(&sess);
|
||||
let codegen_backend = util::get_codegen_backend(&sess);
|
||||
let cstore = CStore::new(codegen_backend.metadata_loader());
|
||||
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
|
||||
|
||||
let mut cfg = config::build_configuration(&sess,
|
||||
config::parse_cfgspecs(options.cfgs.clone()));
|
||||
target_features::add_configuration(&mut cfg, &sess, &*codegen_backend);
|
||||
util::add_configuration(&mut cfg, &sess, &*codegen_backend);
|
||||
sess.parse_sess.config = cfg;
|
||||
|
||||
let krate =
|
||||
|
|
@ -274,9 +275,9 @@ fn run_test(test: &str, cratename: &str, filename: &FileName, line: usize,
|
|||
let diagnostic_handler = errors::Handler::with_emitter(true, false, box emitter);
|
||||
|
||||
let mut sess = session::build_session_(
|
||||
sessopts, None, diagnostic_handler, source_map,
|
||||
sessopts, None, diagnostic_handler, source_map, Default::default(),
|
||||
);
|
||||
let codegen_backend = rustc_driver::get_codegen_backend(&sess);
|
||||
let codegen_backend = util::get_codegen_backend(&sess);
|
||||
let cstore = CStore::new(codegen_backend.metadata_loader());
|
||||
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
|
||||
|
||||
|
|
@ -305,7 +306,7 @@ fn run_test(test: &str, cratename: &str, filename: &FileName, line: usize,
|
|||
let mut control = driver::CompileController::basic();
|
||||
|
||||
let mut cfg = config::build_configuration(&sess, config::parse_cfgspecs(cfgs.clone()));
|
||||
target_features::add_configuration(&mut cfg, &sess, &*codegen_backend);
|
||||
util::add_configuration(&mut cfg, &sess, &*codegen_backend);
|
||||
sess.parse_sess.config = cfg;
|
||||
|
||||
let out = Some(outdir.lock().unwrap().path().join("rust_out"));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue