diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
commit | 698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch) | |
tree | 173a775858bd501c378080a10dca74132f05bc50 /src/tools/clippy/tests/ui/crashes/ice-6840.rs | |
parent | Initial commit. (diff) | |
download | rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip |
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/tools/clippy/tests/ui/crashes/ice-6840.rs')
-rw-r--r-- | src/tools/clippy/tests/ui/crashes/ice-6840.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/crashes/ice-6840.rs b/src/tools/clippy/tests/ui/crashes/ice-6840.rs new file mode 100644 index 000000000..d789f60c5 --- /dev/null +++ b/src/tools/clippy/tests/ui/crashes/ice-6840.rs @@ -0,0 +1,31 @@ +//! This is a reproducer for the ICE 6840: https://github.com/rust-lang/rust-clippy/issues/6840. +//! The ICE is caused by `TyCtxt::layout_of` and `is_normalizable` not being strict enough +#![allow(dead_code)] +use std::collections::HashMap; + +pub trait Rule { + type DependencyKey; +} + +pub struct RuleEdges<R: Rule> { + dependencies: R::DependencyKey, +} + +type RuleDependencyEdges<R> = HashMap<u32, RuleEdges<R>>; + +// reproducer from the GitHub issue ends here +// but check some additional variants +type RuleDependencyEdgesArray<R> = HashMap<u32, [RuleEdges<R>; 8]>; +type RuleDependencyEdgesSlice<R> = HashMap<u32, &'static [RuleEdges<R>]>; +type RuleDependencyEdgesRef<R> = HashMap<u32, &'static RuleEdges<R>>; +type RuleDependencyEdgesRaw<R> = HashMap<u32, *const RuleEdges<R>>; +type RuleDependencyEdgesTuple<R> = HashMap<u32, (RuleEdges<R>, RuleEdges<R>)>; + +// and an additional checks to make sure fix doesn't have stack-overflow issue +// on self-containing types +pub struct SelfContaining { + inner: Box<SelfContaining>, +} +type SelfContainingEdges = HashMap<u32, SelfContaining>; + +fn main() {} |