Skip to content

Commit

Permalink
add UI test for unpretty
Browse files Browse the repository at this point in the history
  • Loading branch information
chenyukang committed Aug 28, 2022
1 parent 9678751 commit 2237c6c
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 5 deletions.
10 changes: 5 additions & 5 deletions compiler/rustc_driver/src/pretty.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! The various pretty-printing routines.

use crate::session_diagnostics::UnprettyDumpFail;
use rustc_ast as ast;
use rustc_ast_pretty::pprust;
use rustc_errors::ErrorGuaranteed;
Expand Down Expand Up @@ -362,11 +363,10 @@ fn write_or_print(out: &str, ofile: Option<&Path>, sess: &Session) {
None => print!("{}", out),
Some(p) => {
if let Err(e) = std::fs::write(p, out) {
let mut err = sess.struct_fatal(&format!(
"pretty-print failed to write {} due to error `{e}`",
p.display()
));
err.emit();
sess.emit_fatal(UnprettyDumpFail {
path: p.display().to_string(),
err: e.to_string(),
});
}
}
}
Expand Down
7 changes: 7 additions & 0 deletions compiler/rustc_driver/src/session_diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,10 @@ pub(crate) struct RLinkRustcVersionMismatch<'a> {
#[derive(SessionDiagnostic)]
#[diag(driver::rlink_no_a_file)]
pub(crate) struct RlinkNotAFile;

#[derive(SessionDiagnostic)]
#[diag(driver::unpretty_dump_fail)]
pub(crate) struct UnprettyDumpFail {
pub path: String,
pub err: String,
}
2 changes: 2 additions & 0 deletions compiler/rustc_error_messages/locales/en-US/driver.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ driver_rlink_encoding_version_mismatch = .rlink file was produced with encoding
driver_rlink_rustc_version_mismatch = .rlink file was produced by rustc version `{$rustc_version}`, but the current version is `{$current_version}`
driver_rlink_no_a_file = rlink must be a file
driver_unpretty_dump_fail = pretty-print failed to write `{$path}` due to error `{$err}`
3 changes: 3 additions & 0 deletions src/test/ui/unpretty/avoid-crash.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// compile-flags: -o/tmp/ -Zunpretty=ast-tree

fn main() {}
4 changes: 4 additions & 0 deletions src/test/ui/unpretty/avoid-crash.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
error: pretty-print failed to write `/tmp/` due to error `Is a directory (os error 21)`

error: aborting due to previous error

0 comments on commit 2237c6c

Please sign in to comment.