fn recurse()

in hphp/hack/src/oxidized/aast_visitor/node_mut_impl_gen.rs [707:1080]


    fn recurse<'node>(
        &'node mut self,
        c: &mut P::Context,
        v: &mut dyn VisitorMut<'node, Params = P>,
    ) -> Result<(), P::Error> {
        #[inline]
        fn helper0<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(
                Option<(Targ<Ex>, Targ<Ex>)>,
                Vec<(Expr<Ex, En>, Expr<Ex, En>)>,
            )>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper1<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Option<Targ<Ex>>, Vec<Expr<Ex, En>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper2<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(VcKind, Option<Targ<Ex>>, Vec<Expr<Ex, En>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper3<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(KvcKind, Option<(Targ<Ex>, Targ<Ex>)>, Vec<Field<Ex, En>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper4<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Option<Expr<Ex, En>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper5<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Expr<Ex, En>, OgNullFlavor, PropOrMethod)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)?;
            a.3.accept(c, v)
        }
        #[inline]
        fn helper6<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ClassId<Ex, En>, ClassGetExpr<Ex, En>, PropOrMethod)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper7<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ClassId<Ex, En>, Pstring)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper8<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(
                Expr<Ex, En>,
                Vec<Targ<Ex>>,
                Vec<(ast_defs::ParamKind, Expr<Ex, En>)>,
                Option<Expr<Ex, En>>,
            )>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)?;
            a.3.accept(c, v)
        }
        #[inline]
        fn helper9<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(FunctionPtrId<Ex, En>, Vec<Targ<Ex>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper10<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(String, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper11<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Hint, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper12<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ast_defs::Uop, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper13<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ast_defs::Bop, Expr<Ex, En>, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper14<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Lid, Expr<Ex, En>, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper15<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Option<Expr<Ex, En>>, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper16<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Hint)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper17<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Hint, bool)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper18<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Hint)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper19<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(
                ClassId<Ex, En>,
                Vec<Targ<Ex>>,
                Vec<Expr<Ex, En>>,
                Option<Expr<Ex, En>>,
                Ex,
            )>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)?;
            a.3.accept(c, v)?;
            v.visit_ex(c, &mut a.4)
        }
        #[inline]
        fn helper20<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Fun_<Ex, En>, Vec<Lid>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper21<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Fun_<Ex, En>, Vec<Lid>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper22<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ClassName, Vec<XhpAttribute<Ex, En>>, Vec<Expr<Ex, En>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper23<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ImportFlavor, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper24<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ClassName, Option<CollectionTarg<Ex>>, Vec<Afield<Ex, En>>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper25<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Pstring)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper26<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ClassName, Pstring)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper27<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(ClassId<Ex, En>, Pstring)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper28<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Option<(Targ<Ex>, Targ<Ex>)>, Expr<Ex, En>, Expr<Ex, En>)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)?;
            a.2.accept(c, v)
        }
        #[inline]
        fn helper29<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Option<ClassName>, String)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            a.1.accept(c, v)
        }
        #[inline]
        fn helper30<'node, P: Params + Params<Ex = Ex> + Params<En = En>, Ex, En>(
            a: &'node mut Box<(Expr<Ex, En>, Ex, Ex, HoleSource)>,
            c: &mut P::Context,
            v: &mut dyn VisitorMut<'node, Params = P>,
        ) -> Result<(), P::Error> {
            a.0.accept(c, v)?;
            v.visit_ex(c, &mut a.1)?;
            v.visit_ex(c, &mut a.2)?;
            a.3.accept(c, v)
        }
        match self {
            Expr_::Darray(a) => helper0(a, c, v),
            Expr_::Varray(a) => helper1(a, c, v),
            Expr_::Shape(a0) => a0.accept(c, v),
            Expr_::ValCollection(a) => helper2(a, c, v),
            Expr_::KeyValCollection(a) => helper3(a, c, v),
            Expr_::Null => Ok(()),
            Expr_::This => Ok(()),
            Expr_::True => Ok(()),
            Expr_::False => Ok(()),
            Expr_::Omitted => Ok(()),
            Expr_::Id(a0) => a0.accept(c, v),
            Expr_::Lvar(a0) => a0.accept(c, v),
            Expr_::Dollardollar(a0) => a0.accept(c, v),
            Expr_::Clone(a0) => a0.accept(c, v),
            Expr_::ArrayGet(a) => helper4(a, c, v),
            Expr_::ObjGet(a) => helper5(a, c, v),
            Expr_::ClassGet(a) => helper6(a, c, v),
            Expr_::ClassConst(a) => helper7(a, c, v),
            Expr_::Call(a) => helper8(a, c, v),
            Expr_::FunctionPointer(a) => helper9(a, c, v),
            Expr_::Int(a0) => a0.accept(c, v),
            Expr_::Float(a0) => a0.accept(c, v),
            Expr_::String(a0) => a0.accept(c, v),
            Expr_::String2(a0) => a0.accept(c, v),
            Expr_::PrefixedString(a) => helper10(a, c, v),
            Expr_::Yield(a0) => a0.accept(c, v),
            Expr_::Await(a0) => a0.accept(c, v),
            Expr_::ReadonlyExpr(a0) => a0.accept(c, v),
            Expr_::Tuple(a0) => a0.accept(c, v),
            Expr_::List(a0) => a0.accept(c, v),
            Expr_::Cast(a) => helper11(a, c, v),
            Expr_::Unop(a) => helper12(a, c, v),
            Expr_::Binop(a) => helper13(a, c, v),
            Expr_::Pipe(a) => helper14(a, c, v),
            Expr_::Eif(a) => helper15(a, c, v),
            Expr_::Is(a) => helper16(a, c, v),
            Expr_::As(a) => helper17(a, c, v),
            Expr_::Upcast(a) => helper18(a, c, v),
            Expr_::New(a) => helper19(a, c, v),
            Expr_::Efun(a) => helper20(a, c, v),
            Expr_::Lfun(a) => helper21(a, c, v),
            Expr_::Xml(a) => helper22(a, c, v),
            Expr_::Import(a) => helper23(a, c, v),
            Expr_::Collection(a) => helper24(a, c, v),
            Expr_::ExpressionTree(a0) => a0.accept(c, v),
            Expr_::Lplaceholder(a0) => a0.accept(c, v),
            Expr_::FunId(a0) => a0.accept(c, v),
            Expr_::MethodId(a) => helper25(a, c, v),
            Expr_::MethodCaller(a) => helper26(a, c, v),
            Expr_::SmethodId(a) => helper27(a, c, v),
            Expr_::Pair(a) => helper28(a, c, v),
            Expr_::ETSplice(a0) => a0.accept(c, v),
            Expr_::EnumClassLabel(a) => helper29(a, c, v),
            Expr_::Hole(a) => helper30(a, c, v),
        }
    }