about summary refs log tree commit diff
path: root/src/libcore/util.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-05-17 06:46:32 -0700
committerbors <bors@rust-lang.org>2013-05-17 06:46:32 -0700
commit290a2ebab61282d89b211192679e84d22a01fd14 (patch)
tree07244bb12c47783ef31fe4c3aaa10d0094b5699d /src/libcore/util.rs
parentdbbc244f7303113ad7a0be01ffb8aa617b199c4b (diff)
parent8c5de02289d515a367746d062b81e4d473e558ee (diff)
downloadrust-290a2ebab61282d89b211192679e84d22a01fd14.tar.gz
rust-290a2ebab61282d89b211192679e84d22a01fd14.zip
auto merge of #6442 : sstewartgallus/rust/incoming, r=pcwalton
Added unit test to prevent similar mistakes from happening again. The
previous method was wrong because it dereferenced a pointer to a void type to
match on the result. No self pointer was needed, and the correct method
signature took the self value by value.

I feel silly that I made this mistake in https://github.com/mozilla/rust/pull/6348
Diffstat (limited to 'src/libcore/util.rs')
-rw-r--r--src/libcore/util.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/libcore/util.rs b/src/libcore/util.rs
index d270fb23aaa..e5067fb90bc 100644
--- a/src/libcore/util.rs
+++ b/src/libcore/util.rs
@@ -138,8 +138,8 @@ pub enum Void { }
 
 pub impl Void {
     /// A utility function for ignoring this uninhabited type
-    fn uninhabited(&self) -> ! {
-        match *self {
+    fn uninhabited(self) -> ! {
+        match self {
             // Nothing to match on
         }
     }
@@ -177,7 +177,8 @@ pub fn unreachable() -> ! {
 #[cfg(test)]
 mod tests {
     use option::{None, Some};
-    use util::{NonCopyable, id, replace, swap};
+    use util::{Void, NonCopyable, id, replace, swap};
+    use either::{Either, Left, Right};
 
     #[test]
     pub fn identity_crisis() {
@@ -202,4 +203,12 @@ mod tests {
         assert!(x.is_none());
         assert!(y.is_some());
     }
+    #[test]
+    pub fn test_uninhabited() {
+        let could_only_be_coin : Either <Void, ()> = Right (());
+        match could_only_be_coin {
+            Right (coin) => coin,
+            Left (is_void) => is_void.uninhabited ()
+        }
+    }
 }