diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2015-03-09 16:30:26 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2015-03-09 17:59:20 +0530 |
| commit | bfcf53f7ad6de8cda2ee4367b2de001fa97d8b0b (patch) | |
| tree | 4b364a065e84758b926add4c17754827ef039402 | |
| parent | 43984618eb5c56d69ef1659fd506e26a0fd2d9bb (diff) | |
| parent | 103636114d67417048758b4a4d236383af2d44dd (diff) | |
| download | rust-bfcf53f7ad6de8cda2ee4367b2de001fa97d8b0b.tar.gz rust-bfcf53f7ad6de8cda2ee4367b2de001fa97d8b0b.zip | |
Rollup merge of #23210 - richo:rust-o, r=alexcrichton
rustc will ICE if you specify an outfile path that is bare without a directory. As a workaround, before this -o ./foo will work It wasn't clear to me where I could put a test that actually invokes rustc from a shell, although I think I can add doctests to that machinery in librustc_driver that will arrange for this to be called with arguments that would trigger the ICE
| -rw-r--r-- | src/librustc_driver/driver.rs | 7 | ||||
| -rw-r--r-- | src/test/run-make/bare-outfile/Makefile | 4 | ||||
| -rw-r--r-- | src/test/run-make/bare-outfile/foo.rs | 12 |
3 files changed, 21 insertions, 2 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 565782b29e9..dc27a301109 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -927,7 +927,7 @@ pub fn build_output_filenames(input: &Input, // We want to toss everything after the final '.' let dirpath = match *odir { Some(ref d) => d.clone(), - None => PathBuf::new(".") + None => PathBuf::new("") }; // If a crate name is present, we use it as the link name @@ -954,8 +954,11 @@ pub fn build_output_filenames(input: &Input, if *odir != None { sess.warn("ignoring --out-dir flag due to -o flag."); } + + let cur_dir = Path::new(""); + OutputFilenames { - out_directory: out_file.parent().unwrap().to_path_buf(), + out_directory: out_file.parent().unwrap_or(cur_dir).to_path_buf(), out_filestem: out_file.file_stem().unwrap() .to_str().unwrap().to_string(), single_output_file: ofile, diff --git a/src/test/run-make/bare-outfile/Makefile b/src/test/run-make/bare-outfile/Makefile new file mode 100644 index 00000000000..e6cd3851e03 --- /dev/null +++ b/src/test/run-make/bare-outfile/Makefile @@ -0,0 +1,4 @@ +-include ../tools.mk + +all: + rustc -o foo foo.rs diff --git a/src/test/run-make/bare-outfile/foo.rs b/src/test/run-make/bare-outfile/foo.rs new file mode 100644 index 00000000000..63e747901ae --- /dev/null +++ b/src/test/run-make/bare-outfile/foo.rs @@ -0,0 +1,12 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn main() { +} |
