|
11 | 11 | use back::archive::{Archive, METADATA_FILENAME}; |
12 | 12 | use back::rpath; |
13 | 13 | use back::svh::Svh; |
14 | | -use driver::driver::{CrateTranslation, OutputFilenames}; |
| 14 | +use driver::driver::{CrateTranslation, OutputFilenames, Input, FileInput}; |
15 | 15 | use driver::config::NoDebugInfo; |
16 | 16 | use driver::session::Session; |
17 | 17 | use driver::config; |
@@ -545,10 +545,9 @@ pub mod write { |
545 | 545 | * system linkers understand. |
546 | 546 | */ |
547 | 547 |
|
548 | | -// FIXME (#9639): This needs to handle non-utf8 `out_filestem` values |
549 | 548 | pub fn find_crate_name(sess: Option<&Session>, |
550 | 549 | attrs: &[ast::Attribute], |
551 | | - out_filestem: &str) -> String { |
| 550 | + input: &Input) -> String { |
552 | 551 | use syntax::crateid::CrateId; |
553 | 552 |
|
554 | 553 | let validate = |s: String, span: Option<Span>| { |
@@ -591,11 +590,17 @@ pub fn find_crate_name(sess: Option<&Session>, |
591 | 590 | } |
592 | 591 | None => {} |
593 | 592 | } |
594 | | - return validate(from_str(out_filestem).unwrap_or_else(|| { |
595 | | - let mut s = out_filestem.chars().filter(|c| c.is_XID_continue()); |
596 | | - from_str(s.collect::<String>().as_slice()) |
597 | | - .or(from_str("rust-out")).unwrap() |
598 | | - }), None) |
| 593 | + match *input { |
| 594 | + FileInput(ref path) => { |
| 595 | + match path.filestem_str() { |
| 596 | + Some(s) => return validate(s.to_string(), None), |
| 597 | + None => {} |
| 598 | + } |
| 599 | + } |
| 600 | + _ => {} |
| 601 | + } |
| 602 | + |
| 603 | + "rust-out".to_string() |
599 | 604 | } |
600 | 605 |
|
601 | 606 | pub fn build_link_meta(sess: &Session, krate: &ast::Crate, |
|
0 commit comments