diff --git a/src/libcore/finally.rs b/src/libcore/finally.rs index a21ec892dd7..4c2a2ff1086 100644 --- a/src/libcore/finally.rs +++ b/src/libcore/finally.rs @@ -32,7 +32,11 @@ //! # } //! ``` -#![unstable] +#![deprecated = "It is unclear if this module is more robust than implementing \ + Drop on a custom type, and this module is being removed with no \ + replacement. Use a custom Drop implementation to regain existing \ + functionality."] +#![allow(deprecated)] use ops::{Drop, FnMut, FnOnce}; diff --git a/src/test/run-pass/backtrace.rs b/src/test/run-pass/backtrace.rs index da5fa19f816..320ad0bf4d1 100644 --- a/src/test/run-pass/backtrace.rs +++ b/src/test/run-pass/backtrace.rs @@ -12,11 +12,12 @@ // ignore-windows FIXME #13259 #![feature(unboxed_closures)] +#![feature(unsafe_destructor)] use std::os; use std::io::process::Command; -use std::finally::Finally; use std::str; +use std::ops::{Drop, FnMut, FnOnce}; #[inline(never)] fn foo() { @@ -28,11 +29,15 @@ fn foo() { #[inline(never)] fn double() { - (|&mut:| { - panic!("once"); - }).finally(|| { - panic!("twice"); - }) + struct Double; + + impl Drop for Double { + fn drop(&mut self) { panic!("twice") } + } + + let _d = Double; + + panic!("once"); } fn runtest(me: &str) {