diff options
Diffstat (limited to 'src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs')
-rw-r--r-- | src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs b/src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs new file mode 100644 index 000000000..43c1c7759 --- /dev/null +++ b/src/test/ui/dropck/dropck_no_diverge_on_nonregular_1.rs @@ -0,0 +1,26 @@ +// Issue 22443: Reject code using non-regular types that would +// otherwise cause dropck to loop infinitely. + +use std::marker::PhantomData; + +struct Digit<T> { + elem: T +} + +struct Node<T:'static> { m: PhantomData<&'static T> } + + +enum FingerTree<T:'static> { + Single(T), + // Bug report said Digit after Box would stack overflow (versus + // Digit before Box; see dropck_no_diverge_on_nonregular_2). + Deep( + Box<FingerTree<Node<T>>>, + Digit<T>, + ) +} + +fn main() { + let ft = //~ ERROR overflow while adding drop-check rules for FingerTree + FingerTree::Single(1); +} |