diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-10-16 17:51:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-16 17:51:30 +0200 |
| commit | 91c7d02e69c3704ca283699fd4eeb9b09508e078 (patch) | |
| tree | a6da618997253cf2e6ec6e84dc46c329e4f72e66 | |
| parent | 8be3ce9056d17f822704b8994f60668adf180fe8 (diff) | |
| parent | bfd5bfe6ba007039eacb75ed087ef893bce70e77 (diff) | |
| download | rust-91c7d02e69c3704ca283699fd4eeb9b09508e078.tar.gz rust-91c7d02e69c3704ca283699fd4eeb9b09508e078.zip | |
Rollup merge of #102857 - saethlin:derived-enum-hash-test, r=Mark-Simulacrum
Add a regression test for #39137 The problem in the issue has been fixed in the meantime, so since this adds a regression test I think this closes https://github.com/rust-lang/rust/issues/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); } |
