diff options
Diffstat (limited to 'src/librustc/driver/driver.rs')
| -rw-r--r-- | src/librustc/driver/driver.rs | 71 |
1 files changed, 30 insertions, 41 deletions
diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index b7bb603dd65..d2c2763eab1 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -42,6 +42,7 @@ use syntax::attr; use syntax::attr::{AttrMetaMethods}; use syntax::codemap; use syntax::diagnostic; +use syntax::diagnostic::Emitter; use syntax::ext::base::CrateLoader; use syntax::parse; use syntax::parse::token::InternedString; @@ -136,10 +137,10 @@ pub fn build_configuration(sess: Session) -> } // Convert strings provided as --cfg [cfgspec] into a crate_cfg -fn parse_cfgspecs(cfgspecs: ~[~str], demitter: @diagnostic::Emitter) +fn parse_cfgspecs(cfgspecs: ~[~str]) -> ast::CrateConfig { cfgspecs.move_iter().map(|s| { - let sess = parse::new_parse_sess(Some(demitter)); + let sess = parse::new_parse_sess(); parse::parse_meta_from_source_str("cfgspec".to_str(), s, ~[], sess) }).collect::<ast::CrateConfig>() } @@ -539,9 +540,7 @@ pub fn compile_input(sess: Session, cfg: ast::CrateConfig, input: &Input, phase_6_link_output(sess, &trans, &outputs); } -struct IdentifiedAnnotation { - contents: (), -} +struct IdentifiedAnnotation; impl pprust::PpAnn for IdentifiedAnnotation { fn pre(&self, node: pprust::AnnNode) -> io::IoResult<()> { @@ -619,18 +618,16 @@ pub fn pretty_print_input(sess: Session, let annotation = match ppm { PpmIdentified | PpmExpandedIdentified => { - @IdentifiedAnnotation { - contents: (), - } as @pprust::PpAnn + ~IdentifiedAnnotation as ~pprust::PpAnn } PpmTyped => { let ast_map = ast_map.expect("--pretty=typed missing ast_map"); let analysis = phase_3_run_analysis_passes(sess, &crate, ast_map); - @TypedAnnotation { + ~TypedAnnotation { analysis: analysis - } as @pprust::PpAnn + } as ~pprust::PpAnn: } - _ => @pprust::NoAnn as @pprust::PpAnn, + _ => ~pprust::NoAnn as ~pprust::PpAnn:, }; let src = &sess.codemap.get_filemap(source_name(input)).src; @@ -682,17 +679,15 @@ static architecture_abis : &'static [(&'static str, abi::Architecture)] = &'stat ("mips", abi::Mips)]; -pub fn build_target_config(sopts: @session::Options, - demitter: @diagnostic::Emitter) +pub fn build_target_config(sopts: @session::Options) -> @session::Config { let os = match get_os(sopts.target_triple) { Some(os) => os, - None => early_error(demitter, "unknown operating system") + None => early_error("unknown operating system") }; let arch = match get_arch(sopts.target_triple) { Some(arch) => arch, - None => early_error(demitter, - "unknown architecture: " + sopts.target_triple) + None => early_error("unknown architecture: " + sopts.target_triple) }; let (int_type, uint_type) = match arch { abi::X86 => (ast::TyI32, ast::TyU32), @@ -730,8 +725,7 @@ pub fn host_triple() -> ~str { } pub fn build_session_options(binary: ~str, - matches: &getopts::Matches, - demitter: @diagnostic::Emitter) + matches: &getopts::Matches) -> @session::Options { let crate_types = matches.opt_strs("crate-type").flat_map(|s| { s.split(',').map(|part| { @@ -741,8 +735,7 @@ pub fn build_session_options(binary: ~str, "staticlib" => session::CrateTypeStaticlib, "dylib" => session::CrateTypeDylib, "bin" => session::CrateTypeExecutable, - _ => early_error(demitter, - format!("unknown crate type: `{}`", part)) + _ => early_error(format!("unknown crate type: `{}`", part)) } }).collect() }); @@ -767,8 +760,8 @@ pub fn build_session_options(binary: ~str, let lint_name = lint_name.replace("-", "_"); match lint_dict.find_equiv(&lint_name) { None => { - early_error(demitter, format!("unknown {} flag: {}", - level_name, lint_name)); + early_error(format!("unknown {} flag: {}", + level_name, lint_name)); } Some(lint) => { lint_opts.push((lint.lint, *level)); @@ -787,7 +780,7 @@ pub fn build_session_options(binary: ~str, if *name == *debug_flag { this_bit = bit; break; } } if this_bit == 0 { - early_error(demitter, format!("unknown debug flag: {}", *debug_flag)) + early_error(format!("unknown debug flag: {}", *debug_flag)) } debugging_opts |= this_bit; } @@ -807,9 +800,7 @@ pub fn build_session_options(binary: ~str, "bc" => link::OutputTypeBitcode, "obj" => link::OutputTypeObject, "link" => link::OutputTypeExe, - _ => early_error(demitter, - format!("unknown emission type: `{}`", - part)) + _ => early_error(format!("unknown emission type: `{}`", part)) } }).collect() }) @@ -830,7 +821,7 @@ pub fn build_session_options(binary: ~str, No } else if matches.opt_present("O") { if matches.opt_present("opt-level") { - early_error(demitter, "-O and --opt-level both provided"); + early_error("-O and --opt-level both provided"); } Default } else if matches.opt_present("opt-level") { @@ -840,7 +831,7 @@ pub fn build_session_options(binary: ~str, ~"2" => Default, ~"3" => Aggressive, _ => { - early_error(demitter, "optimization level needs to be between 0-3") + early_error("optimization level needs to be between 0-3") } } } else { No } @@ -865,7 +856,7 @@ pub fn build_session_options(binary: ~str, }).collect() }); - let cfg = parse_cfgspecs(matches.opt_strs("cfg"), demitter); + let cfg = parse_cfgspecs(matches.opt_strs("cfg")); let test = matches.opt_present("test"); let android_cross_path = matches.opt_str("android-cross-path"); let write_dependency_info = (matches.opt_present("dep-info"), @@ -926,25 +917,23 @@ pub fn build_session_options(binary: ~str, } pub fn build_session(sopts: @session::Options, - local_crate_source_file: Option<Path>, - demitter: @diagnostic::Emitter) + local_crate_source_file: Option<Path>) -> Session { let codemap = @codemap::CodeMap::new(); let diagnostic_handler = - diagnostic::mk_handler(Some(demitter)); + diagnostic::mk_handler(); let span_diagnostic_handler = diagnostic::mk_span_handler(diagnostic_handler, codemap); - build_session_(sopts, local_crate_source_file, codemap, demitter, span_diagnostic_handler) + build_session_(sopts, local_crate_source_file, codemap, span_diagnostic_handler) } pub fn build_session_(sopts: @session::Options, local_crate_source_file: Option<Path>, codemap: @codemap::CodeMap, - demitter: @diagnostic::Emitter, span_diagnostic_handler: @diagnostic::SpanHandler) -> Session { - let target_cfg = build_target_config(sopts, demitter); + let target_cfg = build_target_config(sopts); let p_s = parse::new_parse_sess_special_handler(span_diagnostic_handler, codemap); let cstore = @CStore::new(token::get_ident_interner()); let filesearch = @filesearch::FileSearch::new( @@ -1167,8 +1156,8 @@ pub fn build_output_filenames(input: &Input, } } -pub fn early_error(emitter: &diagnostic::Emitter, msg: &str) -> ! { - emitter.emit(None, msg, diagnostic::Fatal); +pub fn early_error(msg: &str) -> ! { + diagnostic::DefaultEmitter.emit(None, msg, diagnostic::Fatal); fail!(diagnostic::FatalError); } @@ -1198,8 +1187,8 @@ mod test { Ok(m) => m, Err(f) => fail!("test_switch_implies_cfg_test: {}", f.to_err_msg()) }; - let sessopts = build_session_options(~"rustc", matches, @diagnostic::DefaultEmitter); - let sess = build_session(sessopts, None, @diagnostic::DefaultEmitter); + let sessopts = build_session_options(~"rustc", matches); + let sess = build_session(sessopts, None); let cfg = build_configuration(sess); assert!((attr::contains_name(cfg, "test"))); } @@ -1216,8 +1205,8 @@ mod test { f.to_err_msg()); } }; - let sessopts = build_session_options(~"rustc", matches, @diagnostic::DefaultEmitter); - let sess = build_session(sessopts, None, @diagnostic::DefaultEmitter); + let sessopts = build_session_options(~"rustc", matches); + let sess = build_session(sessopts, None); let cfg = build_configuration(sess); let mut test_items = cfg.iter().filter(|m| m.name().equiv(&("test"))); assert!(test_items.next().is_some()); |
