diff options
Diffstat (limited to 'src/librustc_driver/driver.rs')
| -rw-r--r-- | src/librustc_driver/driver.rs | 65 |
1 files changed, 30 insertions, 35 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 7fb66ea97f2..b4f95b915eb 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -44,7 +44,7 @@ use serialize::json; use std::any::Any; use std::env; -use std::ffi::{OsStr, OsString}; +use std::ffi::OsString; use std::fs; use std::io::{self, Write}; use std::iter; @@ -1021,6 +1021,7 @@ where .cloned() .collect(); missing_fragment_specifiers.sort(); + for span in missing_fragment_specifiers { let lint = lint::builtin::MISSING_FRAGMENT_SPECIFIER; let msg = "missing fragment specifier"; @@ -1472,7 +1473,7 @@ fn write_out_deps(sess: &Session, outputs: &OutputFilenames, out_filenames: &[Pa .collect(); let mut file = fs::File::create(&deps_filename)?; for path in out_filenames { - write!(file, "{}: {}\n\n", path.display(), files.join(" "))?; + writeln!(file, "{}: {}\n", path.display(), files.join(" "))?; } // Emit a fake target for each input file to the compilation. This @@ -1484,15 +1485,12 @@ fn write_out_deps(sess: &Session, outputs: &OutputFilenames, out_filenames: &[Pa Ok(()) })(); - match result { - Ok(()) => {} - Err(e) => { - sess.fatal(&format!( - "error writing dependencies to `{}`: {}", - deps_filename.display(), - e - )); - } + if let Err(e) = result { + sess.fatal(&format!( + "error writing dependencies to `{}`: {}", + deps_filename.display(), + e + )); } } @@ -1520,6 +1518,7 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c Symbol::intern("proc-macro"), Symbol::intern("bin") ]; + if let ast::MetaItemKind::NameValue(spanned) = a.meta().unwrap().node { let span = spanned.span; let lev_candidate = find_best_match_for_name( @@ -1551,7 +1550,7 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c } None } - _ => { + None => { session .struct_span_err(a.span, "`crate_type` requires a value") .note("for example: `#![crate_type=\"lib\"]`") @@ -1581,25 +1580,26 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c base.push(::rustc_codegen_utils::link::default_output_for_target( session, )); + } else { + base.sort(); + base.dedup(); } - base.sort(); - base.dedup(); } - base.into_iter() - .filter(|crate_type| { - let res = !::rustc_codegen_utils::link::invalid_output_for_target(session, *crate_type); + base.retain(|crate_type| { + let res = !::rustc_codegen_utils::link::invalid_output_for_target(session, *crate_type); - if !res { - session.warn(&format!( - "dropping unsupported crate type `{}` for target `{}`", - *crate_type, session.opts.target_triple - )); - } + if !res { + session.warn(&format!( + "dropping unsupported crate type `{}` for target `{}`", + *crate_type, session.opts.target_triple + )); + } - res - }) - .collect() + res + }); + + base } pub fn compute_crate_disambiguator(session: &Session) -> CrateDisambiguator { @@ -1650,17 +1650,14 @@ pub fn build_output_filenames( // "-" as input file will cause the parser to read from stdin so we // have to make up a name // We want to toss everything after the final '.' - let dirpath = match *odir { - Some(ref d) => d.clone(), - None => PathBuf::new(), - }; + let dirpath = (*odir).as_ref().cloned().unwrap_or_default(); // If a crate name is present, we use it as the link name let stem = sess.opts .crate_name .clone() .or_else(|| attr::find_crate_name(attrs).map(|n| n.to_string())) - .unwrap_or(input.filestem()); + .unwrap_or_else(|| input.filestem()); OutputFilenames { out_directory: dirpath, @@ -1693,13 +1690,11 @@ pub fn build_output_filenames( sess.warn("ignoring -C extra-filename flag due to -o flag"); } - let cur_dir = Path::new(""); - OutputFilenames { - out_directory: out_file.parent().unwrap_or(cur_dir).to_path_buf(), + out_directory: out_file.parent().unwrap_or_else(|| Path::new("")).to_path_buf(), out_filestem: out_file .file_stem() - .unwrap_or(OsStr::new("")) + .unwrap_or_default() .to_str() .unwrap() .to_string(), |
