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
|
@ -7,7 +7,7 @@ use crate::MirPass;
|
|||
use rustc_middle::mir::write_mir_pretty;
|
||||
use rustc_middle::mir::Body;
|
||||
use rustc_middle::ty::TyCtxt;
|
||||
use rustc_session::config::OutputType;
|
||||
use rustc_session::config::{OutFileName, OutputType};
|
||||
|
||||
pub struct Marker(pub &'static str);
|
||||
|
||||
|
@ -20,8 +20,15 @@ impl<'tcx> MirPass<'tcx> for Marker {
|
|||
}
|
||||
|
||||
pub fn emit_mir(tcx: TyCtxt<'_>) -> io::Result<()> {
|
||||
let path = tcx.output_filenames(()).path(OutputType::Mir);
|
||||
let mut f = io::BufWriter::new(File::create(&path)?);
|
||||
write_mir_pretty(tcx, None, &mut f)?;
|
||||
match tcx.output_filenames(()).path(OutputType::Mir) {
|
||||
OutFileName::Stdout => {
|
||||
let mut f = io::stdout();
|
||||
write_mir_pretty(tcx, None, &mut f)?;
|
||||
}
|
||||
OutFileName::Real(path) => {
|
||||
let mut f = io::BufWriter::new(File::create(&path)?);
|
||||
write_mir_pretty(tcx, None, &mut f)?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue