// Issue 22443: Reject code using non-regular types that would // otherwise cause dropck to loop infinitely. // // This version is just checking that we still sanely handle a trivial // wrapper around the non-regular type. (It also demonstrates how the // error messages will report different types depending on which type // dropck is analyzing.) use std::marker::PhantomData; struct Digit { elem: T } struct Node { m: PhantomData<&'static T> } enum FingerTree { Single(T), // According to the bug report, Digit before Box would infinite loop. Deep( Digit, Box>>, ) } enum Wrapper { Simple, Other(FingerTree), } fn main() { let w = //~ ERROR overflow while adding drop-check rules for Option Some(Wrapper::Simple::); //~^ ERROR overflow while adding drop-check rules for Wrapper }