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<<e94f650f1df55e367a197d6d3e563c46>>
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 Afield<P::Ex, P::Fb, P::En, P::Hi> {
20 v: &mut dyn Visitor<'node, P = P>,
21 ) -> Result<(), P::Error> {
22 v.visit_afield(c, self)
27 v: &mut dyn Visitor<'node, P = P>,
28 ) -> Result<(), P::Error> {
30 Afield::AFvalue(a0) => {
34 Afield::AFkvalue(a0, a1) => {
42 impl<P: Params> Node<P> for AsExpr<P::Ex, P::Fb, P::En, P::Hi> {
46 v: &mut dyn Visitor<'node, P = P>,
47 ) -> Result<(), P::Error> {
48 v.visit_as_expr(c, self)
53 v: &mut dyn Visitor<'node, P = P>,
54 ) -> Result<(), P::Error> {
60 AsExpr::AsKv(a0, a1) => {
65 AsExpr::AwaitAsV(a0, a1) => {
70 AsExpr::AwaitAsKv(a0, a1, a2) => {
79 impl<P: Params> Node<P> for Bop {
83 v: &mut dyn Visitor<'node, P = P>,
84 ) -> Result<(), P::Error> {
90 v: &mut dyn Visitor<'node, P = P>,
91 ) -> Result<(), P::Error> {
98 Bop::Eqeqeq => Ok(()),
99 Bop::Starstar => Ok(()),
101 Bop::Diff2 => Ok(()),
102 Bop::Ampamp => Ok(()),
103 Bop::Barbar => Ok(()),
113 Bop::Percent => Ok(()),
116 Bop::QuestionQuestion => Ok(()),
124 impl<P: Params> Node<P> for CaField<P::Ex, P::Fb, P::En, P::Hi> {
128 v: &mut dyn Visitor<'node, P = P>,
129 ) -> Result<(), P::Error> {
130 v.visit_ca_field(c, self)
135 v: &mut dyn Visitor<'node, P = P>,
136 ) -> Result<(), P::Error> {
137 self.type_.accept(c, v)?;
138 self.id.accept(c, v)?;
139 self.value.accept(c, v)?;
140 self.required.accept(c, v)?;
144 impl<P: Params> Node<P> for CaType {
148 v: &mut dyn Visitor<'node, P = P>,
149 ) -> Result<(), P::Error> {
150 v.visit_ca_type(c, self)
155 v: &mut dyn Visitor<'node, P = P>,
156 ) -> Result<(), P::Error> {
158 CaType::CAHint(a0) => {
162 CaType::CAEnum(a0) => {
169 impl<P: Params> Node<P> for Case<P::Ex, P::Fb, P::En, P::Hi> {
173 v: &mut dyn Visitor<'node, P = P>,
174 ) -> Result<(), P::Error> {
175 v.visit_case(c, self)
180 v: &mut dyn Visitor<'node, P = P>,
181 ) -> Result<(), P::Error> {
183 Case::Default(a0, a1) => {
188 Case::Case(a0, a1) => {
196 impl<P: Params> Node<P> for Catch<P::Ex, P::Fb, P::En, P::Hi> {
200 v: &mut dyn Visitor<'node, P = P>,
201 ) -> Result<(), P::Error> {
202 v.visit_catch(c, self)
207 v: &mut dyn Visitor<'node, P = P>,
208 ) -> Result<(), P::Error> {
209 self.0.accept(c, v)?;
210 self.1.accept(c, v)?;
211 self.2.accept(c, v)?;
215 impl<P: Params> Node<P> for ClassAttr<P::Ex, P::Fb, P::En, P::Hi> {
219 v: &mut dyn Visitor<'node, P = P>,
220 ) -> Result<(), P::Error> {
221 v.visit_class_attr(c, self)
226 v: &mut dyn Visitor<'node, P = P>,
227 ) -> Result<(), P::Error> {
229 ClassAttr::CAName(a0) => {
233 ClassAttr::CAField(a0) => {
240 impl<P: Params> Node<P> for ClassConst<P::Ex, P::Fb, P::En, P::Hi> {
244 v: &mut dyn Visitor<'node, P = P>,
245 ) -> Result<(), P::Error> {
246 v.visit_class_const(c, self)
251 v: &mut dyn Visitor<'node, P = P>,
252 ) -> Result<(), P::Error> {
253 self.type_.accept(c, v)?;
254 self.id.accept(c, v)?;
255 self.expr.accept(c, v)?;
256 self.doc_comment.accept(c, v)?;
260 impl<P: Params> Node<P> for ClassGetExpr<P::Ex, P::Fb, P::En, P::Hi> {
264 v: &mut dyn Visitor<'node, P = P>,
265 ) -> Result<(), P::Error> {
266 v.visit_class_get_expr(c, self)
271 v: &mut dyn Visitor<'node, P = P>,
272 ) -> Result<(), P::Error> {
274 ClassGetExpr::CGstring(a0) => {
278 ClassGetExpr::CGexpr(a0) => {
285 impl<P: Params> Node<P> for ClassId<P::Ex, P::Fb, P::En, P::Hi> {
289 v: &mut dyn Visitor<'node, P = P>,
290 ) -> Result<(), P::Error> {
291 v.visit_class_id(c, self)
296 v: &mut dyn Visitor<'node, P = P>,
297 ) -> Result<(), P::Error> {
298 v.visit_ex(c, &self.0)?;
299 self.1.accept(c, v)?;
303 impl<P: Params> Node<P> for ClassId_<P::Ex, P::Fb, P::En, P::Hi> {
307 v: &mut dyn Visitor<'node, P = P>,
308 ) -> Result<(), P::Error> {
309 v.visit_class_id_(c, self)
314 v: &mut dyn Visitor<'node, P = P>,
315 ) -> Result<(), P::Error> {
317 ClassId_::CIparent => Ok(()),
318 ClassId_::CIself => Ok(()),
319 ClassId_::CIstatic => Ok(()),
320 ClassId_::CIexpr(a0) => {
324 ClassId_::CI(a0) => {
331 impl<P: Params> Node<P> for ClassKind {
335 v: &mut dyn Visitor<'node, P = P>,
336 ) -> Result<(), P::Error> {
337 v.visit_class_kind(c, self)
342 v: &mut dyn Visitor<'node, P = P>,
343 ) -> Result<(), P::Error> {
345 ClassKind::Cabstract => Ok(()),
346 ClassKind::Cnormal => Ok(()),
347 ClassKind::Cinterface => Ok(()),
348 ClassKind::Ctrait => Ok(()),
349 ClassKind::Cenum => Ok(()),
353 impl<P: Params> Node<P> for ClassTypeconst<P::Ex, P::Fb, P::En, P::Hi> {
357 v: &mut dyn Visitor<'node, P = P>,
358 ) -> Result<(), P::Error> {
359 v.visit_class_typeconst(c, self)
364 v: &mut dyn Visitor<'node, P = P>,
365 ) -> Result<(), P::Error> {
366 self.abstract_.accept(c, v)?;
367 self.name.accept(c, v)?;
368 self.as_constraint.accept(c, v)?;
369 self.type_.accept(c, v)?;
370 self.user_attributes.accept(c, v)?;
371 self.span.accept(c, v)?;
372 self.doc_comment.accept(c, v)?;
373 self.is_ctx.accept(c, v)?;
377 impl<P: Params> Node<P> for ClassVar<P::Ex, P::Fb, P::En, P::Hi> {
381 v: &mut dyn Visitor<'node, P = P>,
382 ) -> Result<(), P::Error> {
383 v.visit_class_var(c, self)
388 v: &mut dyn Visitor<'node, P = P>,
389 ) -> Result<(), P::Error> {
390 self.final_.accept(c, v)?;
391 self.xhp_attr.accept(c, v)?;
392 self.abstract_.accept(c, v)?;
393 self.readonly.accept(c, v)?;
394 self.visibility.accept(c, v)?;
395 self.type_.accept(c, v)?;
396 self.id.accept(c, v)?;
397 self.expr.accept(c, v)?;
398 self.user_attributes.accept(c, v)?;
399 self.doc_comment.accept(c, v)?;
400 self.is_promoted_variadic.accept(c, v)?;
401 self.is_static.accept(c, v)?;
402 self.span.accept(c, v)?;
406 impl<P: Params> Node<P> for Class_<P::Ex, P::Fb, P::En, P::Hi> {
410 v: &mut dyn Visitor<'node, P = P>,
411 ) -> Result<(), P::Error> {
412 v.visit_class_(c, self)
417 v: &mut dyn Visitor<'node, P = P>,
418 ) -> Result<(), P::Error> {
419 self.span.accept(c, v)?;
420 v.visit_en(c, &self.annotation)?;
421 self.mode.accept(c, v)?;
422 self.final_.accept(c, v)?;
423 self.is_xhp.accept(c, v)?;
424 self.has_xhp_keyword.accept(c, v)?;
425 self.kind.accept(c, v)?;
426 self.name.accept(c, v)?;
427 self.tparams.accept(c, v)?;
428 self.extends.accept(c, v)?;
429 self.uses.accept(c, v)?;
430 self.use_as_alias.accept(c, v)?;
431 self.insteadof_alias.accept(c, v)?;
432 self.xhp_attr_uses.accept(c, v)?;
433 self.xhp_category.accept(c, v)?;
434 self.reqs.accept(c, v)?;
435 self.implements.accept(c, v)?;
436 self.implements_dynamic.accept(c, v)?;
437 self.where_constraints.accept(c, v)?;
438 self.consts.accept(c, v)?;
439 self.typeconsts.accept(c, v)?;
440 self.vars.accept(c, v)?;
441 self.methods.accept(c, v)?;
442 self.attributes.accept(c, v)?;
443 self.xhp_children.accept(c, v)?;
444 self.xhp_attrs.accept(c, v)?;
445 self.namespace.accept(c, v)?;
446 self.user_attributes.accept(c, v)?;
447 self.file_attributes.accept(c, v)?;
448 self.enum_.accept(c, v)?;
449 self.doc_comment.accept(c, v)?;
450 self.emit_id.accept(c, v)?;
454 impl<P: Params> Node<P> for CollectionTarg<P::Hi> {
458 v: &mut dyn Visitor<'node, P = P>,
459 ) -> Result<(), P::Error> {
460 v.visit_collection_targ(c, self)
465 v: &mut dyn Visitor<'node, P = P>,
466 ) -> Result<(), P::Error> {
468 CollectionTarg::CollectionTV(a0) => {
472 CollectionTarg::CollectionTKV(a0, a1) => {
480 impl<P: Params> Node<P> for ConstraintKind {
484 v: &mut dyn Visitor<'node, P = P>,
485 ) -> Result<(), P::Error> {
486 v.visit_constraint_kind(c, self)
491 v: &mut dyn Visitor<'node, P = P>,
492 ) -> Result<(), P::Error> {
494 ConstraintKind::ConstraintAs => Ok(()),
495 ConstraintKind::ConstraintEq => Ok(()),
496 ConstraintKind::ConstraintSuper => Ok(()),
500 impl<P: Params> Node<P> for Contexts {
504 v: &mut dyn Visitor<'node, P = P>,
505 ) -> Result<(), P::Error> {
506 v.visit_contexts(c, self)
511 v: &mut dyn Visitor<'node, P = P>,
512 ) -> Result<(), P::Error> {
513 self.0.accept(c, v)?;
514 self.1.accept(c, v)?;
518 impl<P: Params> Node<P> for Def<P::Ex, P::Fb, P::En, P::Hi> {
522 v: &mut dyn Visitor<'node, P = P>,
523 ) -> Result<(), P::Error> {
529 v: &mut dyn Visitor<'node, P = P>,
530 ) -> Result<(), P::Error> {
540 Def::RecordDef(a0) => {
548 Def::Typedef(a0) => {
552 Def::Constant(a0) => {
556 Def::Namespace(a) => {
561 Def::NamespaceUse(a0) => {
565 Def::SetNamespaceEnv(a0) => {
569 Def::FileAttributes(a0) => {
576 impl<P: Params> Node<P> for DocComment {
580 v: &mut dyn Visitor<'node, P = P>,
581 ) -> Result<(), P::Error> {
582 v.visit_doc_comment(c, self)
587 v: &mut dyn Visitor<'node, P = P>,
588 ) -> Result<(), P::Error> {
589 self.0.accept(c, v)?;
593 impl<P: Params> Node<P> for EmitId {
597 v: &mut dyn Visitor<'node, P = P>,
598 ) -> Result<(), P::Error> {
599 v.visit_emit_id(c, self)
604 v: &mut dyn Visitor<'node, P = P>,
605 ) -> Result<(), P::Error> {
607 EmitId::EmitId(a0) => {
611 EmitId::Anonymous => Ok(()),
615 impl<P: Params> Node<P> for Enum_ {
619 v: &mut dyn Visitor<'node, P = P>,
620 ) -> Result<(), P::Error> {
621 v.visit_enum_(c, self)
626 v: &mut dyn Visitor<'node, P = P>,
627 ) -> Result<(), P::Error> {
628 self.base.accept(c, v)?;
629 self.constraint.accept(c, v)?;
630 self.includes.accept(c, v)?;
631 self.enum_class.accept(c, v)?;
635 impl<P: Params> Node<P> for EnvAnnot {
639 v: &mut dyn Visitor<'node, P = P>,
640 ) -> Result<(), P::Error> {
641 v.visit_env_annot(c, self)
646 v: &mut dyn Visitor<'node, P = P>,
647 ) -> Result<(), P::Error> {
649 EnvAnnot::Join => Ok(()),
650 EnvAnnot::Refinement => Ok(()),
654 impl<P: Params> Node<P> for Expr<P::Ex, P::Fb, P::En, P::Hi> {
658 v: &mut dyn Visitor<'node, P = P>,
659 ) -> Result<(), P::Error> {
660 v.visit_expr(c, self)
665 v: &mut dyn Visitor<'node, P = P>,
666 ) -> Result<(), P::Error> {
667 v.visit_ex(c, &self.0)?;
668 self.1.accept(c, v)?;
672 impl<P: Params> Node<P> for Expr_<P::Ex, P::Fb, P::En, P::Hi> {
676 v: &mut dyn Visitor<'node, P = P>,
677 ) -> Result<(), P::Error> {
678 v.visit_expr_(c, self)
683 v: &mut dyn Visitor<'node, P = P>,
684 ) -> Result<(), P::Error> {
686 Expr_::Darray(a) => {
691 Expr_::Varray(a) => {
696 Expr_::Shape(a0) => {
700 Expr_::ValCollection(a) => {
706 Expr_::KeyValCollection(a) => {
712 Expr_::Null => Ok(()),
713 Expr_::This => Ok(()),
714 Expr_::True => Ok(()),
715 Expr_::False => Ok(()),
716 Expr_::Omitted => Ok(()),
725 Expr_::Dollardollar(a0) => {
729 Expr_::Clone(a0) => {
733 Expr_::ArrayGet(a) => {
738 Expr_::ObjGet(a) => {
745 Expr_::ClassGet(a) => {
751 Expr_::ClassConst(a) => {
763 Expr_::FunctionPointer(a) => {
772 Expr_::Float(a0) => {
776 Expr_::String(a0) => {
780 Expr_::String2(a0) => {
784 Expr_::PrefixedString(a) => {
789 Expr_::Yield(a0) => {
793 Expr_::Await(a0) => {
797 Expr_::ReadonlyExpr(a0) => {
849 v.visit_ex(c, &a.4)?;
852 Expr_::Record(a) => {
873 Expr_::Callconv(a) => {
878 Expr_::Import(a) => {
883 Expr_::Collection(a) => {
889 Expr_::ExpressionTree(a0) => {
893 Expr_::Lplaceholder(a0) => {
897 Expr_::FunId(a0) => {
901 Expr_::MethodId(a) => {
906 Expr_::MethodCaller(a) => {
911 Expr_::SmethodId(a) => {
922 Expr_::ETSplice(a0) => {
926 Expr_::EnumAtom(a0) => {
930 Expr_::Any => Ok(()),
934 impl<P: Params> Node<P> for ExpressionTree<P::Ex, P::Fb, P::En, P::Hi> {
938 v: &mut dyn Visitor<'node, P = P>,
939 ) -> Result<(), P::Error> {
940 v.visit_expression_tree(c, self)
945 v: &mut dyn Visitor<'node, P = P>,
946 ) -> Result<(), P::Error> {
947 self.hint.accept(c, v)?;
948 self.src_expr.accept(c, v)?;
949 self.desugared_expr.accept(c, v)?;
953 impl<P: Params> Node<P> for Field<P::Ex, P::Fb, P::En, P::Hi> {
957 v: &mut dyn Visitor<'node, P = P>,
958 ) -> Result<(), P::Error> {
959 v.visit_field(c, self)
964 v: &mut dyn Visitor<'node, P = P>,
965 ) -> Result<(), P::Error> {
966 self.0.accept(c, v)?;
967 self.1.accept(c, v)?;
971 impl<P: Params> Node<P> for FileAttribute<P::Ex, P::Fb, P::En, P::Hi> {
975 v: &mut dyn Visitor<'node, P = P>,
976 ) -> Result<(), P::Error> {
977 v.visit_file_attribute(c, self)
982 v: &mut dyn Visitor<'node, P = P>,
983 ) -> Result<(), P::Error> {
984 self.user_attributes.accept(c, v)?;
985 self.namespace.accept(c, v)?;
989 impl<P: Params> Node<P> for FunKind {
993 v: &mut dyn Visitor<'node, P = P>,
994 ) -> Result<(), P::Error> {
995 v.visit_fun_kind(c, self)
1000 v: &mut dyn Visitor<'node, P = P>,
1001 ) -> Result<(), P::Error> {
1003 FunKind::FSync => Ok(()),
1004 FunKind::FAsync => Ok(()),
1005 FunKind::FGenerator => Ok(()),
1006 FunKind::FAsyncGenerator => Ok(()),
1010 impl<P: Params> Node<P> for FunParam<P::Ex, P::Fb, P::En, P::Hi> {
1014 v: &mut dyn Visitor<'node, P = P>,
1015 ) -> Result<(), P::Error> {
1016 v.visit_fun_param(c, self)
1021 v: &mut dyn Visitor<'node, P = P>,
1022 ) -> Result<(), P::Error> {
1023 v.visit_ex(c, &self.annotation)?;
1024 self.type_hint.accept(c, v)?;
1025 self.is_variadic.accept(c, v)?;
1026 self.pos.accept(c, v)?;
1027 self.name.accept(c, v)?;
1028 self.expr.accept(c, v)?;
1029 self.readonly.accept(c, v)?;
1030 self.callconv.accept(c, v)?;
1031 self.user_attributes.accept(c, v)?;
1032 self.visibility.accept(c, v)?;
1036 impl<P: Params> Node<P> for FunVariadicity<P::Ex, P::Fb, P::En, P::Hi> {
1040 v: &mut dyn Visitor<'node, P = P>,
1041 ) -> Result<(), P::Error> {
1042 v.visit_fun_variadicity(c, self)
1047 v: &mut dyn Visitor<'node, P = P>,
1048 ) -> Result<(), P::Error> {
1050 FunVariadicity::FVvariadicArg(a0) => {
1054 FunVariadicity::FVellipsis(a0) => {
1058 FunVariadicity::FVnonVariadic => Ok(()),
1062 impl<P: Params> Node<P> for Fun_<P::Ex, P::Fb, P::En, P::Hi> {
1066 v: &mut dyn Visitor<'node, P = P>,
1067 ) -> Result<(), P::Error> {
1068 v.visit_fun_(c, self)
1073 v: &mut dyn Visitor<'node, P = P>,
1074 ) -> Result<(), P::Error> {
1075 self.span.accept(c, v)?;
1076 v.visit_en(c, &self.annotation)?;
1077 self.mode.accept(c, v)?;
1078 self.readonly_ret.accept(c, v)?;
1079 self.ret.accept(c, v)?;
1080 self.name.accept(c, v)?;
1081 self.tparams.accept(c, v)?;
1082 self.where_constraints.accept(c, v)?;
1083 self.variadic.accept(c, v)?;
1084 self.params.accept(c, v)?;
1085 self.ctxs.accept(c, v)?;
1086 self.unsafe_ctxs.accept(c, v)?;
1087 self.body.accept(c, v)?;
1088 self.fun_kind.accept(c, v)?;
1089 self.user_attributes.accept(c, v)?;
1090 self.file_attributes.accept(c, v)?;
1091 self.external.accept(c, v)?;
1092 self.namespace.accept(c, v)?;
1093 self.doc_comment.accept(c, v)?;
1094 self.static_.accept(c, v)?;
1098 impl<P: Params> Node<P> for FuncBody<P::Ex, P::Fb, P::En, P::Hi> {
1102 v: &mut dyn Visitor<'node, P = P>,
1103 ) -> Result<(), P::Error> {
1104 v.visit_func_body(c, self)
1109 v: &mut dyn Visitor<'node, P = P>,
1110 ) -> Result<(), P::Error> {
1111 self.ast.accept(c, v)?;
1112 v.visit_fb(c, &self.annotation)?;
1116 impl<P: Params> Node<P> for FunctionPtrId<P::Ex, P::Fb, P::En, P::Hi> {
1120 v: &mut dyn Visitor<'node, P = P>,
1121 ) -> Result<(), P::Error> {
1122 v.visit_function_ptr_id(c, self)
1127 v: &mut dyn Visitor<'node, P = P>,
1128 ) -> Result<(), P::Error> {
1130 FunctionPtrId::FPId(a0) => {
1134 FunctionPtrId::FPClassConst(a0, a1) => {
1142 impl<P: Params> Node<P> for Gconst<P::Ex, P::Fb, P::En, P::Hi> {
1146 v: &mut dyn Visitor<'node, P = P>,
1147 ) -> Result<(), P::Error> {
1148 v.visit_gconst(c, self)
1153 v: &mut dyn Visitor<'node, P = P>,
1154 ) -> Result<(), P::Error> {
1155 v.visit_en(c, &self.annotation)?;
1156 self.mode.accept(c, v)?;
1157 self.name.accept(c, v)?;
1158 self.type_.accept(c, v)?;
1159 self.value.accept(c, v)?;
1160 self.namespace.accept(c, v)?;
1161 self.span.accept(c, v)?;
1162 self.emit_id.accept(c, v)?;
1166 impl<P: Params> Node<P> for HfParamInfo {
1170 v: &mut dyn Visitor<'node, P = P>,
1171 ) -> Result<(), P::Error> {
1172 v.visit_hf_param_info(c, self)
1177 v: &mut dyn Visitor<'node, P = P>,
1178 ) -> Result<(), P::Error> {
1179 self.kind.accept(c, v)?;
1180 self.readonlyness.accept(c, v)?;
1184 impl<P: Params> Node<P> for Hint {
1188 v: &mut dyn Visitor<'node, P = P>,
1189 ) -> Result<(), P::Error> {
1190 v.visit_hint(c, self)
1195 v: &mut dyn Visitor<'node, P = P>,
1196 ) -> Result<(), P::Error> {
1197 self.0.accept(c, v)?;
1198 self.1.accept(c, v)?;
1202 impl<P: Params> Node<P> for HintFun {
1206 v: &mut dyn Visitor<'node, P = P>,
1207 ) -> Result<(), P::Error> {
1208 v.visit_hint_fun(c, self)
1213 v: &mut dyn Visitor<'node, P = P>,
1214 ) -> Result<(), P::Error> {
1215 self.param_tys.accept(c, v)?;
1216 self.param_info.accept(c, v)?;
1217 self.variadic_ty.accept(c, v)?;
1218 self.ctxs.accept(c, v)?;
1219 self.return_ty.accept(c, v)?;
1220 self.is_readonly_return.accept(c, v)?;
1224 impl<P: Params> Node<P> for Hint_ {
1228 v: &mut dyn Visitor<'node, P = P>,
1229 ) -> Result<(), P::Error> {
1230 v.visit_hint_(c, self)
1235 v: &mut dyn Visitor<'node, P = P>,
1236 ) -> Result<(), P::Error> {
1238 Hint_::Hoption(a0) => {
1242 Hint_::Hlike(a0) => {
1246 Hint_::Hfun(a0) => {
1250 Hint_::Htuple(a0) => {
1254 Hint_::Happly(a0, a1) => {
1259 Hint_::Hshape(a0) => {
1263 Hint_::Haccess(a0, a1) => {
1268 Hint_::Hsoft(a0) => {
1272 Hint_::Hany => Ok(()),
1273 Hint_::Herr => Ok(()),
1274 Hint_::Hmixed => Ok(()),
1275 Hint_::Hnonnull => Ok(()),
1276 Hint_::Habstr(a0, a1) => {
1281 Hint_::Hdarray(a0, a1) => {
1286 Hint_::Hvarray(a0) => {
1290 Hint_::HvarrayOrDarray(a0, a1) => {
1295 Hint_::HvecOrDict(a0, a1) => {
1300 Hint_::Hprim(a0) => {
1304 Hint_::Hthis => Ok(()),
1305 Hint_::Hdynamic => Ok(()),
1306 Hint_::Hnothing => Ok(()),
1307 Hint_::Hunion(a0) => {
1311 Hint_::Hintersection(a0) => {
1315 Hint_::HfunContext(a0) => {
1319 Hint_::Hvar(a0) => {
1326 impl<P: Params> Node<P> for Id {
1330 v: &mut dyn Visitor<'node, P = P>,
1331 ) -> Result<(), P::Error> {
1337 v: &mut dyn Visitor<'node, P = P>,
1338 ) -> Result<(), P::Error> {
1339 self.0.accept(c, v)?;
1340 self.1.accept(c, v)?;
1344 impl<P: Params> Node<P> for ImportFlavor {
1348 v: &mut dyn Visitor<'node, P = P>,
1349 ) -> Result<(), P::Error> {
1350 v.visit_import_flavor(c, self)
1355 v: &mut dyn Visitor<'node, P = P>,
1356 ) -> Result<(), P::Error> {
1358 ImportFlavor::Include => Ok(()),
1359 ImportFlavor::Require => Ok(()),
1360 ImportFlavor::IncludeOnce => Ok(()),
1361 ImportFlavor::RequireOnce => Ok(()),
1365 impl<P: Params> Node<P> for InsteadofAlias {
1369 v: &mut dyn Visitor<'node, P = P>,
1370 ) -> Result<(), P::Error> {
1371 v.visit_insteadof_alias(c, self)
1376 v: &mut dyn Visitor<'node, P = P>,
1377 ) -> Result<(), P::Error> {
1378 self.0.accept(c, v)?;
1379 self.1.accept(c, v)?;
1380 self.2.accept(c, v)?;
1384 impl<P: Params> Node<P> for KvcKind {
1388 v: &mut dyn Visitor<'node, P = P>,
1389 ) -> Result<(), P::Error> {
1390 v.visit_kvc_kind(c, self)
1395 v: &mut dyn Visitor<'node, P = P>,
1396 ) -> Result<(), P::Error> {
1398 KvcKind::Map => Ok(()),
1399 KvcKind::ImmMap => Ok(()),
1400 KvcKind::Dict => Ok(()),
1404 impl<P: Params> Node<P> for Lid {
1408 v: &mut dyn Visitor<'node, P = P>,
1409 ) -> Result<(), P::Error> {
1410 v.visit_lid(c, self)
1415 v: &mut dyn Visitor<'node, P = P>,
1416 ) -> Result<(), P::Error> {
1417 self.0.accept(c, v)?;
1418 self.1.accept(c, v)?;
1422 impl<P: Params> Node<P> for Method_<P::Ex, P::Fb, P::En, P::Hi> {
1426 v: &mut dyn Visitor<'node, P = P>,
1427 ) -> Result<(), P::Error> {
1428 v.visit_method_(c, self)
1433 v: &mut dyn Visitor<'node, P = P>,
1434 ) -> Result<(), P::Error> {
1435 self.span.accept(c, v)?;
1436 v.visit_en(c, &self.annotation)?;
1437 self.final_.accept(c, v)?;
1438 self.abstract_.accept(c, v)?;
1439 self.static_.accept(c, v)?;
1440 self.readonly_this.accept(c, v)?;
1441 self.visibility.accept(c, v)?;
1442 self.name.accept(c, v)?;
1443 self.tparams.accept(c, v)?;
1444 self.where_constraints.accept(c, v)?;
1445 self.variadic.accept(c, v)?;
1446 self.params.accept(c, v)?;
1447 self.ctxs.accept(c, v)?;
1448 self.unsafe_ctxs.accept(c, v)?;
1449 self.body.accept(c, v)?;
1450 self.fun_kind.accept(c, v)?;
1451 self.user_attributes.accept(c, v)?;
1452 self.readonly_ret.accept(c, v)?;
1453 self.ret.accept(c, v)?;
1454 self.external.accept(c, v)?;
1455 self.doc_comment.accept(c, v)?;
1459 impl<P: Params> Node<P> for NastShapeInfo {
1463 v: &mut dyn Visitor<'node, P = P>,
1464 ) -> Result<(), P::Error> {
1465 v.visit_nast_shape_info(c, self)
1470 v: &mut dyn Visitor<'node, P = P>,
1471 ) -> Result<(), P::Error> {
1472 self.allows_unknown_fields.accept(c, v)?;
1473 self.field_map.accept(c, v)?;
1477 impl<P: Params> Node<P> for NsKind {
1481 v: &mut dyn Visitor<'node, P = P>,
1482 ) -> Result<(), P::Error> {
1483 v.visit_ns_kind(c, self)
1488 v: &mut dyn Visitor<'node, P = P>,
1489 ) -> Result<(), P::Error> {
1491 NsKind::NSNamespace => Ok(()),
1492 NsKind::NSClass => Ok(()),
1493 NsKind::NSClassAndNamespace => Ok(()),
1494 NsKind::NSFun => Ok(()),
1495 NsKind::NSConst => Ok(()),
1499 impl<P: Params> Node<P> for OgNullFlavor {
1503 v: &mut dyn Visitor<'node, P = P>,
1504 ) -> Result<(), P::Error> {
1505 v.visit_og_null_flavor(c, self)
1510 v: &mut dyn Visitor<'node, P = P>,
1511 ) -> Result<(), P::Error> {
1513 OgNullFlavor::OGNullthrows => Ok(()),
1514 OgNullFlavor::OGNullsafe => Ok(()),
1518 impl<P: Params> Node<P> for ParamKind {
1522 v: &mut dyn Visitor<'node, P = P>,
1523 ) -> Result<(), P::Error> {
1524 v.visit_param_kind(c, self)
1529 v: &mut dyn Visitor<'node, P = P>,
1530 ) -> Result<(), P::Error> {
1532 ParamKind::Pinout => Ok(()),
1536 impl<P: Params> Node<P> for ReadonlyKind {
1540 v: &mut dyn Visitor<'node, P = P>,
1541 ) -> Result<(), P::Error> {
1542 v.visit_readonly_kind(c, self)
1547 v: &mut dyn Visitor<'node, P = P>,
1548 ) -> Result<(), P::Error> {
1550 ReadonlyKind::Readonly => Ok(()),
1554 impl<P: Params> Node<P> for RecordDef<P::Ex, P::Fb, P::En, P::Hi> {
1558 v: &mut dyn Visitor<'node, P = P>,
1559 ) -> Result<(), P::Error> {
1560 v.visit_record_def(c, self)
1565 v: &mut dyn Visitor<'node, P = P>,
1566 ) -> Result<(), P::Error> {
1567 v.visit_en(c, &self.annotation)?;
1568 self.name.accept(c, v)?;
1569 self.extends.accept(c, v)?;
1570 self.abstract_.accept(c, v)?;
1571 self.fields.accept(c, v)?;
1572 self.user_attributes.accept(c, v)?;
1573 self.namespace.accept(c, v)?;
1574 self.span.accept(c, v)?;
1575 self.doc_comment.accept(c, v)?;
1576 self.emit_id.accept(c, v)?;
1580 impl<P: Params> Node<P> for ReifyKind {
1584 v: &mut dyn Visitor<'node, P = P>,
1585 ) -> Result<(), P::Error> {
1586 v.visit_reify_kind(c, self)
1591 v: &mut dyn Visitor<'node, P = P>,
1592 ) -> Result<(), P::Error> {
1594 ReifyKind::Erased => Ok(()),
1595 ReifyKind::SoftReified => Ok(()),
1596 ReifyKind::Reified => Ok(()),
1600 impl<P: Params> Node<P> for ShapeFieldInfo {
1604 v: &mut dyn Visitor<'node, P = P>,
1605 ) -> Result<(), P::Error> {
1606 v.visit_shape_field_info(c, self)
1611 v: &mut dyn Visitor<'node, P = P>,
1612 ) -> Result<(), P::Error> {
1613 self.optional.accept(c, v)?;
1614 self.hint.accept(c, v)?;
1615 self.name.accept(c, v)?;
1619 impl<P: Params> Node<P> for ShapeFieldName {
1623 v: &mut dyn Visitor<'node, P = P>,
1624 ) -> Result<(), P::Error> {
1625 v.visit_shape_field_name(c, self)
1630 v: &mut dyn Visitor<'node, P = P>,
1631 ) -> Result<(), P::Error> {
1633 ShapeFieldName::SFlitInt(a0) => {
1637 ShapeFieldName::SFlitStr(a0) => {
1641 ShapeFieldName::SFclassConst(a0, a1) => {
1649 impl<P: Params> Node<P> for Stmt<P::Ex, P::Fb, P::En, P::Hi> {
1653 v: &mut dyn Visitor<'node, P = P>,
1654 ) -> Result<(), P::Error> {
1655 v.visit_stmt(c, self)
1660 v: &mut dyn Visitor<'node, P = P>,
1661 ) -> Result<(), P::Error> {
1662 self.0.accept(c, v)?;
1663 self.1.accept(c, v)?;
1667 impl<P: Params> Node<P> for Stmt_<P::Ex, P::Fb, P::En, P::Hi> {
1671 v: &mut dyn Visitor<'node, P = P>,
1672 ) -> Result<(), P::Error> {
1673 v.visit_stmt_(c, self)
1678 v: &mut dyn Visitor<'node, P = P>,
1679 ) -> Result<(), P::Error> {
1681 Stmt_::Fallthrough => Ok(()),
1682 Stmt_::Expr(a0) => {
1686 Stmt_::Break => Ok(()),
1687 Stmt_::Continue => Ok(()),
1688 Stmt_::Throw(a0) => {
1692 Stmt_::Return(a0) => {
1696 Stmt_::YieldBreak => Ok(()),
1697 Stmt_::Awaitall(a) => {
1713 Stmt_::While(a) => {
1718 Stmt_::Using(a0) => {
1729 Stmt_::Switch(a) => {
1734 Stmt_::Foreach(a) => {
1746 Stmt_::Noop => Ok(()),
1747 Stmt_::Block(a0) => {
1751 Stmt_::Markup(a0) => {
1755 Stmt_::AssertEnv(a) => {
1763 impl<P: Params> Node<P> for Targ<P::Hi> {
1767 v: &mut dyn Visitor<'node, P = P>,
1768 ) -> Result<(), P::Error> {
1769 v.visit_targ(c, self)
1774 v: &mut dyn Visitor<'node, P = P>,
1775 ) -> Result<(), P::Error> {
1776 v.visit_hi(c, &self.0)?;
1777 self.1.accept(c, v)?;
1781 impl<P: Params> Node<P> for Tparam<P::Ex, P::Fb, P::En, P::Hi> {
1785 v: &mut dyn Visitor<'node, P = P>,
1786 ) -> Result<(), P::Error> {
1787 v.visit_tparam(c, self)
1792 v: &mut dyn Visitor<'node, P = P>,
1793 ) -> Result<(), P::Error> {
1794 self.variance.accept(c, v)?;
1795 self.name.accept(c, v)?;
1796 self.parameters.accept(c, v)?;
1797 self.constraints.accept(c, v)?;
1798 self.reified.accept(c, v)?;
1799 self.user_attributes.accept(c, v)?;
1803 impl<P: Params> Node<P> for Tprim {
1807 v: &mut dyn Visitor<'node, P = P>,
1808 ) -> Result<(), P::Error> {
1809 v.visit_tprim(c, self)
1814 v: &mut dyn Visitor<'node, P = P>,
1815 ) -> Result<(), P::Error> {
1817 Tprim::Tnull => Ok(()),
1818 Tprim::Tvoid => Ok(()),
1819 Tprim::Tint => Ok(()),
1820 Tprim::Tbool => Ok(()),
1821 Tprim::Tfloat => Ok(()),
1822 Tprim::Tstring => Ok(()),
1823 Tprim::Tresource => Ok(()),
1824 Tprim::Tnum => Ok(()),
1825 Tprim::Tarraykey => Ok(()),
1826 Tprim::Tnoreturn => Ok(()),
1830 impl<P: Params> Node<P> for TypeHint<P::Hi> {
1834 v: &mut dyn Visitor<'node, P = P>,
1835 ) -> Result<(), P::Error> {
1836 v.visit_type_hint(c, self)
1841 v: &mut dyn Visitor<'node, P = P>,
1842 ) -> Result<(), P::Error> {
1843 v.visit_hi(c, &self.0)?;
1844 self.1.accept(c, v)?;
1848 impl<P: Params> Node<P> for TypeconstAbstractKind {
1852 v: &mut dyn Visitor<'node, P = P>,
1853 ) -> Result<(), P::Error> {
1854 v.visit_typeconst_abstract_kind(c, self)
1859 v: &mut dyn Visitor<'node, P = P>,
1860 ) -> Result<(), P::Error> {
1862 TypeconstAbstractKind::TCAbstract(a0) => {
1866 TypeconstAbstractKind::TCPartiallyAbstract => Ok(()),
1867 TypeconstAbstractKind::TCConcrete => Ok(()),
1871 impl<P: Params> Node<P> for Typedef<P::Ex, P::Fb, P::En, P::Hi> {
1875 v: &mut dyn Visitor<'node, P = P>,
1876 ) -> Result<(), P::Error> {
1877 v.visit_typedef(c, self)
1882 v: &mut dyn Visitor<'node, P = P>,
1883 ) -> Result<(), P::Error> {
1884 v.visit_en(c, &self.annotation)?;
1885 self.name.accept(c, v)?;
1886 self.tparams.accept(c, v)?;
1887 self.constraint.accept(c, v)?;
1888 self.kind.accept(c, v)?;
1889 self.user_attributes.accept(c, v)?;
1890 self.mode.accept(c, v)?;
1891 self.vis.accept(c, v)?;
1892 self.namespace.accept(c, v)?;
1893 self.span.accept(c, v)?;
1894 self.emit_id.accept(c, v)?;
1898 impl<P: Params> Node<P> for TypedefVisibility {
1902 v: &mut dyn Visitor<'node, P = P>,
1903 ) -> Result<(), P::Error> {
1904 v.visit_typedef_visibility(c, self)
1909 v: &mut dyn Visitor<'node, P = P>,
1910 ) -> Result<(), P::Error> {
1912 TypedefVisibility::Transparent => Ok(()),
1913 TypedefVisibility::Opaque => Ok(()),
1917 impl<P: Params> Node<P> for Uop {
1921 v: &mut dyn Visitor<'node, P = P>,
1922 ) -> Result<(), P::Error> {
1923 v.visit_uop(c, self)
1928 v: &mut dyn Visitor<'node, P = P>,
1929 ) -> Result<(), P::Error> {
1931 Uop::Utild => Ok(()),
1932 Uop::Unot => Ok(()),
1933 Uop::Uplus => Ok(()),
1934 Uop::Uminus => Ok(()),
1935 Uop::Uincr => Ok(()),
1936 Uop::Udecr => Ok(()),
1937 Uop::Upincr => Ok(()),
1938 Uop::Updecr => Ok(()),
1939 Uop::Usilence => Ok(()),
1943 impl<P: Params> Node<P> for UseAsAlias {
1947 v: &mut dyn Visitor<'node, P = P>,
1948 ) -> Result<(), P::Error> {
1949 v.visit_use_as_alias(c, self)
1954 v: &mut dyn Visitor<'node, P = P>,
1955 ) -> Result<(), P::Error> {
1956 self.0.accept(c, v)?;
1957 self.1.accept(c, v)?;
1958 self.2.accept(c, v)?;
1959 self.3.accept(c, v)?;
1963 impl<P: Params> Node<P> for UseAsVisibility {
1967 v: &mut dyn Visitor<'node, P = P>,
1968 ) -> Result<(), P::Error> {
1969 v.visit_use_as_visibility(c, self)
1974 v: &mut dyn Visitor<'node, P = P>,
1975 ) -> Result<(), P::Error> {
1977 UseAsVisibility::UseAsPublic => Ok(()),
1978 UseAsVisibility::UseAsPrivate => Ok(()),
1979 UseAsVisibility::UseAsProtected => Ok(()),
1980 UseAsVisibility::UseAsFinal => Ok(()),
1984 impl<P: Params> Node<P> for UserAttribute<P::Ex, P::Fb, P::En, P::Hi> {
1988 v: &mut dyn Visitor<'node, P = P>,
1989 ) -> Result<(), P::Error> {
1990 v.visit_user_attribute(c, self)
1995 v: &mut dyn Visitor<'node, P = P>,
1996 ) -> Result<(), P::Error> {
1997 self.name.accept(c, v)?;
1998 self.params.accept(c, v)?;
2002 impl<P: Params> Node<P> for UsingStmt<P::Ex, P::Fb, P::En, P::Hi> {
2006 v: &mut dyn Visitor<'node, P = P>,
2007 ) -> Result<(), P::Error> {
2008 v.visit_using_stmt(c, self)
2013 v: &mut dyn Visitor<'node, P = P>,
2014 ) -> Result<(), P::Error> {
2015 self.is_block_scoped.accept(c, v)?;
2016 self.has_await.accept(c, v)?;
2017 self.exprs.accept(c, v)?;
2018 self.block.accept(c, v)?;
2022 impl<P: Params> Node<P> for Variance {
2026 v: &mut dyn Visitor<'node, P = P>,
2027 ) -> Result<(), P::Error> {
2028 v.visit_variance(c, self)
2033 v: &mut dyn Visitor<'node, P = P>,
2034 ) -> Result<(), P::Error> {
2036 Variance::Covariant => Ok(()),
2037 Variance::Contravariant => Ok(()),
2038 Variance::Invariant => Ok(()),
2042 impl<P: Params> Node<P> for VcKind {
2046 v: &mut dyn Visitor<'node, P = P>,
2047 ) -> Result<(), P::Error> {
2048 v.visit_vc_kind(c, self)
2053 v: &mut dyn Visitor<'node, P = P>,
2054 ) -> Result<(), P::Error> {
2056 VcKind::Vector => Ok(()),
2057 VcKind::ImmVector => Ok(()),
2058 VcKind::Vec => Ok(()),
2059 VcKind::Set => Ok(()),
2060 VcKind::ImmSet => Ok(()),
2061 VcKind::Keyset => Ok(()),
2065 impl<P: Params> Node<P> for Visibility {
2069 v: &mut dyn Visitor<'node, P = P>,
2070 ) -> Result<(), P::Error> {
2071 v.visit_visibility(c, self)
2076 v: &mut dyn Visitor<'node, P = P>,
2077 ) -> Result<(), P::Error> {
2079 Visibility::Private => Ok(()),
2080 Visibility::Public => Ok(()),
2081 Visibility::Protected => Ok(()),
2085 impl<P: Params> Node<P> for WhereConstraintHint {
2089 v: &mut dyn Visitor<'node, P = P>,
2090 ) -> Result<(), P::Error> {
2091 v.visit_where_constraint_hint(c, self)
2096 v: &mut dyn Visitor<'node, P = P>,
2097 ) -> Result<(), P::Error> {
2098 self.0.accept(c, v)?;
2099 self.1.accept(c, v)?;
2100 self.2.accept(c, v)?;
2104 impl<P: Params> Node<P> for XhpAttr<P::Ex, P::Fb, P::En, P::Hi> {
2108 v: &mut dyn Visitor<'node, P = P>,
2109 ) -> Result<(), P::Error> {
2110 v.visit_xhp_attr(c, self)
2115 v: &mut dyn Visitor<'node, P = P>,
2116 ) -> Result<(), P::Error> {
2117 self.0.accept(c, v)?;
2118 self.1.accept(c, v)?;
2119 self.2.accept(c, v)?;
2120 self.3.accept(c, v)?;
2124 impl<P: Params> Node<P> for XhpAttrInfo {
2128 v: &mut dyn Visitor<'node, P = P>,
2129 ) -> Result<(), P::Error> {
2130 v.visit_xhp_attr_info(c, self)
2135 v: &mut dyn Visitor<'node, P = P>,
2136 ) -> Result<(), P::Error> {
2137 self.xai_tag.accept(c, v)?;
2141 impl<P: Params> Node<P> for XhpAttrTag {
2145 v: &mut dyn Visitor<'node, P = P>,
2146 ) -> Result<(), P::Error> {
2147 v.visit_xhp_attr_tag(c, self)
2152 v: &mut dyn Visitor<'node, P = P>,
2153 ) -> Result<(), P::Error> {
2155 XhpAttrTag::Required => Ok(()),
2156 XhpAttrTag::LateInit => Ok(()),
2160 impl<P: Params> Node<P> for XhpAttribute<P::Ex, P::Fb, P::En, P::Hi> {
2164 v: &mut dyn Visitor<'node, P = P>,
2165 ) -> Result<(), P::Error> {
2166 v.visit_xhp_attribute(c, self)
2171 v: &mut dyn Visitor<'node, P = P>,
2172 ) -> Result<(), P::Error> {
2174 XhpAttribute::XhpSimple(a0, a1) => {
2179 XhpAttribute::XhpSpread(a0) => {
2186 impl<P: Params> Node<P> for XhpChild {
2190 v: &mut dyn Visitor<'node, P = P>,
2191 ) -> Result<(), P::Error> {
2192 v.visit_xhp_child(c, self)
2197 v: &mut dyn Visitor<'node, P = P>,
2198 ) -> Result<(), P::Error> {
2200 XhpChild::ChildName(a0) => {
2204 XhpChild::ChildList(a0) => {
2208 XhpChild::ChildUnary(a0, a1) => {
2213 XhpChild::ChildBinary(a0, a1) => {
2221 impl<P: Params> Node<P> for XhpChildOp {
2225 v: &mut dyn Visitor<'node, P = P>,
2226 ) -> Result<(), P::Error> {
2227 v.visit_xhp_child_op(c, self)
2232 v: &mut dyn Visitor<'node, P = P>,
2233 ) -> Result<(), P::Error> {
2235 XhpChildOp::ChildStar => Ok(()),
2236 XhpChildOp::ChildPlus => Ok(()),
2237 XhpChildOp::ChildQuestion => Ok(()),