about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-09-23 15:40:22 +0200
committerGitHub <noreply@github.com>2022-09-23 15:40:22 +0200
commit0d0186939bb08989fb7864930fbf7a384f491a0c (patch)
tree1de7cf616b2b020c434cb2215dd141921996a99a
parent3a8bad98d71448290c58913bc42dfbea49855aad (diff)
parenta7cdfafafb78ddddaaf5ab0c7e14cefc71d3a1db (diff)
downloadrust-0d0186939bb08989fb7864930fbf7a384f491a0c.tar.gz
rust-0d0186939bb08989fb7864930fbf7a384f491a0c.zip
Rollup merge of #102148 - RalfJung:miri-test, r=oli-obk
add regression test for miri issue 2433

Adding this here because the test needs to be run with debug assertions enabled to be sure so I had to run it in the rustc workspace.

Cc https://github.com/rust-lang/miri/issues/2433
r? ``@oli-obk``
-rw-r--r--src/tools/miri/cargo-miri/src/main.rs1
-rw-r--r--src/tools/miri/src/lib.rs1
-rw-r--r--src/tools/miri/tests/pass/issues/issue-miri-2433.rs22
3 files changed, 24 insertions, 0 deletions
diff --git a/src/tools/miri/cargo-miri/src/main.rs b/src/tools/miri/cargo-miri/src/main.rs
index 331c4c9c2b0..da891ef0772 100644
--- a/src/tools/miri/cargo-miri/src/main.rs
+++ b/src/tools/miri/cargo-miri/src/main.rs
@@ -1,3 +1,4 @@
+#![cfg_attr(bootstrap, feature(let_else))]
 #![allow(clippy::useless_format, clippy::derive_partial_eq_without_eq, rustc::internal)]
 
 #[macro_use]
diff --git a/src/tools/miri/src/lib.rs b/src/tools/miri/src/lib.rs
index 6006d6c89db..cda27beab30 100644
--- a/src/tools/miri/src/lib.rs
+++ b/src/tools/miri/src/lib.rs
@@ -10,6 +10,7 @@
 #![feature(is_some_with)]
 #![feature(nonzero_ops)]
 #![feature(local_key_cell_methods)]
+#![cfg_attr(bootstrap, feature(let_else))]
 // Configure clippy and other lints
 #![allow(
     clippy::collapsible_else_if,
diff --git a/src/tools/miri/tests/pass/issues/issue-miri-2433.rs b/src/tools/miri/tests/pass/issues/issue-miri-2433.rs
new file mode 100644
index 00000000000..de719df0f1f
--- /dev/null
+++ b/src/tools/miri/tests/pass/issues/issue-miri-2433.rs
@@ -0,0 +1,22 @@
+#![feature(type_alias_impl_trait)]
+
+trait T { type Item; }
+
+type Alias<'a> = impl T<Item = &'a ()>;
+
+struct S;
+impl<'a> T for &'a S {
+    type Item = &'a ();
+}
+
+fn filter_positive<'a>() -> Alias<'a> {
+    &S
+}
+
+fn with_positive(fun: impl Fn(Alias<'_>)) {
+    fun(filter_positive());
+}
+
+fn main() {
+    with_positive(|_| ());
+}