Write to stdout if -
is given as output file
If `-o -` or `--emit KIND=-` is provided, output will be written to stdout instead. Binary output (`obj`, `llvm-bc`, `link` and `metadata`) being written this way will result in an error unless stdout is not a tty. Multiple output types going to stdout will trigger an error too, as they will all be mixded together.
This commit is contained in:
parent
1221e43bdf
commit
9b1a1e1d95
32 changed files with 456 additions and 101 deletions
|
@ -34,7 +34,9 @@ use rustc_interface::{interface, Queries};
|
|||
use rustc_lint::LintStore;
|
||||
use rustc_metadata::locator;
|
||||
use rustc_session::config::{nightly_options, CG_OPTIONS, Z_OPTIONS};
|
||||
use rustc_session::config::{ErrorOutputType, Input, OutputType, PrintRequest, TrimmedDefPaths};
|
||||
use rustc_session::config::{
|
||||
ErrorOutputType, Input, OutFileName, OutputType, PrintRequest, TrimmedDefPaths,
|
||||
};
|
||||
use rustc_session::cstore::MetadataLoader;
|
||||
use rustc_session::getopts::{self, Matches};
|
||||
use rustc_session::lint::{Lint, LintId};
|
||||
|
@ -437,9 +439,12 @@ fn run_compiler(
|
|||
}
|
||||
|
||||
// Extract output directory and file from matches.
|
||||
fn make_output(matches: &getopts::Matches) -> (Option<PathBuf>, Option<PathBuf>) {
|
||||
fn make_output(matches: &getopts::Matches) -> (Option<PathBuf>, Option<OutFileName>) {
|
||||
let odir = matches.opt_str("out-dir").map(|o| PathBuf::from(&o));
|
||||
let ofile = matches.opt_str("o").map(|o| PathBuf::from(&o));
|
||||
let ofile = matches.opt_str("o").map(|o| match o.as_str() {
|
||||
"-" => OutFileName::Stdout,
|
||||
path => OutFileName::Real(PathBuf::from(path)),
|
||||
});
|
||||
(odir, ofile)
|
||||
}
|
||||
|
||||
|
@ -685,7 +690,7 @@ fn print_crate_info(
|
|||
for &style in &crate_types {
|
||||
let fname =
|
||||
rustc_session::output::filename_for_input(sess, style, id, &t_outputs);
|
||||
safe_println!("{}", fname.file_name().unwrap().to_string_lossy());
|
||||
safe_println!("{}", fname.as_path().file_name().unwrap().to_string_lossy());
|
||||
}
|
||||
}
|
||||
Cfg => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue