diff options
| author | bors <bors@rust-lang.org> | 2013-05-17 06:46:32 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-05-17 06:46:32 -0700 |
| commit | 290a2ebab61282d89b211192679e84d22a01fd14 (patch) | |
| tree | 07244bb12c47783ef31fe4c3aaa10d0094b5699d /src/libcore/util.rs | |
| parent | dbbc244f7303113ad7a0be01ffb8aa617b199c4b (diff) | |
| parent | 8c5de02289d515a367746d062b81e4d473e558ee (diff) | |
| download | rust-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.rs | 15 |
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 () + } + } } |
