From e0114e78b9d4a7e0f05b1b4c1c0d9942436c34b0 Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Tue, 2 May 2023 09:29:09 +0000 Subject: [PATCH] Avoid interpreting code that has lint errors --- src/tools/miri/src/bin/miri.rs | 4 +++- src/tools/miri/tests/fail/deny_lint.rs | 8 ++++++++ src/tools/miri/tests/fail/deny_lint.stderr | 12 ++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/tools/miri/tests/fail/deny_lint.rs create mode 100644 src/tools/miri/tests/fail/deny_lint.stderr diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs index e4ca40570b7fe..a77b6e53353c9 100644 --- a/src/tools/miri/src/bin/miri.rs +++ b/src/tools/miri/src/bin/miri.rs @@ -63,7 +63,9 @@ impl rustc_driver::Callbacks for MiriCompilerCalls { queries: &'tcx rustc_interface::Queries<'tcx>, ) -> Compilation { queries.global_ctxt().unwrap().enter(|tcx| { - tcx.sess.abort_if_errors(); + if tcx.sess.compile_status().is_err() { + tcx.sess.fatal("miri cannot be run on programs that fail compilation"); + } init_late_loggers(tcx); if !tcx.sess.crate_types().contains(&CrateType::Executable) { diff --git a/src/tools/miri/tests/fail/deny_lint.rs b/src/tools/miri/tests/fail/deny_lint.rs new file mode 100644 index 0000000000000..a0cb24c51bd87 --- /dev/null +++ b/src/tools/miri/tests/fail/deny_lint.rs @@ -0,0 +1,8 @@ +//@error-pattern: miri cannot be run on programs that fail compilation + +#![deny(warnings)] + +struct Foo; +//~^ ERROR: struct `Foo` is never constructed + +fn main() {} diff --git a/src/tools/miri/tests/fail/deny_lint.stderr b/src/tools/miri/tests/fail/deny_lint.stderr new file mode 100644 index 0000000000000..bb48fcc20383d --- /dev/null +++ b/src/tools/miri/tests/fail/deny_lint.stderr @@ -0,0 +1,12 @@ +error: struct `Foo` is never constructed + --> $DIR/deny_lint.rs:LL:CC + | +LL | struct Foo; + | ^^^ + | + = note: `-D dead-code` implied by `-D unused` + +error: miri cannot be run on programs that fail compilation + +error: aborting due to 2 previous errors +