diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.rs b/src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.rs new file mode 100644 index 000000000..edd07652e --- /dev/null +++ b/src/test/ui/dropck/dropck_no_diverge_on_nonregular_2.rs @@ -0,0 +1,25 @@ +// 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 before Box would infinite loop (versus + // Digit after Box; see dropck_no_diverge_on_nonregular_1). + Deep( + Digit<T>, + Box<FingerTree<Node<T>>>, + ) +} + +fn main() { + let ft = //~ ERROR overflow while adding drop-check rules for FingerTree + FingerTree::Single(1); +} |