Skip to content

Commit

Permalink
Don't emit an error about failing to produce a file with a specific name
Browse files Browse the repository at this point in the history
If user never gave an explicit name
  • Loading branch information
pacak committed Mar 22, 2024
1 parent 03994e4 commit 1cdf50b
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_ssa/src/back/write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ fn produce_final_output_artifacts(
.unwrap()
.to_owned();

if crate_output.outputs.contains_key(&output_type) {
if crate_output.outputs.contains_explicit_name(&output_type) {
// 2) Multiple codegen units, with `--emit foo=some_name`. We have
// no good solution for this case, so warn the user.
sess.dcx().emit_warn(errors::IgnoringEmitPath { extension });
Expand Down
5 changes: 5 additions & 0 deletions compiler/rustc_session/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,11 @@ impl OutputTypes {
self.0.contains_key(key)
}

/// Returns `true` if user specified a name and not just produced type
pub fn contains_explicit_name(&self, key: &OutputType) -> bool {
self.0.get(key).map_or(false, |f| f.is_some())
}

pub fn iter(&self) -> BTreeMapIter<'_, OutputType, Option<OutFileName>> {
self.0.iter()
}
Expand Down
23 changes: 23 additions & 0 deletions tests/ui/no-explicit-path-issue-122509.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//@ build-pass
//@ compile-flags: -C codegen-units=2 --emit asm

fn one() -> usize {
1
}

pub mod a {
pub fn two() -> usize {
::one() + ::one()
}
}

pub mod b {
pub fn three() -> usize {
::one() + ::a::two()
}
}

fn main() {
a::two();
b::three();
}

0 comments on commit 1cdf50b

Please sign in to comment.