summaryrefslogtreecommitdiffstats
path: root/src/test/ui/mir/mir_early_return_scope.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/mir/mir_early_return_scope.rs')
-rw-r--r--src/test/ui/mir/mir_early_return_scope.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/mir/mir_early_return_scope.rs b/src/test/ui/mir/mir_early_return_scope.rs
new file mode 100644
index 000000000..a696471c3
--- /dev/null
+++ b/src/test/ui/mir/mir_early_return_scope.rs
@@ -0,0 +1,29 @@
+// run-pass
+#![allow(unused_variables)]
+static mut DROP: bool = false;
+
+struct ConnWrap(Conn);
+impl ::std::ops::Deref for ConnWrap {
+ type Target=Conn;
+ fn deref(&self) -> &Conn { &self.0 }
+}
+
+struct Conn;
+impl Drop for Conn {
+ fn drop(&mut self) { unsafe { DROP = true; } }
+}
+
+fn inner() {
+ let conn = &*match Some(ConnWrap(Conn)) {
+ Some(val) => val,
+ None => return,
+ };
+ return;
+}
+
+fn main() {
+ inner();
+ unsafe {
+ assert_eq!(DROP, true);
+ }
+}