pretty printing give proper erro message without panic
This commit is contained in:
parent
eaadb8947b
commit
9678751a88
1 changed files with 9 additions and 5 deletions
|
@ -357,12 +357,16 @@ fn get_source(input: &Input, sess: &Session) -> (String, FileName) {
|
||||||
(src, src_name)
|
(src, src_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn write_or_print(out: &str, ofile: Option<&Path>) {
|
fn write_or_print(out: &str, ofile: Option<&Path>, sess: &Session) {
|
||||||
match ofile {
|
match ofile {
|
||||||
None => print!("{}", out),
|
None => print!("{}", out),
|
||||||
Some(p) => {
|
Some(p) => {
|
||||||
if let Err(e) = std::fs::write(p, out) {
|
if let Err(e) = std::fs::write(p, out) {
|
||||||
panic!("print-print failed to write {} due to {}", p.display(), e);
|
let mut err = sess.struct_fatal(&format!(
|
||||||
|
"pretty-print failed to write {} due to error `{e}`",
|
||||||
|
p.display()
|
||||||
|
));
|
||||||
|
err.emit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -402,7 +406,7 @@ pub fn print_after_parsing(
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
write_or_print(&out, ofile);
|
write_or_print(&out, ofile, sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn print_after_hir_lowering<'tcx>(
|
pub fn print_after_hir_lowering<'tcx>(
|
||||||
|
@ -468,7 +472,7 @@ pub fn print_after_hir_lowering<'tcx>(
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
write_or_print(&out, ofile);
|
write_or_print(&out, ofile, tcx.sess);
|
||||||
}
|
}
|
||||||
|
|
||||||
// In an ideal world, this would be a public function called by the driver after
|
// In an ideal world, this would be a public function called by the driver after
|
||||||
|
@ -512,7 +516,7 @@ fn print_with_analysis(
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
write_or_print(&out, ofile);
|
write_or_print(&out, ofile, tcx.sess);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue