1 // Copyright (c) Facebook, Inc. and its affiliates.
3 // This source code is licensed under the MIT license found in the
4 // LICENSE file in the "hack" directory of this source tree.
6 // @generated SignedSource<<86962ca5ef1bda664f6e3c2fb6bfee3b>>
8 // To regenerate this file, run:
9 // hphp/hack/src/oxidized_regen.sh
11 #![allow(unused_variables)]
12 use super::node::Node;
13 use super::type_params::Params;
14 use super::visitor::Visitor;
15 use crate::{aast::*, aast_defs::*, ast_defs::*, doc_comment::*};
16 impl<P: Params> Node<P> for Abstraction {
20 v: &mut dyn Visitor<'node, P = P>,
21 ) -> Result<(), P::Error> {
22 v.visit_abstraction(c, self)
27 v: &mut dyn Visitor<'node, P = P>,
28 ) -> Result<(), P::Error> {
30 Abstraction::Concrete => Ok(()),
31 Abstraction::Abstract => Ok(()),
35 impl<P: Params> Node<P> for Afield<P::Ex, P::En> {
39 v: &mut dyn Visitor<'node, P = P>,
40 ) -> Result<(), P::Error> {
41 v.visit_afield(c, self)
46 v: &mut dyn Visitor<'node, P = P>,
47 ) -> Result<(), P::Error> {
49 Afield::AFvalue(a0) => {
53 Afield::AFkvalue(a0, a1) => {
61 impl<P: Params> Node<P> for AsExpr<P::Ex, P::En> {
65 v: &mut dyn Visitor<'node, P = P>,
66 ) -> Result<(), P::Error> {
67 v.visit_as_expr(c, self)
72 v: &mut dyn Visitor<'node, P = P>,
73 ) -> Result<(), P::Error> {
79 AsExpr::AsKv(a0, a1) => {
84 AsExpr::AwaitAsV(a0, a1) => {
89 AsExpr::AwaitAsKv(a0, a1, a2) => {
98 impl<P: Params> Node<P> for Bop {
102 v: &mut dyn Visitor<'node, P = P>,
103 ) -> Result<(), P::Error> {
109 v: &mut dyn Visitor<'node, P = P>,
110 ) -> Result<(), P::Error> {
113 Bop::Minus => Ok(()),
115 Bop::Slash => Ok(()),
117 Bop::Eqeqeq => Ok(()),
118 Bop::Starstar => Ok(()),
120 Bop::Diff2 => Ok(()),
121 Bop::Ampamp => Ok(()),
122 Bop::Barbar => Ok(()),
132 Bop::Percent => Ok(()),
135 Bop::QuestionQuestion => Ok(()),
143 impl<P: Params> Node<P> for CaField<P::Ex, P::En> {
147 v: &mut dyn Visitor<'node, P = P>,
148 ) -> Result<(), P::Error> {
149 v.visit_ca_field(c, self)
154 v: &mut dyn Visitor<'node, P = P>,
155 ) -> Result<(), P::Error> {
156 self.type_.accept(c, v)?;
157 self.id.accept(c, v)?;
158 self.value.accept(c, v)?;
159 self.required.accept(c, v)?;
163 impl<P: Params> Node<P> for CaType {
167 v: &mut dyn Visitor<'node, P = P>,
168 ) -> Result<(), P::Error> {
169 v.visit_ca_type(c, self)
174 v: &mut dyn Visitor<'node, P = P>,
175 ) -> Result<(), P::Error> {
177 CaType::CAHint(a0) => {
181 CaType::CAEnum(a0) => {
188 impl<P: Params> Node<P> for Case<P::Ex, P::En> {
192 v: &mut dyn Visitor<'node, P = P>,
193 ) -> Result<(), P::Error> {
194 v.visit_case(c, self)
199 v: &mut dyn Visitor<'node, P = P>,
200 ) -> Result<(), P::Error> {
202 Case::Default(a0, a1) => {
207 Case::Case(a0, a1) => {
215 impl<P: Params> Node<P> for Catch<P::Ex, P::En> {
219 v: &mut dyn Visitor<'node, P = P>,
220 ) -> Result<(), P::Error> {
221 v.visit_catch(c, self)
226 v: &mut dyn Visitor<'node, P = P>,
227 ) -> Result<(), P::Error> {
228 self.0.accept(c, v)?;
229 self.1.accept(c, v)?;
230 self.2.accept(c, v)?;
234 impl<P: Params> Node<P> for ClassAbstractTypeconst {
238 v: &mut dyn Visitor<'node, P = P>,
239 ) -> Result<(), P::Error> {
240 v.visit_class_abstract_typeconst(c, self)
245 v: &mut dyn Visitor<'node, P = P>,
246 ) -> Result<(), P::Error> {
247 self.as_constraint.accept(c, v)?;
248 self.super_constraint.accept(c, v)?;
249 self.default.accept(c, v)?;
253 impl<P: Params> Node<P> for ClassAttr<P::Ex, P::En> {
257 v: &mut dyn Visitor<'node, P = P>,
258 ) -> Result<(), P::Error> {
259 v.visit_class_attr(c, self)
264 v: &mut dyn Visitor<'node, P = P>,
265 ) -> Result<(), P::Error> {
267 ClassAttr::CAName(a0) => {
271 ClassAttr::CAField(a0) => {
278 impl<P: Params> Node<P> for ClassConcreteTypeconst {
282 v: &mut dyn Visitor<'node, P = P>,
283 ) -> Result<(), P::Error> {
284 v.visit_class_concrete_typeconst(c, self)
289 v: &mut dyn Visitor<'node, P = P>,
290 ) -> Result<(), P::Error> {
291 self.c_tc_type.accept(c, v)?;
295 impl<P: Params> Node<P> for ClassConst<P::Ex, P::En> {
299 v: &mut dyn Visitor<'node, P = P>,
300 ) -> Result<(), P::Error> {
301 v.visit_class_const(c, self)
306 v: &mut dyn Visitor<'node, P = P>,
307 ) -> Result<(), P::Error> {
308 self.type_.accept(c, v)?;
309 self.id.accept(c, v)?;
310 self.kind.accept(c, v)?;
311 self.doc_comment.accept(c, v)?;
315 impl<P: Params> Node<P> for ClassConstKind<P::Ex, P::En> {
319 v: &mut dyn Visitor<'node, P = P>,
320 ) -> Result<(), P::Error> {
321 v.visit_class_const_kind(c, self)
326 v: &mut dyn Visitor<'node, P = P>,
327 ) -> Result<(), P::Error> {
329 ClassConstKind::CCAbstract(a0) => {
333 ClassConstKind::CCConcrete(a0) => {
340 impl<P: Params> Node<P> for ClassGetExpr<P::Ex, P::En> {
344 v: &mut dyn Visitor<'node, P = P>,
345 ) -> Result<(), P::Error> {
346 v.visit_class_get_expr(c, self)
351 v: &mut dyn Visitor<'node, P = P>,
352 ) -> Result<(), P::Error> {
354 ClassGetExpr::CGstring(a0) => {
358 ClassGetExpr::CGexpr(a0) => {
365 impl<P: Params> Node<P> for ClassId<P::Ex, P::En> {
369 v: &mut dyn Visitor<'node, P = P>,
370 ) -> Result<(), P::Error> {
371 v.visit_class_id(c, self)
376 v: &mut dyn Visitor<'node, P = P>,
377 ) -> Result<(), P::Error> {
378 v.visit_ex(c, &self.0)?;
379 self.1.accept(c, v)?;
380 self.2.accept(c, v)?;
384 impl<P: Params> Node<P> for ClassId_<P::Ex, P::En> {
388 v: &mut dyn Visitor<'node, P = P>,
389 ) -> Result<(), P::Error> {
390 v.visit_class_id_(c, self)
395 v: &mut dyn Visitor<'node, P = P>,
396 ) -> Result<(), P::Error> {
398 ClassId_::CIparent => Ok(()),
399 ClassId_::CIself => Ok(()),
400 ClassId_::CIstatic => Ok(()),
401 ClassId_::CIexpr(a0) => {
405 ClassId_::CI(a0) => {
412 impl<P: Params> Node<P> for ClassPartiallyAbstractTypeconst {
416 v: &mut dyn Visitor<'node, P = P>,
417 ) -> Result<(), P::Error> {
418 v.visit_class_partially_abstract_typeconst(c, self)
423 v: &mut dyn Visitor<'node, P = P>,
424 ) -> Result<(), P::Error> {
425 self.constraint.accept(c, v)?;
426 self.type_.accept(c, v)?;
430 impl<P: Params> Node<P> for ClassTypeconst {
434 v: &mut dyn Visitor<'node, P = P>,
435 ) -> Result<(), P::Error> {
436 v.visit_class_typeconst(c, self)
441 v: &mut dyn Visitor<'node, P = P>,
442 ) -> Result<(), P::Error> {
444 ClassTypeconst::TCAbstract(a0) => {
448 ClassTypeconst::TCConcrete(a0) => {
452 ClassTypeconst::TCPartiallyAbstract(a0) => {
459 impl<P: Params> Node<P> for ClassTypeconstDef<P::Ex, P::En> {
463 v: &mut dyn Visitor<'node, P = P>,
464 ) -> Result<(), P::Error> {
465 v.visit_class_typeconst_def(c, self)
470 v: &mut dyn Visitor<'node, P = P>,
471 ) -> Result<(), P::Error> {
472 self.user_attributes.accept(c, v)?;
473 self.name.accept(c, v)?;
474 self.kind.accept(c, v)?;
475 self.span.accept(c, v)?;
476 self.doc_comment.accept(c, v)?;
477 self.is_ctx.accept(c, v)?;
481 impl<P: Params> Node<P> for ClassVar<P::Ex, P::En> {
485 v: &mut dyn Visitor<'node, P = P>,
486 ) -> Result<(), P::Error> {
487 v.visit_class_var(c, self)
492 v: &mut dyn Visitor<'node, P = P>,
493 ) -> Result<(), P::Error> {
494 self.final_.accept(c, v)?;
495 self.xhp_attr.accept(c, v)?;
496 self.abstract_.accept(c, v)?;
497 self.readonly.accept(c, v)?;
498 self.visibility.accept(c, v)?;
499 self.type_.accept(c, v)?;
500 self.id.accept(c, v)?;
501 self.expr.accept(c, v)?;
502 self.user_attributes.accept(c, v)?;
503 self.doc_comment.accept(c, v)?;
504 self.is_promoted_variadic.accept(c, v)?;
505 self.is_static.accept(c, v)?;
506 self.span.accept(c, v)?;
510 impl<P: Params> Node<P> for Class_<P::Ex, P::En> {
514 v: &mut dyn Visitor<'node, P = P>,
515 ) -> Result<(), P::Error> {
516 v.visit_class_(c, self)
521 v: &mut dyn Visitor<'node, P = P>,
522 ) -> Result<(), P::Error> {
523 self.span.accept(c, v)?;
524 v.visit_en(c, &self.annotation)?;
525 self.mode.accept(c, v)?;
526 self.final_.accept(c, v)?;
527 self.is_xhp.accept(c, v)?;
528 self.has_xhp_keyword.accept(c, v)?;
529 self.kind.accept(c, v)?;
530 self.name.accept(c, v)?;
531 self.tparams.accept(c, v)?;
532 self.extends.accept(c, v)?;
533 self.uses.accept(c, v)?;
534 self.use_as_alias.accept(c, v)?;
535 self.insteadof_alias.accept(c, v)?;
536 self.xhp_attr_uses.accept(c, v)?;
537 self.xhp_category.accept(c, v)?;
538 self.reqs.accept(c, v)?;
539 self.implements.accept(c, v)?;
540 self.where_constraints.accept(c, v)?;
541 self.consts.accept(c, v)?;
542 self.typeconsts.accept(c, v)?;
543 self.vars.accept(c, v)?;
544 self.methods.accept(c, v)?;
545 self.attributes.accept(c, v)?;
546 self.xhp_children.accept(c, v)?;
547 self.xhp_attrs.accept(c, v)?;
548 self.namespace.accept(c, v)?;
549 self.user_attributes.accept(c, v)?;
550 self.file_attributes.accept(c, v)?;
551 self.enum_.accept(c, v)?;
552 self.doc_comment.accept(c, v)?;
553 self.emit_id.accept(c, v)?;
557 impl<P: Params> Node<P> for ClassishKind {
561 v: &mut dyn Visitor<'node, P = P>,
562 ) -> Result<(), P::Error> {
563 v.visit_classish_kind(c, self)
568 v: &mut dyn Visitor<'node, P = P>,
569 ) -> Result<(), P::Error> {
571 ClassishKind::Cclass(a0) => {
575 ClassishKind::Cinterface => Ok(()),
576 ClassishKind::Ctrait => Ok(()),
577 ClassishKind::Cenum => Ok(()),
578 ClassishKind::CenumClass(a0) => {
585 impl<P: Params> Node<P> for CollectionTarg<P::Ex> {
589 v: &mut dyn Visitor<'node, P = P>,
590 ) -> Result<(), P::Error> {
591 v.visit_collection_targ(c, self)
596 v: &mut dyn Visitor<'node, P = P>,
597 ) -> Result<(), P::Error> {
599 CollectionTarg::CollectionTV(a0) => {
603 CollectionTarg::CollectionTKV(a0, a1) => {
611 impl<P: Params> Node<P> for ConstraintKind {
615 v: &mut dyn Visitor<'node, P = P>,
616 ) -> Result<(), P::Error> {
617 v.visit_constraint_kind(c, self)
622 v: &mut dyn Visitor<'node, P = P>,
623 ) -> Result<(), P::Error> {
625 ConstraintKind::ConstraintAs => Ok(()),
626 ConstraintKind::ConstraintEq => Ok(()),
627 ConstraintKind::ConstraintSuper => Ok(()),
631 impl<P: Params> Node<P> for Contexts {
635 v: &mut dyn Visitor<'node, P = P>,
636 ) -> Result<(), P::Error> {
637 v.visit_contexts(c, self)
642 v: &mut dyn Visitor<'node, P = P>,
643 ) -> Result<(), P::Error> {
644 self.0.accept(c, v)?;
645 self.1.accept(c, v)?;
649 impl<P: Params> Node<P> for Def<P::Ex, P::En> {
653 v: &mut dyn Visitor<'node, P = P>,
654 ) -> Result<(), P::Error> {
660 v: &mut dyn Visitor<'node, P = P>,
661 ) -> Result<(), P::Error> {
671 Def::RecordDef(a0) => {
679 Def::Typedef(a0) => {
683 Def::Constant(a0) => {
687 Def::Namespace(a) => {
692 Def::NamespaceUse(a0) => {
696 Def::SetNamespaceEnv(a0) => {
700 Def::FileAttributes(a0) => {
707 impl<P: Params> Node<P> for DocComment {
711 v: &mut dyn Visitor<'node, P = P>,
712 ) -> Result<(), P::Error> {
713 v.visit_doc_comment(c, self)
718 v: &mut dyn Visitor<'node, P = P>,
719 ) -> Result<(), P::Error> {
720 self.0.accept(c, v)?;
724 impl<P: Params> Node<P> for EmitId {
728 v: &mut dyn Visitor<'node, P = P>,
729 ) -> Result<(), P::Error> {
730 v.visit_emit_id(c, self)
735 v: &mut dyn Visitor<'node, P = P>,
736 ) -> Result<(), P::Error> {
738 EmitId::EmitId(a0) => {
742 EmitId::Anonymous => Ok(()),
746 impl<P: Params> Node<P> for Enum_ {
750 v: &mut dyn Visitor<'node, P = P>,
751 ) -> Result<(), P::Error> {
752 v.visit_enum_(c, self)
757 v: &mut dyn Visitor<'node, P = P>,
758 ) -> Result<(), P::Error> {
759 self.base.accept(c, v)?;
760 self.constraint.accept(c, v)?;
761 self.includes.accept(c, v)?;
765 impl<P: Params> Node<P> for EnvAnnot {
769 v: &mut dyn Visitor<'node, P = P>,
770 ) -> Result<(), P::Error> {
771 v.visit_env_annot(c, self)
776 v: &mut dyn Visitor<'node, P = P>,
777 ) -> Result<(), P::Error> {
779 EnvAnnot::Join => Ok(()),
780 EnvAnnot::Refinement => Ok(()),
784 impl<P: Params> Node<P> for Expr<P::Ex, P::En> {
788 v: &mut dyn Visitor<'node, P = P>,
789 ) -> Result<(), P::Error> {
790 v.visit_expr(c, self)
795 v: &mut dyn Visitor<'node, P = P>,
796 ) -> Result<(), P::Error> {
797 v.visit_ex(c, &self.0)?;
798 self.1.accept(c, v)?;
799 self.2.accept(c, v)?;
803 impl<P: Params> Node<P> for Expr_<P::Ex, P::En> {
807 v: &mut dyn Visitor<'node, P = P>,
808 ) -> Result<(), P::Error> {
809 v.visit_expr_(c, self)
814 v: &mut dyn Visitor<'node, P = P>,
815 ) -> Result<(), P::Error> {
817 Expr_::Darray(a) => {
822 Expr_::Varray(a) => {
827 Expr_::Shape(a0) => {
831 Expr_::ValCollection(a) => {
837 Expr_::KeyValCollection(a) => {
843 Expr_::Null => Ok(()),
844 Expr_::This => Ok(()),
845 Expr_::True => Ok(()),
846 Expr_::False => Ok(()),
847 Expr_::Omitted => Ok(()),
856 Expr_::Dollardollar(a0) => {
860 Expr_::Clone(a0) => {
864 Expr_::ArrayGet(a) => {
869 Expr_::ObjGet(a) => {
876 Expr_::ClassGet(a) => {
882 Expr_::ClassConst(a) => {
894 Expr_::FunctionPointer(a) => {
903 Expr_::Float(a0) => {
907 Expr_::String(a0) => {
911 Expr_::String2(a0) => {
915 Expr_::PrefixedString(a) => {
920 Expr_::Yield(a0) => {
924 Expr_::Await(a0) => {
928 Expr_::ReadonlyExpr(a0) => {
932 Expr_::Tuple(a0) => {
979 Expr_::Upcast(a) => {
989 v.visit_ex(c, &a.4)?;
992 Expr_::Record(a) => {
1013 Expr_::Callconv(a) => {
1018 Expr_::Import(a) => {
1023 Expr_::Collection(a) => {
1029 Expr_::ExpressionTree(a0) => {
1033 Expr_::Lplaceholder(a0) => {
1037 Expr_::FunId(a0) => {
1041 Expr_::MethodId(a) => {
1046 Expr_::MethodCaller(a) => {
1051 Expr_::SmethodId(a) => {
1062 Expr_::ETSplice(a0) => {
1066 Expr_::EnumClassLabel(a) => {
1073 v.visit_ex(c, &a.1)?;
1074 v.visit_ex(c, &a.2)?;
1081 impl<P: Params> Node<P> for ExpressionTree<P::Ex, P::En> {
1085 v: &mut dyn Visitor<'node, P = P>,
1086 ) -> Result<(), P::Error> {
1087 v.visit_expression_tree(c, self)
1092 v: &mut dyn Visitor<'node, P = P>,
1093 ) -> Result<(), P::Error> {
1094 self.hint.accept(c, v)?;
1095 self.splices.accept(c, v)?;
1096 self.function_pointers.accept(c, v)?;
1097 self.virtualized_expr.accept(c, v)?;
1098 self.runtime_expr.accept(c, v)?;
1102 impl<P: Params> Node<P> for Field<P::Ex, P::En> {
1106 v: &mut dyn Visitor<'node, P = P>,
1107 ) -> Result<(), P::Error> {
1108 v.visit_field(c, self)
1113 v: &mut dyn Visitor<'node, P = P>,
1114 ) -> Result<(), P::Error> {
1115 self.0.accept(c, v)?;
1116 self.1.accept(c, v)?;
1120 impl<P: Params> Node<P> for FileAttribute<P::Ex, P::En> {
1124 v: &mut dyn Visitor<'node, P = P>,
1125 ) -> Result<(), P::Error> {
1126 v.visit_file_attribute(c, self)
1131 v: &mut dyn Visitor<'node, P = P>,
1132 ) -> Result<(), P::Error> {
1133 self.user_attributes.accept(c, v)?;
1134 self.namespace.accept(c, v)?;
1138 impl<P: Params> Node<P> for FunDef<P::Ex, P::En> {
1142 v: &mut dyn Visitor<'node, P = P>,
1143 ) -> Result<(), P::Error> {
1144 v.visit_fun_def(c, self)
1149 v: &mut dyn Visitor<'node, P = P>,
1150 ) -> Result<(), P::Error> {
1151 self.namespace.accept(c, v)?;
1152 self.file_attributes.accept(c, v)?;
1153 self.mode.accept(c, v)?;
1154 self.fun.accept(c, v)?;
1158 impl<P: Params> Node<P> for FunKind {
1162 v: &mut dyn Visitor<'node, P = P>,
1163 ) -> Result<(), P::Error> {
1164 v.visit_fun_kind(c, self)
1169 v: &mut dyn Visitor<'node, P = P>,
1170 ) -> Result<(), P::Error> {
1172 FunKind::FSync => Ok(()),
1173 FunKind::FAsync => Ok(()),
1174 FunKind::FGenerator => Ok(()),
1175 FunKind::FAsyncGenerator => Ok(()),
1179 impl<P: Params> Node<P> for FunParam<P::Ex, P::En> {
1183 v: &mut dyn Visitor<'node, P = P>,
1184 ) -> Result<(), P::Error> {
1185 v.visit_fun_param(c, self)
1190 v: &mut dyn Visitor<'node, P = P>,
1191 ) -> Result<(), P::Error> {
1192 v.visit_ex(c, &self.annotation)?;
1193 self.type_hint.accept(c, v)?;
1194 self.is_variadic.accept(c, v)?;
1195 self.pos.accept(c, v)?;
1196 self.name.accept(c, v)?;
1197 self.expr.accept(c, v)?;
1198 self.readonly.accept(c, v)?;
1199 self.callconv.accept(c, v)?;
1200 self.user_attributes.accept(c, v)?;
1201 self.visibility.accept(c, v)?;
1205 impl<P: Params> Node<P> for FunVariadicity<P::Ex, P::En> {
1209 v: &mut dyn Visitor<'node, P = P>,
1210 ) -> Result<(), P::Error> {
1211 v.visit_fun_variadicity(c, self)
1216 v: &mut dyn Visitor<'node, P = P>,
1217 ) -> Result<(), P::Error> {
1219 FunVariadicity::FVvariadicArg(a0) => {
1223 FunVariadicity::FVellipsis(a0) => {
1227 FunVariadicity::FVnonVariadic => Ok(()),
1231 impl<P: Params> Node<P> for Fun_<P::Ex, P::En> {
1235 v: &mut dyn Visitor<'node, P = P>,
1236 ) -> Result<(), P::Error> {
1237 v.visit_fun_(c, self)
1242 v: &mut dyn Visitor<'node, P = P>,
1243 ) -> Result<(), P::Error> {
1244 self.span.accept(c, v)?;
1245 self.readonly_this.accept(c, v)?;
1246 v.visit_en(c, &self.annotation)?;
1247 self.readonly_ret.accept(c, v)?;
1248 self.ret.accept(c, v)?;
1249 self.name.accept(c, v)?;
1250 self.tparams.accept(c, v)?;
1251 self.where_constraints.accept(c, v)?;
1252 self.variadic.accept(c, v)?;
1253 self.params.accept(c, v)?;
1254 self.ctxs.accept(c, v)?;
1255 self.unsafe_ctxs.accept(c, v)?;
1256 self.body.accept(c, v)?;
1257 self.fun_kind.accept(c, v)?;
1258 self.user_attributes.accept(c, v)?;
1259 self.external.accept(c, v)?;
1260 self.doc_comment.accept(c, v)?;
1264 impl<P: Params> Node<P> for FuncBody<P::Ex, P::En> {
1268 v: &mut dyn Visitor<'node, P = P>,
1269 ) -> Result<(), P::Error> {
1270 v.visit_func_body(c, self)
1275 v: &mut dyn Visitor<'node, P = P>,
1276 ) -> Result<(), P::Error> {
1277 self.fb_ast.accept(c, v)?;
1281 impl<P: Params> Node<P> for FunctionPtrId<P::Ex, P::En> {
1285 v: &mut dyn Visitor<'node, P = P>,
1286 ) -> Result<(), P::Error> {
1287 v.visit_function_ptr_id(c, self)
1292 v: &mut dyn Visitor<'node, P = P>,
1293 ) -> Result<(), P::Error> {
1295 FunctionPtrId::FPId(a0) => {
1299 FunctionPtrId::FPClassConst(a0, a1) => {
1307 impl<P: Params> Node<P> for Gconst<P::Ex, P::En> {
1311 v: &mut dyn Visitor<'node, P = P>,
1312 ) -> Result<(), P::Error> {
1313 v.visit_gconst(c, self)
1318 v: &mut dyn Visitor<'node, P = P>,
1319 ) -> Result<(), P::Error> {
1320 v.visit_en(c, &self.annotation)?;
1321 self.mode.accept(c, v)?;
1322 self.name.accept(c, v)?;
1323 self.type_.accept(c, v)?;
1324 self.value.accept(c, v)?;
1325 self.namespace.accept(c, v)?;
1326 self.span.accept(c, v)?;
1327 self.emit_id.accept(c, v)?;
1331 impl<P: Params> Node<P> for HfParamInfo {
1335 v: &mut dyn Visitor<'node, P = P>,
1336 ) -> Result<(), P::Error> {
1337 v.visit_hf_param_info(c, self)
1342 v: &mut dyn Visitor<'node, P = P>,
1343 ) -> Result<(), P::Error> {
1344 self.kind.accept(c, v)?;
1345 self.readonlyness.accept(c, v)?;
1349 impl<P: Params> Node<P> for Hint {
1353 v: &mut dyn Visitor<'node, P = P>,
1354 ) -> Result<(), P::Error> {
1355 v.visit_hint(c, self)
1360 v: &mut dyn Visitor<'node, P = P>,
1361 ) -> Result<(), P::Error> {
1362 self.0.accept(c, v)?;
1363 self.1.accept(c, v)?;
1367 impl<P: Params> Node<P> for HintFun {
1371 v: &mut dyn Visitor<'node, P = P>,
1372 ) -> Result<(), P::Error> {
1373 v.visit_hint_fun(c, self)
1378 v: &mut dyn Visitor<'node, P = P>,
1379 ) -> Result<(), P::Error> {
1380 self.is_readonly.accept(c, v)?;
1381 self.param_tys.accept(c, v)?;
1382 self.param_info.accept(c, v)?;
1383 self.variadic_ty.accept(c, v)?;
1384 self.ctxs.accept(c, v)?;
1385 self.return_ty.accept(c, v)?;
1386 self.is_readonly_return.accept(c, v)?;
1390 impl<P: Params> Node<P> for Hint_ {
1394 v: &mut dyn Visitor<'node, P = P>,
1395 ) -> Result<(), P::Error> {
1396 v.visit_hint_(c, self)
1401 v: &mut dyn Visitor<'node, P = P>,
1402 ) -> Result<(), P::Error> {
1404 Hint_::Hoption(a0) => {
1408 Hint_::Hlike(a0) => {
1412 Hint_::Hfun(a0) => {
1416 Hint_::Htuple(a0) => {
1420 Hint_::Happly(a0, a1) => {
1425 Hint_::Hshape(a0) => {
1429 Hint_::Haccess(a0, a1) => {
1434 Hint_::Hsoft(a0) => {
1438 Hint_::Hany => Ok(()),
1439 Hint_::Herr => Ok(()),
1440 Hint_::Hmixed => Ok(()),
1441 Hint_::Hnonnull => Ok(()),
1442 Hint_::Habstr(a0, a1) => {
1447 Hint_::Hdarray(a0, a1) => {
1452 Hint_::Hvarray(a0) => {
1456 Hint_::HvarrayOrDarray(a0, a1) => {
1461 Hint_::HvecOrDict(a0, a1) => {
1466 Hint_::Hprim(a0) => {
1470 Hint_::Hthis => Ok(()),
1471 Hint_::Hdynamic => Ok(()),
1472 Hint_::Hnothing => Ok(()),
1473 Hint_::Hunion(a0) => {
1477 Hint_::Hintersection(a0) => {
1481 Hint_::HfunContext(a0) => {
1485 Hint_::Hvar(a0) => {
1492 impl<P: Params> Node<P> for HoleSource {
1496 v: &mut dyn Visitor<'node, P = P>,
1497 ) -> Result<(), P::Error> {
1498 v.visit_hole_source(c, self)
1503 v: &mut dyn Visitor<'node, P = P>,
1504 ) -> Result<(), P::Error> {
1506 HoleSource::Typing => Ok(()),
1507 HoleSource::UnsafeCast(a0) => {
1511 HoleSource::EnforcedCast(a0) => {
1518 impl<P: Params> Node<P> for Id {
1522 v: &mut dyn Visitor<'node, P = P>,
1523 ) -> Result<(), P::Error> {
1529 v: &mut dyn Visitor<'node, P = P>,
1530 ) -> Result<(), P::Error> {
1531 self.0.accept(c, v)?;
1532 self.1.accept(c, v)?;
1536 impl<P: Params> Node<P> for ImportFlavor {
1540 v: &mut dyn Visitor<'node, P = P>,
1541 ) -> Result<(), P::Error> {
1542 v.visit_import_flavor(c, self)
1547 v: &mut dyn Visitor<'node, P = P>,
1548 ) -> Result<(), P::Error> {
1550 ImportFlavor::Include => Ok(()),
1551 ImportFlavor::Require => Ok(()),
1552 ImportFlavor::IncludeOnce => Ok(()),
1553 ImportFlavor::RequireOnce => Ok(()),
1557 impl<P: Params> Node<P> for InsteadofAlias {
1561 v: &mut dyn Visitor<'node, P = P>,
1562 ) -> Result<(), P::Error> {
1563 v.visit_insteadof_alias(c, self)
1568 v: &mut dyn Visitor<'node, P = P>,
1569 ) -> Result<(), P::Error> {
1570 self.0.accept(c, v)?;
1571 self.1.accept(c, v)?;
1572 self.2.accept(c, v)?;
1576 impl<P: Params> Node<P> for KvcKind {
1580 v: &mut dyn Visitor<'node, P = P>,
1581 ) -> Result<(), P::Error> {
1582 v.visit_kvc_kind(c, self)
1587 v: &mut dyn Visitor<'node, P = P>,
1588 ) -> Result<(), P::Error> {
1590 KvcKind::Map => Ok(()),
1591 KvcKind::ImmMap => Ok(()),
1592 KvcKind::Dict => Ok(()),
1596 impl<P: Params> Node<P> for Lid {
1600 v: &mut dyn Visitor<'node, P = P>,
1601 ) -> Result<(), P::Error> {
1602 v.visit_lid(c, self)
1607 v: &mut dyn Visitor<'node, P = P>,
1608 ) -> Result<(), P::Error> {
1609 self.0.accept(c, v)?;
1610 self.1.accept(c, v)?;
1614 impl<P: Params> Node<P> for Method_<P::Ex, P::En> {
1618 v: &mut dyn Visitor<'node, P = P>,
1619 ) -> Result<(), P::Error> {
1620 v.visit_method_(c, self)
1625 v: &mut dyn Visitor<'node, P = P>,
1626 ) -> Result<(), P::Error> {
1627 self.span.accept(c, v)?;
1628 v.visit_en(c, &self.annotation)?;
1629 self.final_.accept(c, v)?;
1630 self.abstract_.accept(c, v)?;
1631 self.static_.accept(c, v)?;
1632 self.readonly_this.accept(c, v)?;
1633 self.visibility.accept(c, v)?;
1634 self.name.accept(c, v)?;
1635 self.tparams.accept(c, v)?;
1636 self.where_constraints.accept(c, v)?;
1637 self.variadic.accept(c, v)?;
1638 self.params.accept(c, v)?;
1639 self.ctxs.accept(c, v)?;
1640 self.unsafe_ctxs.accept(c, v)?;
1641 self.body.accept(c, v)?;
1642 self.fun_kind.accept(c, v)?;
1643 self.user_attributes.accept(c, v)?;
1644 self.readonly_ret.accept(c, v)?;
1645 self.ret.accept(c, v)?;
1646 self.external.accept(c, v)?;
1647 self.doc_comment.accept(c, v)?;
1651 impl<P: Params> Node<P> for NastShapeInfo {
1655 v: &mut dyn Visitor<'node, P = P>,
1656 ) -> Result<(), P::Error> {
1657 v.visit_nast_shape_info(c, self)
1662 v: &mut dyn Visitor<'node, P = P>,
1663 ) -> Result<(), P::Error> {
1664 self.allows_unknown_fields.accept(c, v)?;
1665 self.field_map.accept(c, v)?;
1669 impl<P: Params> Node<P> for NsKind {
1673 v: &mut dyn Visitor<'node, P = P>,
1674 ) -> Result<(), P::Error> {
1675 v.visit_ns_kind(c, self)
1680 v: &mut dyn Visitor<'node, P = P>,
1681 ) -> Result<(), P::Error> {
1683 NsKind::NSNamespace => Ok(()),
1684 NsKind::NSClass => Ok(()),
1685 NsKind::NSClassAndNamespace => Ok(()),
1686 NsKind::NSFun => Ok(()),
1687 NsKind::NSConst => Ok(()),
1691 impl<P: Params> Node<P> for OgNullFlavor {
1695 v: &mut dyn Visitor<'node, P = P>,
1696 ) -> Result<(), P::Error> {
1697 v.visit_og_null_flavor(c, self)
1702 v: &mut dyn Visitor<'node, P = P>,
1703 ) -> Result<(), P::Error> {
1705 OgNullFlavor::OGNullthrows => Ok(()),
1706 OgNullFlavor::OGNullsafe => Ok(()),
1710 impl<P: Params> Node<P> for ParamKind {
1714 v: &mut dyn Visitor<'node, P = P>,
1715 ) -> Result<(), P::Error> {
1716 v.visit_param_kind(c, self)
1721 v: &mut dyn Visitor<'node, P = P>,
1722 ) -> Result<(), P::Error> {
1724 ParamKind::Pinout => Ok(()),
1728 impl<P: Params> Node<P> for ReadonlyKind {
1732 v: &mut dyn Visitor<'node, P = P>,
1733 ) -> Result<(), P::Error> {
1734 v.visit_readonly_kind(c, self)
1739 v: &mut dyn Visitor<'node, P = P>,
1740 ) -> Result<(), P::Error> {
1742 ReadonlyKind::Readonly => Ok(()),
1746 impl<P: Params> Node<P> for RecordDef<P::Ex, P::En> {
1750 v: &mut dyn Visitor<'node, P = P>,
1751 ) -> Result<(), P::Error> {
1752 v.visit_record_def(c, self)
1757 v: &mut dyn Visitor<'node, P = P>,
1758 ) -> Result<(), P::Error> {
1759 v.visit_en(c, &self.annotation)?;
1760 self.name.accept(c, v)?;
1761 self.extends.accept(c, v)?;
1762 self.abstract_.accept(c, v)?;
1763 self.fields.accept(c, v)?;
1764 self.user_attributes.accept(c, v)?;
1765 self.namespace.accept(c, v)?;
1766 self.span.accept(c, v)?;
1767 self.doc_comment.accept(c, v)?;
1768 self.emit_id.accept(c, v)?;
1772 impl<P: Params> Node<P> for ReifyKind {
1776 v: &mut dyn Visitor<'node, P = P>,
1777 ) -> Result<(), P::Error> {
1778 v.visit_reify_kind(c, self)
1783 v: &mut dyn Visitor<'node, P = P>,
1784 ) -> Result<(), P::Error> {
1786 ReifyKind::Erased => Ok(()),
1787 ReifyKind::SoftReified => Ok(()),
1788 ReifyKind::Reified => Ok(()),
1792 impl<P: Params> Node<P> for ShapeFieldInfo {
1796 v: &mut dyn Visitor<'node, P = P>,
1797 ) -> Result<(), P::Error> {
1798 v.visit_shape_field_info(c, self)
1803 v: &mut dyn Visitor<'node, P = P>,
1804 ) -> Result<(), P::Error> {
1805 self.optional.accept(c, v)?;
1806 self.hint.accept(c, v)?;
1807 self.name.accept(c, v)?;
1811 impl<P: Params> Node<P> for ShapeFieldName {
1815 v: &mut dyn Visitor<'node, P = P>,
1816 ) -> Result<(), P::Error> {
1817 v.visit_shape_field_name(c, self)
1822 v: &mut dyn Visitor<'node, P = P>,
1823 ) -> Result<(), P::Error> {
1825 ShapeFieldName::SFlitInt(a0) => {
1829 ShapeFieldName::SFlitStr(a0) => {
1833 ShapeFieldName::SFclassConst(a0, a1) => {
1841 impl<P: Params> Node<P> for Stmt<P::Ex, P::En> {
1845 v: &mut dyn Visitor<'node, P = P>,
1846 ) -> Result<(), P::Error> {
1847 v.visit_stmt(c, self)
1852 v: &mut dyn Visitor<'node, P = P>,
1853 ) -> Result<(), P::Error> {
1854 self.0.accept(c, v)?;
1855 self.1.accept(c, v)?;
1859 impl<P: Params> Node<P> for Stmt_<P::Ex, P::En> {
1863 v: &mut dyn Visitor<'node, P = P>,
1864 ) -> Result<(), P::Error> {
1865 v.visit_stmt_(c, self)
1870 v: &mut dyn Visitor<'node, P = P>,
1871 ) -> Result<(), P::Error> {
1873 Stmt_::Fallthrough => Ok(()),
1874 Stmt_::Expr(a0) => {
1878 Stmt_::Break => Ok(()),
1879 Stmt_::Continue => Ok(()),
1880 Stmt_::Throw(a0) => {
1884 Stmt_::Return(a0) => {
1888 Stmt_::YieldBreak => Ok(()),
1889 Stmt_::Awaitall(a) => {
1905 Stmt_::While(a) => {
1910 Stmt_::Using(a0) => {
1921 Stmt_::Switch(a) => {
1926 Stmt_::Foreach(a) => {
1938 Stmt_::Noop => Ok(()),
1939 Stmt_::Block(a0) => {
1943 Stmt_::Markup(a0) => {
1947 Stmt_::AssertEnv(a) => {
1955 impl<P: Params> Node<P> for Targ<P::Ex> {
1959 v: &mut dyn Visitor<'node, P = P>,
1960 ) -> Result<(), P::Error> {
1961 v.visit_targ(c, self)
1966 v: &mut dyn Visitor<'node, P = P>,
1967 ) -> Result<(), P::Error> {
1968 v.visit_ex(c, &self.0)?;
1969 self.1.accept(c, v)?;
1973 impl<P: Params> Node<P> for Tparam<P::Ex, P::En> {
1977 v: &mut dyn Visitor<'node, P = P>,
1978 ) -> Result<(), P::Error> {
1979 v.visit_tparam(c, self)
1984 v: &mut dyn Visitor<'node, P = P>,
1985 ) -> Result<(), P::Error> {
1986 self.variance.accept(c, v)?;
1987 self.name.accept(c, v)?;
1988 self.parameters.accept(c, v)?;
1989 self.constraints.accept(c, v)?;
1990 self.reified.accept(c, v)?;
1991 self.user_attributes.accept(c, v)?;
1995 impl<P: Params> Node<P> for Tprim {
1999 v: &mut dyn Visitor<'node, P = P>,
2000 ) -> Result<(), P::Error> {
2001 v.visit_tprim(c, self)
2006 v: &mut dyn Visitor<'node, P = P>,
2007 ) -> Result<(), P::Error> {
2009 Tprim::Tnull => Ok(()),
2010 Tprim::Tvoid => Ok(()),
2011 Tprim::Tint => Ok(()),
2012 Tprim::Tbool => Ok(()),
2013 Tprim::Tfloat => Ok(()),
2014 Tprim::Tstring => Ok(()),
2015 Tprim::Tresource => Ok(()),
2016 Tprim::Tnum => Ok(()),
2017 Tprim::Tarraykey => Ok(()),
2018 Tprim::Tnoreturn => Ok(()),
2022 impl<P: Params> Node<P> for TypeHint<P::Ex> {
2026 v: &mut dyn Visitor<'node, P = P>,
2027 ) -> Result<(), P::Error> {
2028 v.visit_type_hint(c, self)
2033 v: &mut dyn Visitor<'node, P = P>,
2034 ) -> Result<(), P::Error> {
2035 v.visit_ex(c, &self.0)?;
2036 self.1.accept(c, v)?;
2040 impl<P: Params> Node<P> for Typedef<P::Ex, P::En> {
2044 v: &mut dyn Visitor<'node, P = P>,
2045 ) -> Result<(), P::Error> {
2046 v.visit_typedef(c, self)
2051 v: &mut dyn Visitor<'node, P = P>,
2052 ) -> Result<(), P::Error> {
2053 v.visit_en(c, &self.annotation)?;
2054 self.name.accept(c, v)?;
2055 self.tparams.accept(c, v)?;
2056 self.constraint.accept(c, v)?;
2057 self.kind.accept(c, v)?;
2058 self.user_attributes.accept(c, v)?;
2059 self.mode.accept(c, v)?;
2060 self.vis.accept(c, v)?;
2061 self.namespace.accept(c, v)?;
2062 self.span.accept(c, v)?;
2063 self.emit_id.accept(c, v)?;
2064 self.is_ctx.accept(c, v)?;
2068 impl<P: Params> Node<P> for TypedefVisibility {
2072 v: &mut dyn Visitor<'node, P = P>,
2073 ) -> Result<(), P::Error> {
2074 v.visit_typedef_visibility(c, self)
2079 v: &mut dyn Visitor<'node, P = P>,
2080 ) -> Result<(), P::Error> {
2082 TypedefVisibility::Transparent => Ok(()),
2083 TypedefVisibility::Opaque => Ok(()),
2084 TypedefVisibility::Tinternal => Ok(()),
2088 impl<P: Params> Node<P> for Uop {
2092 v: &mut dyn Visitor<'node, P = P>,
2093 ) -> Result<(), P::Error> {
2094 v.visit_uop(c, self)
2099 v: &mut dyn Visitor<'node, P = P>,
2100 ) -> Result<(), P::Error> {
2102 Uop::Utild => Ok(()),
2103 Uop::Unot => Ok(()),
2104 Uop::Uplus => Ok(()),
2105 Uop::Uminus => Ok(()),
2106 Uop::Uincr => Ok(()),
2107 Uop::Udecr => Ok(()),
2108 Uop::Upincr => Ok(()),
2109 Uop::Updecr => Ok(()),
2110 Uop::Usilence => Ok(()),
2114 impl<P: Params> Node<P> for UseAsAlias {
2118 v: &mut dyn Visitor<'node, P = P>,
2119 ) -> Result<(), P::Error> {
2120 v.visit_use_as_alias(c, self)
2125 v: &mut dyn Visitor<'node, P = P>,
2126 ) -> Result<(), P::Error> {
2127 self.0.accept(c, v)?;
2128 self.1.accept(c, v)?;
2129 self.2.accept(c, v)?;
2130 self.3.accept(c, v)?;
2134 impl<P: Params> Node<P> for UseAsVisibility {
2138 v: &mut dyn Visitor<'node, P = P>,
2139 ) -> Result<(), P::Error> {
2140 v.visit_use_as_visibility(c, self)
2145 v: &mut dyn Visitor<'node, P = P>,
2146 ) -> Result<(), P::Error> {
2148 UseAsVisibility::UseAsPublic => Ok(()),
2149 UseAsVisibility::UseAsPrivate => Ok(()),
2150 UseAsVisibility::UseAsProtected => Ok(()),
2151 UseAsVisibility::UseAsFinal => Ok(()),
2155 impl<P: Params> Node<P> for UserAttribute<P::Ex, P::En> {
2159 v: &mut dyn Visitor<'node, P = P>,
2160 ) -> Result<(), P::Error> {
2161 v.visit_user_attribute(c, self)
2166 v: &mut dyn Visitor<'node, P = P>,
2167 ) -> Result<(), P::Error> {
2168 self.name.accept(c, v)?;
2169 self.params.accept(c, v)?;
2173 impl<P: Params> Node<P> for UsingStmt<P::Ex, P::En> {
2177 v: &mut dyn Visitor<'node, P = P>,
2178 ) -> Result<(), P::Error> {
2179 v.visit_using_stmt(c, self)
2184 v: &mut dyn Visitor<'node, P = P>,
2185 ) -> Result<(), P::Error> {
2186 self.is_block_scoped.accept(c, v)?;
2187 self.has_await.accept(c, v)?;
2188 self.exprs.accept(c, v)?;
2189 self.block.accept(c, v)?;
2193 impl<P: Params> Node<P> for Variance {
2197 v: &mut dyn Visitor<'node, P = P>,
2198 ) -> Result<(), P::Error> {
2199 v.visit_variance(c, self)
2204 v: &mut dyn Visitor<'node, P = P>,
2205 ) -> Result<(), P::Error> {
2207 Variance::Covariant => Ok(()),
2208 Variance::Contravariant => Ok(()),
2209 Variance::Invariant => Ok(()),
2213 impl<P: Params> Node<P> for VcKind {
2217 v: &mut dyn Visitor<'node, P = P>,
2218 ) -> Result<(), P::Error> {
2219 v.visit_vc_kind(c, self)
2224 v: &mut dyn Visitor<'node, P = P>,
2225 ) -> Result<(), P::Error> {
2227 VcKind::Vector => Ok(()),
2228 VcKind::ImmVector => Ok(()),
2229 VcKind::Vec => Ok(()),
2230 VcKind::Set => Ok(()),
2231 VcKind::ImmSet => Ok(()),
2232 VcKind::Keyset => Ok(()),
2236 impl<P: Params> Node<P> for Visibility {
2240 v: &mut dyn Visitor<'node, P = P>,
2241 ) -> Result<(), P::Error> {
2242 v.visit_visibility(c, self)
2247 v: &mut dyn Visitor<'node, P = P>,
2248 ) -> Result<(), P::Error> {
2250 Visibility::Private => Ok(()),
2251 Visibility::Public => Ok(()),
2252 Visibility::Protected => Ok(()),
2253 Visibility::Internal => Ok(()),
2257 impl<P: Params> Node<P> for WhereConstraintHint {
2261 v: &mut dyn Visitor<'node, P = P>,
2262 ) -> Result<(), P::Error> {
2263 v.visit_where_constraint_hint(c, self)
2268 v: &mut dyn Visitor<'node, P = P>,
2269 ) -> Result<(), P::Error> {
2270 self.0.accept(c, v)?;
2271 self.1.accept(c, v)?;
2272 self.2.accept(c, v)?;
2276 impl<P: Params> Node<P> for XhpAttr<P::Ex, P::En> {
2280 v: &mut dyn Visitor<'node, P = P>,
2281 ) -> Result<(), P::Error> {
2282 v.visit_xhp_attr(c, self)
2287 v: &mut dyn Visitor<'node, P = P>,
2288 ) -> Result<(), P::Error> {
2289 self.0.accept(c, v)?;
2290 self.1.accept(c, v)?;
2291 self.2.accept(c, v)?;
2292 self.3.accept(c, v)?;
2296 impl<P: Params> Node<P> for XhpAttrInfo {
2300 v: &mut dyn Visitor<'node, P = P>,
2301 ) -> Result<(), P::Error> {
2302 v.visit_xhp_attr_info(c, self)
2307 v: &mut dyn Visitor<'node, P = P>,
2308 ) -> Result<(), P::Error> {
2309 self.tag.accept(c, v)?;
2310 self.enum_values.accept(c, v)?;
2314 impl<P: Params> Node<P> for XhpAttrTag {
2318 v: &mut dyn Visitor<'node, P = P>,
2319 ) -> Result<(), P::Error> {
2320 v.visit_xhp_attr_tag(c, self)
2325 v: &mut dyn Visitor<'node, P = P>,
2326 ) -> Result<(), P::Error> {
2328 XhpAttrTag::Required => Ok(()),
2329 XhpAttrTag::LateInit => Ok(()),
2333 impl<P: Params> Node<P> for XhpAttribute<P::Ex, P::En> {
2337 v: &mut dyn Visitor<'node, P = P>,
2338 ) -> Result<(), P::Error> {
2339 v.visit_xhp_attribute(c, self)
2344 v: &mut dyn Visitor<'node, P = P>,
2345 ) -> Result<(), P::Error> {
2347 XhpAttribute::XhpSimple(a0) => {
2351 XhpAttribute::XhpSpread(a0) => {
2358 impl<P: Params> Node<P> for XhpChild {
2362 v: &mut dyn Visitor<'node, P = P>,
2363 ) -> Result<(), P::Error> {
2364 v.visit_xhp_child(c, self)
2369 v: &mut dyn Visitor<'node, P = P>,
2370 ) -> Result<(), P::Error> {
2372 XhpChild::ChildName(a0) => {
2376 XhpChild::ChildList(a0) => {
2380 XhpChild::ChildUnary(a0, a1) => {
2385 XhpChild::ChildBinary(a0, a1) => {
2393 impl<P: Params> Node<P> for XhpChildOp {
2397 v: &mut dyn Visitor<'node, P = P>,
2398 ) -> Result<(), P::Error> {
2399 v.visit_xhp_child_op(c, self)
2404 v: &mut dyn Visitor<'node, P = P>,
2405 ) -> Result<(), P::Error> {
2407 XhpChildOp::ChildStar => Ok(()),
2408 XhpChildOp::ChildPlus => Ok(()),
2409 XhpChildOp::ChildQuestion => Ok(()),
2413 impl<P: Params> Node<P> for XhpEnumValue {
2417 v: &mut dyn Visitor<'node, P = P>,
2418 ) -> Result<(), P::Error> {
2419 v.visit_xhp_enum_value(c, self)
2424 v: &mut dyn Visitor<'node, P = P>,
2425 ) -> Result<(), P::Error> {
2427 XhpEnumValue::XEVInt(a0) => {
2431 XhpEnumValue::XEVString(a0) => {
2438 impl<P: Params> Node<P> for XhpSimple<P::Ex, P::En> {
2442 v: &mut dyn Visitor<'node, P = P>,
2443 ) -> Result<(), P::Error> {
2444 v.visit_xhp_simple(c, self)
2449 v: &mut dyn Visitor<'node, P = P>,
2450 ) -> Result<(), P::Error> {
2451 self.name.accept(c, v)?;
2452 v.visit_ex(c, &self.type_)?;
2453 self.expr.accept(c, v)?;