diff options
| author | Ben Kimock <kimockb@gmail.com> | 2022-10-09 15:18:08 -0400 |
|---|---|---|
| committer | Ben Kimock <kimockb@gmail.com> | 2022-10-09 15:18:08 -0400 |
| commit | bfd5bfe6ba007039eacb75ed087ef893bce70e77 (patch) | |
| tree | fa6d3854bcc23972a0039c79306ca4ce84c4865d | |
| parent | 0ca356586fed56002b10920fd21ddf6fb12de797 (diff) | |
| download | rust-bfd5bfe6ba007039eacb75ed087ef893bce70e77.tar.gz rust-bfd5bfe6ba007039eacb75ed087ef893bce70e77.zip | |
Add a regression test for #39137
| -rw-r--r-- | src/test/ui/deriving/deriving-hash.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/ui/deriving/deriving-hash.rs b/src/test/ui/deriving/deriving-hash.rs index 8b51370bca5..16738ec4ae4 100644 --- a/src/test/ui/deriving/deriving-hash.rs +++ b/src/test/ui/deriving/deriving-hash.rs @@ -44,6 +44,17 @@ fn fake_hash<A: Hash>(v: &mut Vec<u8>, a: A) { a.hash(&mut FakeHasher(v)); } +struct OnlyOneByteHasher; +impl Hasher for OnlyOneByteHasher { + fn finish(&self) -> u64 { + unreachable!() + } + + fn write(&mut self, bytes: &[u8]) { + assert_eq!(bytes.len(), 1); + } +} + fn main() { let person1 = Person { id: 5, @@ -73,4 +84,13 @@ fn main() { let mut v = vec![]; fake_hash(&mut v, SingleVariantEnum::A(17)); assert_eq!(vec![17], v); + + // issue #39137 + #[repr(u8)] + #[derive(Hash)] + enum E { + A, + B, + } + E::A.hash(&mut OnlyOneByteHasher); } |
