Skip to content

Commit f02768b

Browse files
committed
Auto merge of #55008 - ljedrz:cleanup_rustc_driver, r=estebank
Cleanup rustc/driver - improve/remove allocations - simplify `profile::trace::cons*` - don't sort `base` if it only has one element - use `Cow<str>` where applicable - use `unwrap_or_else` with function calls - remove an explicit `return`, add an explicit `None` - remove lifetimes from `const`s - improve common patterns - improve macro calls - whitespace & formatting fixes
2 parents 0c665e2 + b03a82c commit f02768b

File tree

5 files changed

+208
-246
lines changed

5 files changed

+208
-246
lines changed

src/librustc_driver/driver.rs

+30-35
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ use serialize::json;
4444

4545
use std::any::Any;
4646
use std::env;
47-
use std::ffi::{OsStr, OsString};
47+
use std::ffi::OsString;
4848
use std::fs;
4949
use std::io::{self, Write};
5050
use std::iter;
@@ -1021,6 +1021,7 @@ where
10211021
.cloned()
10221022
.collect();
10231023
missing_fragment_specifiers.sort();
1024+
10241025
for span in missing_fragment_specifiers {
10251026
let lint = lint::builtin::MISSING_FRAGMENT_SPECIFIER;
10261027
let msg = "missing fragment specifier";
@@ -1472,7 +1473,7 @@ fn write_out_deps(sess: &Session, outputs: &OutputFilenames, out_filenames: &[Pa
14721473
.collect();
14731474
let mut file = fs::File::create(&deps_filename)?;
14741475
for path in out_filenames {
1475-
write!(file, "{}: {}\n\n", path.display(), files.join(" "))?;
1476+
writeln!(file, "{}: {}\n", path.display(), files.join(" "))?;
14761477
}
14771478

14781479
// 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
14841485
Ok(())
14851486
})();
14861487

1487-
match result {
1488-
Ok(()) => {}
1489-
Err(e) => {
1490-
sess.fatal(&format!(
1491-
"error writing dependencies to `{}`: {}",
1492-
deps_filename.display(),
1493-
e
1494-
));
1495-
}
1488+
if let Err(e) = result {
1489+
sess.fatal(&format!(
1490+
"error writing dependencies to `{}`: {}",
1491+
deps_filename.display(),
1492+
e
1493+
));
14961494
}
14971495
}
14981496

@@ -1520,6 +1518,7 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c
15201518
Symbol::intern("proc-macro"),
15211519
Symbol::intern("bin")
15221520
];
1521+
15231522
if let ast::MetaItemKind::NameValue(spanned) = a.meta().unwrap().node {
15241523
let span = spanned.span;
15251524
let lev_candidate = find_best_match_for_name(
@@ -1551,7 +1550,7 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c
15511550
}
15521551
None
15531552
}
1554-
_ => {
1553+
None => {
15551554
session
15561555
.struct_span_err(a.span, "`crate_type` requires a value")
15571556
.note("for example: `#![crate_type=\"lib\"]`")
@@ -1581,25 +1580,26 @@ pub fn collect_crate_types(session: &Session, attrs: &[ast::Attribute]) -> Vec<c
15811580
base.push(::rustc_codegen_utils::link::default_output_for_target(
15821581
session,
15831582
));
1583+
} else {
1584+
base.sort();
1585+
base.dedup();
15841586
}
1585-
base.sort();
1586-
base.dedup();
15871587
}
15881588

1589-
base.into_iter()
1590-
.filter(|crate_type| {
1591-
let res = !::rustc_codegen_utils::link::invalid_output_for_target(session, *crate_type);
1589+
base.retain(|crate_type| {
1590+
let res = !::rustc_codegen_utils::link::invalid_output_for_target(session, *crate_type);
15921591

1593-
if !res {
1594-
session.warn(&format!(
1595-
"dropping unsupported crate type `{}` for target `{}`",
1596-
*crate_type, session.opts.target_triple
1597-
));
1598-
}
1592+
if !res {
1593+
session.warn(&format!(
1594+
"dropping unsupported crate type `{}` for target `{}`",
1595+
*crate_type, session.opts.target_triple
1596+
));
1597+
}
15991598

1600-
res
1601-
})
1602-
.collect()
1599+
res
1600+
});
1601+
1602+
base
16031603
}
16041604

16051605
pub fn compute_crate_disambiguator(session: &Session) -> CrateDisambiguator {
@@ -1650,17 +1650,14 @@ pub fn build_output_filenames(
16501650
// "-" as input file will cause the parser to read from stdin so we
16511651
// have to make up a name
16521652
// We want to toss everything after the final '.'
1653-
let dirpath = match *odir {
1654-
Some(ref d) => d.clone(),
1655-
None => PathBuf::new(),
1656-
};
1653+
let dirpath = (*odir).as_ref().cloned().unwrap_or_default();
16571654

16581655
// If a crate name is present, we use it as the link name
16591656
let stem = sess.opts
16601657
.crate_name
16611658
.clone()
16621659
.or_else(|| attr::find_crate_name(attrs).map(|n| n.to_string()))
1663-
.unwrap_or(input.filestem());
1660+
.unwrap_or_else(|| input.filestem());
16641661

16651662
OutputFilenames {
16661663
out_directory: dirpath,
@@ -1693,13 +1690,11 @@ pub fn build_output_filenames(
16931690
sess.warn("ignoring -C extra-filename flag due to -o flag");
16941691
}
16951692

1696-
let cur_dir = Path::new("");
1697-
16981693
OutputFilenames {
1699-
out_directory: out_file.parent().unwrap_or(cur_dir).to_path_buf(),
1694+
out_directory: out_file.parent().unwrap_or_else(|| Path::new("")).to_path_buf(),
17001695
out_filestem: out_file
17011696
.file_stem()
1702-
.unwrap_or(OsStr::new(""))
1697+
.unwrap_or_default()
17031698
.to_str()
17041699
.unwrap()
17051700
.to_string(),

0 commit comments

Comments
 (0)