about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDing Xiang Fei <dingxiangfei2009@protonmail.ch>2022-07-22 18:13:17 +0800
committerDing Xiang Fei <dingxiangfei2009@protonmail.ch>2022-07-22 18:13:17 +0800
commit60be2de8b7b8a1c4eee7e065b8cef38ea629a6a3 (patch)
tree61e643c51c88fa50a2712e3a3d0509ee857d0821
parentbaf9a7cb57120ec1411196214fd0d1c33fb18bf6 (diff)
downloadrust-60be2de8b7b8a1c4eee7e065b8cef38ea629a6a3.tar.gz
rust-60be2de8b7b8a1c4eee7e065b8cef38ea629a6a3.zip
include a demo that more programs can be compiled
-rw-r--r--src/test/ui/let-else/let-else-temporary-lifetime.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/ui/let-else/let-else-temporary-lifetime.rs b/src/test/ui/let-else/let-else-temporary-lifetime.rs
index 064f28b4d94..9c86901b97f 100644
--- a/src/test/ui/let-else/let-else-temporary-lifetime.rs
+++ b/src/test/ui/let-else/let-else-temporary-lifetime.rs
@@ -30,6 +30,21 @@ fn main() {
     println!("Should have dropped 👆");
 
     {
+        // cf. https://github.com/rust-lang/rust/pull/99518#issuecomment-1191520030
+        struct Foo<'a>(&'a mut u32);
+
+        impl<'a> Drop for Foo<'a> {
+            fn drop(&mut self) {
+                *self.0 = 0;
+            }
+        }
+        let mut foo = 0;
+        let Foo(0) = Foo(&mut foo) else {
+            *&mut foo = 1;
+            todo!()
+        };
+    }
+    {
         let x = String::from("Hey");
 
         let Ok(s) = foo(&x) else { panic!() };
@@ -61,6 +76,8 @@ fn main() {
     }
     {
         // test let-else drops temps before else block
+        // NOTE: this test has to be the last block in the `main`
+        // body.
         let rc = Rc::new(0);
         let 1 = *rc.clone() else {
             Rc::try_unwrap(rc).unwrap();