about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustpkg/tests.rs2
-rw-r--r--src/libstd/unstable/finally.rs38
2 files changed, 17 insertions, 23 deletions
diff --git a/src/librustpkg/tests.rs b/src/librustpkg/tests.rs
index 8df84b27fcc..b8cce8055d3 100644
--- a/src/librustpkg/tests.rs
+++ b/src/librustpkg/tests.rs
@@ -280,7 +280,7 @@ fn test_package_version() {
 
 // FIXME #7006: Fails on linux for some reason
 #[test]
-#[ignore(cfg(target_os = "linux"))]
+#[ignore]
 fn test_package_request_version() {
     let temp_pkg_id = PkgId::new("github.com/catamorphism/test_pkg_version#0.3");
     let temp = mk_empty_workspace(&LocalPath(Path("test_pkg_version")), &ExactRevision(~"0.3"));
diff --git a/src/libstd/unstable/finally.rs b/src/libstd/unstable/finally.rs
index 5001fb421cd..b15bceddb1c 100644
--- a/src/libstd/unstable/finally.rs
+++ b/src/libstd/unstable/finally.rs
@@ -31,17 +31,20 @@ pub trait Finally<T> {
     fn finally(&self, dtor: &fn()) -> T;
 }
 
-impl<'self,T> Finally<T> for &'self fn() -> T {
-    fn finally(&self, dtor: &fn()) -> T {
-        let _d = Finallyalizer {
-            dtor: dtor
-        };
-
-        (*self)()
+macro_rules! finally_fn {
+    ($fnty:ty) => {
+        impl<T> Finally<T> for $fnty {
+            fn finally(&self, dtor: &fn()) -> T {
+                let _d = Finallyalizer {
+                    dtor: dtor
+                };
+                (*self)()
+            }
+        }
     }
 }
 
-impl<T> Finally<T> for ~fn() -> T {
+impl<'self,T> Finally<T> for &'self fn() -> T {
     fn finally(&self, dtor: &fn()) -> T {
         let _d = Finallyalizer {
             dtor: dtor
@@ -51,15 +54,9 @@ impl<T> Finally<T> for ~fn() -> T {
     }
 }
 
-impl<T> Finally<T> for @fn() -> T {
-    fn finally(&self, dtor: &fn()) -> T {
-        let _d = Finallyalizer {
-            dtor: dtor
-        };
-
-        (*self)()
-    }
-}
+finally_fn!(~fn() -> T)
+finally_fn!(@fn() -> T)
+finally_fn!(extern "Rust" fn() -> T)
 
 struct Finallyalizer<'self> {
     dtor: &'self fn()
@@ -108,10 +105,7 @@ fn test_retval() {
 
 #[test]
 fn test_compact() {
-    // FIXME #4727: Should be able to use a fn item instead
-    // of a closure for do_some_fallible_work,
-    // but it's a type error.
-    let do_some_fallible_work: &fn() = || { };
+    fn do_some_fallible_work() {}
     fn but_always_run_this_function() { }
     do_some_fallible_work.finally(
         but_always_run_this_function);
@@ -136,4 +130,4 @@ fn test_managed() {
     };
     assert_eq!(do managed.finally {}, 10);
     assert_eq!(*i, 20);
-}
\ No newline at end of file
+}