diff options
| author | Michael Goulet <michael@errs.io> | 2021-12-13 20:36:17 -0800 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2021-12-13 20:36:17 -0800 |
| commit | 75729afcc040f8df101baebc7eba438dfb044d72 (patch) | |
| tree | ba388dd587cd66937b43ed1e99b686ec3e4c3dc2 | |
| parent | 8f117a77d0880ed59afcc1a19c72ec5c1e44b97c (diff) | |
| download | rust-75729afcc040f8df101baebc7eba438dfb044d72.tar.gz rust-75729afcc040f8df101baebc7eba438dfb044d72.zip | |
Fix HashStable implementation on InferTy
| -rw-r--r-- | compiler/rustc_type_ir/src/lib.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/traits/vtable/issue-91807.rs | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/compiler/rustc_type_ir/src/lib.rs b/compiler/rustc_type_ir/src/lib.rs index 91dbbec782f..f11c93e9339 100644 --- a/compiler/rustc_type_ir/src/lib.rs +++ b/compiler/rustc_type_ir/src/lib.rs @@ -559,6 +559,7 @@ impl<CTX> HashStable<CTX> for FloatTy { impl<CTX> HashStable<CTX> for InferTy { fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher) { use InferTy::*; + discriminant(self).hash_stable(ctx, hasher); match self { TyVar(v) => v.as_u32().hash_stable(ctx, hasher), IntVar(v) => v.index.hash_stable(ctx, hasher), diff --git a/src/test/ui/traits/vtable/issue-91807.rs b/src/test/ui/traits/vtable/issue-91807.rs new file mode 100644 index 00000000000..f435ff09dc3 --- /dev/null +++ b/src/test/ui/traits/vtable/issue-91807.rs @@ -0,0 +1,17 @@ +// check-pass +// incremental + +struct Struct<T>(T); + +impl<T> std::ops::Deref for Struct<T> { + type Target = dyn Fn(T); + fn deref(&self) -> &Self::Target { + unimplemented!() + } +} + +fn main() { + let f = Struct(Default::default()); + f(0); + f(0); +} |
