Auto merge of #42709 - stepancheg:discriminant-hash, r=jseyfried

deriv(Hash) for single-variant enum should not hash discriminant

Fixes #39137
This commit is contained in:
bors 2017-06-28 06:32:10 +00:00
commit 5bc8941638
6 changed files with 20 additions and 10 deletions

View file

@ -45,8 +45,8 @@ impl<'a> Hasher for FakeHasher<'a> {
}
}
fn fake_hash(v: &mut Vec<u8>, e: E) {
e.hash(&mut FakeHasher(v));
fn fake_hash<A: Hash>(v: &mut Vec<u8>, a: A) {
a.hash(&mut FakeHasher(v));
}
fn main() {
@ -69,4 +69,13 @@ fn main() {
fake_hash(&mut va, E::A);
fake_hash(&mut vb, E::B);
assert!(va != vb);
// issue #39137: single variant enum hash should not hash discriminant
#[derive(Hash)]
enum SingleVariantEnum {
A(u8),
}
let mut v = vec![];
fake_hash(&mut v, SingleVariantEnum::A(17));
assert_eq!(vec![17], v);
}