| //@ check-pass |
| // This test is reduced from librustc_ast. It is just checking that we |
| // can successfully deal with a "deep" structure, which the drop-check |
| // was hitting a recursion limit on at one point. |
| |
| //@ pretty-expanded FIXME #23616 |
| |
| #![allow(non_camel_case_types)] |
| |
| pub fn noop_fold_impl_item() -> SmallVector<ImplItem> { |
| loop { } |
| } |
| |
| pub struct SmallVector<T>(P<T>); |
| pub struct ImplItem(P<S01_Method>); |
| |
| struct P<T>(Box<T>); |
| |
| struct S01_Method(P<S02_Generics>); |
| struct S02_Generics(P<S03_TyParam>); |
| struct S03_TyParam(P<S04_TyParamBound>); |
| struct S04_TyParamBound(S05_PolyTraitRef); |
| struct S05_PolyTraitRef(S06_TraitRef); |
| struct S06_TraitRef(S07_Path); |
| struct S07_Path(Vec<S08_PathSegment>); |
| struct S08_PathSegment(S09_GenericArgs); |
| struct S09_GenericArgs(P<S10_ParenthesizedParameterData>); |
| struct S10_ParenthesizedParameterData(Option<P<S11_Ty>>); |
| struct S11_Ty(P<S12_Expr>); |
| struct S12_Expr(P<S13_Block>); |
| struct S13_Block(Vec<P<S14_Stmt>>); |
| struct S14_Stmt(P<S15_Decl>); |
| struct S15_Decl(P<S16_Local>); |
| struct S16_Local(P<S17_Pat>); |
| struct S17_Pat(P<S18_Mac>); |
| struct S18_Mac(Vec<P<S19_TokenTree>>); |
| struct S19_TokenTree(P<S20_Token>); |
| struct S20_Token(P<S21_Nonterminal>); |
| struct S21_Nonterminal(P<S22_Item>); |
| struct S22_Item(P<S23_EnumDef>); |
| struct S23_EnumDef(Vec<P<S24_Variant>>); |
| struct S24_Variant(P<S25_VariantKind>); |
| struct S25_VariantKind(P<S26_StructDef>); |
| struct S26_StructDef(Vec<P<S27_StructField>>); |
| struct S27_StructField(P<S28_StructFieldKind>); |
| struct S28_StructFieldKind; |
| |
| pub fn main() {} |