about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-10-16 17:51:30 +0200
committerGitHub <noreply@github.com>2022-10-16 17:51:30 +0200
commit91c7d02e69c3704ca283699fd4eeb9b09508e078 (patch)
treea6da618997253cf2e6ec6e84dc46c329e4f72e66
parent8be3ce9056d17f822704b8994f60668adf180fe8 (diff)
parentbfd5bfe6ba007039eacb75ed087ef893bce70e77 (diff)
downloadrust-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.rs20
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);
 }