about summary refs log tree commit diff
path: root/tests/ui/drop
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2025-02-22 22:05:48 +0000
committerMichael Goulet <michael@errs.io>2025-02-24 18:31:50 +0000
commitbab03bf1768fea8512ece42dea6d66f6f4743145 (patch)
treeaf787f4b79f30a8211018bae679c7ec51f57437d /tests/ui/drop
parent617aad8c2e8783f6df8e5d1f8bb1e4bcdc70aa7b (diff)
downloadrust-bab03bf1768fea8512ece42dea6d66f6f4743145.tar.gz
rust-bab03bf1768fea8512ece42dea6d66f6f4743145.zip
Improve behavior of IF_LET_RESCOPE around temporaries and place expressions
Diffstat (limited to 'tests/ui/drop')
-rw-r--r--tests/ui/drop/lint-if-let-rescope-false-positives.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/ui/drop/lint-if-let-rescope-false-positives.rs b/tests/ui/drop/lint-if-let-rescope-false-positives.rs
new file mode 100644
index 00000000000..533d0f2f982
--- /dev/null
+++ b/tests/ui/drop/lint-if-let-rescope-false-positives.rs
@@ -0,0 +1,29 @@
+//@ edition: 2021
+//@ check-pass
+
+#![deny(if_let_rescope)]
+
+struct Drop;
+impl std::ops::Drop for Drop {
+    fn drop(&mut self) {
+        println!("drop")
+    }
+}
+
+impl Drop {
+    fn as_ref(&self) -> Option<i32> {
+        Some(1)
+    }
+}
+
+fn consume(_: impl Sized) -> Option<i32> { Some(1) }
+
+fn main() {
+    let drop = Drop;
+
+    // Make sure we don't drop if we don't actually make a temporary.
+    if let None = drop.as_ref() {} else {}
+
+    // Make sure we don't lint if we consume the droppy value.
+    if let None = consume(Drop) {} else {}
+}