about summary refs log tree commit diff
path: root/src/libcoretest/ptr.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2016-07-17 00:15:15 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2016-07-17 10:21:07 +0300
commit9c5039a128ba2fa69eb979c314f158aa680ff6a2 (patch)
tree3bb41cc6e8bcf8571d5300c2918615fd9434d5af /src/libcoretest/ptr.rs
parent103e5c9b37d6cdc4552b353cdf3fd2772dae760c (diff)
downloadrust-9c5039a128ba2fa69eb979c314f158aa680ff6a2.tar.gz
rust-9c5039a128ba2fa69eb979c314f158aa680ff6a2.zip
Implement traits for variadic function pointers
Diffstat (limited to 'src/libcoretest/ptr.rs')
-rw-r--r--src/libcoretest/ptr.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcoretest/ptr.rs b/src/libcoretest/ptr.rs
index 343db93d4a9..e0a9f4e5d42 100644
--- a/src/libcoretest/ptr.rs
+++ b/src/libcoretest/ptr.rs
@@ -171,3 +171,17 @@ fn test_unsized_unique() {
     let zs: &mut [i32] = &mut [1, 2, 3];
     assert!(ys == zs);
 }
+
+#[test]
+fn test_variadic_fnptr() {
+    use core::hash::{Hash, SipHasher};
+    extern "C" {
+        fn printf(_: *const u8, ...);
+    }
+    let p: unsafe extern "C" fn(*const u8, ...) = printf;
+    let q = p.clone();
+    assert_eq!(p, q);
+    assert!(!(p < q));
+    let mut s = SipHasher::new();
+    assert_eq!(p.hash(&mut s), q.hash(&mut s));
+}