Skip to content

Commit 39def83

Browse files
committed
Mostly revert "Accept crate name instead of attributes in build_output_filenames"
1 parent 6d68574 commit 39def83

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

compiler/rustc_attr/src/builtin.rs

+4
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,10 @@ fn parse_unstability(sess: &Session, attr: &Attribute) -> Option<(Symbol, Stabil
492492
}
493493
}
494494

495+
pub fn find_crate_name(attrs: &[Attribute]) -> Option<Symbol> {
496+
attr::first_attr_value_str_by_name(attrs, sym::crate_name)
497+
}
498+
495499
#[derive(Clone, Debug)]
496500
pub struct Condition {
497501
pub name: Symbol,

compiler/rustc_driver_impl/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -805,8 +805,8 @@ fn print_crate_info(
805805
// no crate attributes, print out an error and exit
806806
return Compilation::Continue;
807807
};
808+
let t_outputs = rustc_interface::util::build_output_filenames(attrs, sess);
808809
let id = rustc_session::output::find_crate_name(sess, attrs);
809-
let t_outputs = rustc_interface::util::build_output_filenames(sess, id.to_string());
810810
let crate_types = collect_crate_types(sess, attrs);
811811
for &style in &crate_types {
812812
let fname =

compiler/rustc_interface/src/queries.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ impl<'tcx> Queries<'tcx> {
135135
sess.opts.cg.metadata.clone(),
136136
sess.cfg_version,
137137
);
138-
let outputs = util::build_output_filenames(sess, crate_name.to_string());
138+
let outputs = util::build_output_filenames(&pre_configured_attrs, sess);
139139
let dep_graph = setup_dep_graph(sess, crate_name, stable_crate_id)?;
140140

141141
let lint_store =

compiler/rustc_interface/src/util.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -469,14 +469,20 @@ fn multiple_output_types_to_stdout(
469469
}
470470
}
471471

472-
pub fn build_output_filenames(sess: &Session, crate_name: String) -> OutputFilenames {
472+
pub fn build_output_filenames(attrs: &[ast::Attribute], sess: &Session) -> OutputFilenames {
473473
if multiple_output_types_to_stdout(
474474
&sess.opts.output_types,
475475
sess.io.output_file == Some(OutFileName::Stdout),
476476
) {
477477
sess.emit_fatal(errors::MultipleOutputTypesToStdout);
478478
}
479479

480+
let crate_name = sess
481+
.opts
482+
.crate_name
483+
.clone()
484+
.or_else(|| rustc_attr::find_crate_name(attrs).map(|n| n.to_string()));
485+
480486
match sess.io.output_file {
481487
None => {
482488
// "-" as input file will cause the parser to read from stdin so we
@@ -485,11 +491,11 @@ pub fn build_output_filenames(sess: &Session, crate_name: String) -> OutputFilen
485491
let dirpath = sess.io.output_dir.clone().unwrap_or_default();
486492

487493
// If a crate name is present, we use it as the link name
488-
let stem = crate_name.clone();
494+
let stem = crate_name.clone().unwrap_or_else(|| sess.io.input.filestem().to_owned());
489495

490496
OutputFilenames::new(
491497
dirpath,
492-
crate_name,
498+
crate_name.unwrap_or_else(|| stem.replace('-', "_")),
493499
stem,
494500
None,
495501
sess.io.temps_dir.clone(),
@@ -518,7 +524,7 @@ pub fn build_output_filenames(sess: &Session, crate_name: String) -> OutputFilen
518524
out_file.filestem().unwrap_or_default().to_str().unwrap().to_string();
519525
OutputFilenames::new(
520526
out_file.parent().unwrap_or_else(|| Path::new("")).to_path_buf(),
521-
crate_name,
527+
crate_name.unwrap_or_else(|| out_filestem.replace('-', "_")),
522528
out_filestem,
523529
ofile,
524530
sess.io.temps_dir.clone(),

0 commit comments

Comments
 (0)