Remove Aast.TCPartiallyAbstract
[hiphop-php.git] / hphp / hack / src / oxidized / aast_visitor / visitor_mut.rs
blobedaa3d536419fbc9b324501faf2f7a12ac49044b
1 // Copyright (c) Facebook, Inc. and its affiliates.
2 //
3 // This source code is licensed under the MIT license found in the
4 // LICENSE file in the "hack" directory of this source tree.
5 //
6 // @generated SignedSource<<03157c2f0dc63be231501d1db300f003>>
7 //
8 // To regenerate this file, run:
9 //   hphp/hack/src/oxidized_regen.sh
11 #![allow(unused_variables)]
12 use super::node_mut::NodeMut;
13 use super::type_params::Params;
14 use crate::{aast::*, aast_defs::*, ast_defs::*, doc_comment::*};
15 pub fn visit<'node, P: Params>(
16     v: &mut impl VisitorMut<'node, P = P>,
17     c: &mut P::Context,
18     p: &'node mut impl NodeMut<P>,
19 ) -> Result<(), P::Error> {
20     p.accept(c, v)
22 pub trait VisitorMut<'node> {
23     type P: Params;
24     fn object(&mut self) -> &mut dyn VisitorMut<'node, P = Self::P>;
25     fn visit_ex(
26         &mut self,
27         c: &mut <Self::P as Params>::Context,
28         p: &'node mut <Self::P as Params>::Ex,
29     ) -> Result<(), <Self::P as Params>::Error> {
30         Ok(())
31     }
32     fn visit_en(
33         &mut self,
34         c: &mut <Self::P as Params>::Context,
35         p: &'node mut <Self::P as Params>::En,
36     ) -> Result<(), <Self::P as Params>::Error> {
37         Ok(())
38     }
39     fn visit_abstraction(
40         &mut self,
41         c: &mut <Self::P as Params>::Context,
42         p: &'node mut Abstraction,
43     ) -> Result<(), <Self::P as Params>::Error> {
44         p.recurse(c, self.object())
45     }
46     fn visit_afield(
47         &mut self,
48         c: &mut <Self::P as Params>::Context,
49         p: &'node mut Afield<<Self::P as Params>::Ex, <Self::P as Params>::En>,
50     ) -> Result<(), <Self::P as Params>::Error> {
51         p.recurse(c, self.object())
52     }
53     fn visit_as_expr(
54         &mut self,
55         c: &mut <Self::P as Params>::Context,
56         p: &'node mut AsExpr<<Self::P as Params>::Ex, <Self::P as Params>::En>,
57     ) -> Result<(), <Self::P as Params>::Error> {
58         p.recurse(c, self.object())
59     }
60     fn visit_bop(
61         &mut self,
62         c: &mut <Self::P as Params>::Context,
63         p: &'node mut Bop,
64     ) -> Result<(), <Self::P as Params>::Error> {
65         p.recurse(c, self.object())
66     }
67     fn visit_ca_field(
68         &mut self,
69         c: &mut <Self::P as Params>::Context,
70         p: &'node mut CaField<<Self::P as Params>::Ex, <Self::P as Params>::En>,
71     ) -> Result<(), <Self::P as Params>::Error> {
72         p.recurse(c, self.object())
73     }
74     fn visit_ca_type(
75         &mut self,
76         c: &mut <Self::P as Params>::Context,
77         p: &'node mut CaType,
78     ) -> Result<(), <Self::P as Params>::Error> {
79         p.recurse(c, self.object())
80     }
81     fn visit_case(
82         &mut self,
83         c: &mut <Self::P as Params>::Context,
84         p: &'node mut Case<<Self::P as Params>::Ex, <Self::P as Params>::En>,
85     ) -> Result<(), <Self::P as Params>::Error> {
86         p.recurse(c, self.object())
87     }
88     fn visit_catch(
89         &mut self,
90         c: &mut <Self::P as Params>::Context,
91         p: &'node mut Catch<<Self::P as Params>::Ex, <Self::P as Params>::En>,
92     ) -> Result<(), <Self::P as Params>::Error> {
93         p.recurse(c, self.object())
94     }
95     fn visit_class_abstract_typeconst(
96         &mut self,
97         c: &mut <Self::P as Params>::Context,
98         p: &'node mut ClassAbstractTypeconst,
99     ) -> Result<(), <Self::P as Params>::Error> {
100         p.recurse(c, self.object())
101     }
102     fn visit_class_attr(
103         &mut self,
104         c: &mut <Self::P as Params>::Context,
105         p: &'node mut ClassAttr<<Self::P as Params>::Ex, <Self::P as Params>::En>,
106     ) -> Result<(), <Self::P as Params>::Error> {
107         p.recurse(c, self.object())
108     }
109     fn visit_class_concrete_typeconst(
110         &mut self,
111         c: &mut <Self::P as Params>::Context,
112         p: &'node mut ClassConcreteTypeconst,
113     ) -> Result<(), <Self::P as Params>::Error> {
114         p.recurse(c, self.object())
115     }
116     fn visit_class_const(
117         &mut self,
118         c: &mut <Self::P as Params>::Context,
119         p: &'node mut ClassConst<<Self::P as Params>::Ex, <Self::P as Params>::En>,
120     ) -> Result<(), <Self::P as Params>::Error> {
121         p.recurse(c, self.object())
122     }
123     fn visit_class_const_kind(
124         &mut self,
125         c: &mut <Self::P as Params>::Context,
126         p: &'node mut ClassConstKind<<Self::P as Params>::Ex, <Self::P as Params>::En>,
127     ) -> Result<(), <Self::P as Params>::Error> {
128         p.recurse(c, self.object())
129     }
130     fn visit_class_get_expr(
131         &mut self,
132         c: &mut <Self::P as Params>::Context,
133         p: &'node mut ClassGetExpr<<Self::P as Params>::Ex, <Self::P as Params>::En>,
134     ) -> Result<(), <Self::P as Params>::Error> {
135         p.recurse(c, self.object())
136     }
137     fn visit_class_id(
138         &mut self,
139         c: &mut <Self::P as Params>::Context,
140         p: &'node mut ClassId<<Self::P as Params>::Ex, <Self::P as Params>::En>,
141     ) -> Result<(), <Self::P as Params>::Error> {
142         p.recurse(c, self.object())
143     }
144     fn visit_class_id_(
145         &mut self,
146         c: &mut <Self::P as Params>::Context,
147         p: &'node mut ClassId_<<Self::P as Params>::Ex, <Self::P as Params>::En>,
148     ) -> Result<(), <Self::P as Params>::Error> {
149         p.recurse(c, self.object())
150     }
151     fn visit_class_typeconst(
152         &mut self,
153         c: &mut <Self::P as Params>::Context,
154         p: &'node mut ClassTypeconst,
155     ) -> Result<(), <Self::P as Params>::Error> {
156         p.recurse(c, self.object())
157     }
158     fn visit_class_typeconst_def(
159         &mut self,
160         c: &mut <Self::P as Params>::Context,
161         p: &'node mut ClassTypeconstDef<<Self::P as Params>::Ex, <Self::P as Params>::En>,
162     ) -> Result<(), <Self::P as Params>::Error> {
163         p.recurse(c, self.object())
164     }
165     fn visit_class_var(
166         &mut self,
167         c: &mut <Self::P as Params>::Context,
168         p: &'node mut ClassVar<<Self::P as Params>::Ex, <Self::P as Params>::En>,
169     ) -> Result<(), <Self::P as Params>::Error> {
170         p.recurse(c, self.object())
171     }
172     fn visit_class_(
173         &mut self,
174         c: &mut <Self::P as Params>::Context,
175         p: &'node mut Class_<<Self::P as Params>::Ex, <Self::P as Params>::En>,
176     ) -> Result<(), <Self::P as Params>::Error> {
177         p.recurse(c, self.object())
178     }
179     fn visit_classish_kind(
180         &mut self,
181         c: &mut <Self::P as Params>::Context,
182         p: &'node mut ClassishKind,
183     ) -> Result<(), <Self::P as Params>::Error> {
184         p.recurse(c, self.object())
185     }
186     fn visit_collection_targ(
187         &mut self,
188         c: &mut <Self::P as Params>::Context,
189         p: &'node mut CollectionTarg<<Self::P as Params>::Ex>,
190     ) -> Result<(), <Self::P as Params>::Error> {
191         p.recurse(c, self.object())
192     }
193     fn visit_constraint_kind(
194         &mut self,
195         c: &mut <Self::P as Params>::Context,
196         p: &'node mut ConstraintKind,
197     ) -> Result<(), <Self::P as Params>::Error> {
198         p.recurse(c, self.object())
199     }
200     fn visit_contexts(
201         &mut self,
202         c: &mut <Self::P as Params>::Context,
203         p: &'node mut Contexts,
204     ) -> Result<(), <Self::P as Params>::Error> {
205         p.recurse(c, self.object())
206     }
207     fn visit_def(
208         &mut self,
209         c: &mut <Self::P as Params>::Context,
210         p: &'node mut Def<<Self::P as Params>::Ex, <Self::P as Params>::En>,
211     ) -> Result<(), <Self::P as Params>::Error> {
212         p.recurse(c, self.object())
213     }
214     fn visit_doc_comment(
215         &mut self,
216         c: &mut <Self::P as Params>::Context,
217         p: &'node mut DocComment,
218     ) -> Result<(), <Self::P as Params>::Error> {
219         p.recurse(c, self.object())
220     }
221     fn visit_emit_id(
222         &mut self,
223         c: &mut <Self::P as Params>::Context,
224         p: &'node mut EmitId,
225     ) -> Result<(), <Self::P as Params>::Error> {
226         p.recurse(c, self.object())
227     }
228     fn visit_enum_(
229         &mut self,
230         c: &mut <Self::P as Params>::Context,
231         p: &'node mut Enum_,
232     ) -> Result<(), <Self::P as Params>::Error> {
233         p.recurse(c, self.object())
234     }
235     fn visit_env_annot(
236         &mut self,
237         c: &mut <Self::P as Params>::Context,
238         p: &'node mut EnvAnnot,
239     ) -> Result<(), <Self::P as Params>::Error> {
240         p.recurse(c, self.object())
241     }
242     fn visit_expr(
243         &mut self,
244         c: &mut <Self::P as Params>::Context,
245         p: &'node mut Expr<<Self::P as Params>::Ex, <Self::P as Params>::En>,
246     ) -> Result<(), <Self::P as Params>::Error> {
247         p.recurse(c, self.object())
248     }
249     fn visit_expr_(
250         &mut self,
251         c: &mut <Self::P as Params>::Context,
252         p: &'node mut Expr_<<Self::P as Params>::Ex, <Self::P as Params>::En>,
253     ) -> Result<(), <Self::P as Params>::Error> {
254         p.recurse(c, self.object())
255     }
256     fn visit_expression_tree(
257         &mut self,
258         c: &mut <Self::P as Params>::Context,
259         p: &'node mut ExpressionTree<<Self::P as Params>::Ex, <Self::P as Params>::En>,
260     ) -> Result<(), <Self::P as Params>::Error> {
261         p.recurse(c, self.object())
262     }
263     fn visit_field(
264         &mut self,
265         c: &mut <Self::P as Params>::Context,
266         p: &'node mut Field<<Self::P as Params>::Ex, <Self::P as Params>::En>,
267     ) -> Result<(), <Self::P as Params>::Error> {
268         p.recurse(c, self.object())
269     }
270     fn visit_file_attribute(
271         &mut self,
272         c: &mut <Self::P as Params>::Context,
273         p: &'node mut FileAttribute<<Self::P as Params>::Ex, <Self::P as Params>::En>,
274     ) -> Result<(), <Self::P as Params>::Error> {
275         p.recurse(c, self.object())
276     }
277     fn visit_fun_def(
278         &mut self,
279         c: &mut <Self::P as Params>::Context,
280         p: &'node mut FunDef<<Self::P as Params>::Ex, <Self::P as Params>::En>,
281     ) -> Result<(), <Self::P as Params>::Error> {
282         p.recurse(c, self.object())
283     }
284     fn visit_fun_kind(
285         &mut self,
286         c: &mut <Self::P as Params>::Context,
287         p: &'node mut FunKind,
288     ) -> Result<(), <Self::P as Params>::Error> {
289         p.recurse(c, self.object())
290     }
291     fn visit_fun_param(
292         &mut self,
293         c: &mut <Self::P as Params>::Context,
294         p: &'node mut FunParam<<Self::P as Params>::Ex, <Self::P as Params>::En>,
295     ) -> Result<(), <Self::P as Params>::Error> {
296         p.recurse(c, self.object())
297     }
298     fn visit_fun_variadicity(
299         &mut self,
300         c: &mut <Self::P as Params>::Context,
301         p: &'node mut FunVariadicity<<Self::P as Params>::Ex, <Self::P as Params>::En>,
302     ) -> Result<(), <Self::P as Params>::Error> {
303         p.recurse(c, self.object())
304     }
305     fn visit_fun_(
306         &mut self,
307         c: &mut <Self::P as Params>::Context,
308         p: &'node mut Fun_<<Self::P as Params>::Ex, <Self::P as Params>::En>,
309     ) -> Result<(), <Self::P as Params>::Error> {
310         p.recurse(c, self.object())
311     }
312     fn visit_func_body(
313         &mut self,
314         c: &mut <Self::P as Params>::Context,
315         p: &'node mut FuncBody<<Self::P as Params>::Ex, <Self::P as Params>::En>,
316     ) -> Result<(), <Self::P as Params>::Error> {
317         p.recurse(c, self.object())
318     }
319     fn visit_function_ptr_id(
320         &mut self,
321         c: &mut <Self::P as Params>::Context,
322         p: &'node mut FunctionPtrId<<Self::P as Params>::Ex, <Self::P as Params>::En>,
323     ) -> Result<(), <Self::P as Params>::Error> {
324         p.recurse(c, self.object())
325     }
326     fn visit_gconst(
327         &mut self,
328         c: &mut <Self::P as Params>::Context,
329         p: &'node mut Gconst<<Self::P as Params>::Ex, <Self::P as Params>::En>,
330     ) -> Result<(), <Self::P as Params>::Error> {
331         p.recurse(c, self.object())
332     }
333     fn visit_hf_param_info(
334         &mut self,
335         c: &mut <Self::P as Params>::Context,
336         p: &'node mut HfParamInfo,
337     ) -> Result<(), <Self::P as Params>::Error> {
338         p.recurse(c, self.object())
339     }
340     fn visit_hint(
341         &mut self,
342         c: &mut <Self::P as Params>::Context,
343         p: &'node mut Hint,
344     ) -> Result<(), <Self::P as Params>::Error> {
345         p.recurse(c, self.object())
346     }
347     fn visit_hint_fun(
348         &mut self,
349         c: &mut <Self::P as Params>::Context,
350         p: &'node mut HintFun,
351     ) -> Result<(), <Self::P as Params>::Error> {
352         p.recurse(c, self.object())
353     }
354     fn visit_hint_(
355         &mut self,
356         c: &mut <Self::P as Params>::Context,
357         p: &'node mut Hint_,
358     ) -> Result<(), <Self::P as Params>::Error> {
359         p.recurse(c, self.object())
360     }
361     fn visit_hole_source(
362         &mut self,
363         c: &mut <Self::P as Params>::Context,
364         p: &'node mut HoleSource,
365     ) -> Result<(), <Self::P as Params>::Error> {
366         p.recurse(c, self.object())
367     }
368     fn visit_id(
369         &mut self,
370         c: &mut <Self::P as Params>::Context,
371         p: &'node mut Id,
372     ) -> Result<(), <Self::P as Params>::Error> {
373         p.recurse(c, self.object())
374     }
375     fn visit_import_flavor(
376         &mut self,
377         c: &mut <Self::P as Params>::Context,
378         p: &'node mut ImportFlavor,
379     ) -> Result<(), <Self::P as Params>::Error> {
380         p.recurse(c, self.object())
381     }
382     fn visit_insteadof_alias(
383         &mut self,
384         c: &mut <Self::P as Params>::Context,
385         p: &'node mut InsteadofAlias,
386     ) -> Result<(), <Self::P as Params>::Error> {
387         p.recurse(c, self.object())
388     }
389     fn visit_kvc_kind(
390         &mut self,
391         c: &mut <Self::P as Params>::Context,
392         p: &'node mut KvcKind,
393     ) -> Result<(), <Self::P as Params>::Error> {
394         p.recurse(c, self.object())
395     }
396     fn visit_lid(
397         &mut self,
398         c: &mut <Self::P as Params>::Context,
399         p: &'node mut Lid,
400     ) -> Result<(), <Self::P as Params>::Error> {
401         p.recurse(c, self.object())
402     }
403     fn visit_method_(
404         &mut self,
405         c: &mut <Self::P as Params>::Context,
406         p: &'node mut Method_<<Self::P as Params>::Ex, <Self::P as Params>::En>,
407     ) -> Result<(), <Self::P as Params>::Error> {
408         p.recurse(c, self.object())
409     }
410     fn visit_nast_shape_info(
411         &mut self,
412         c: &mut <Self::P as Params>::Context,
413         p: &'node mut NastShapeInfo,
414     ) -> Result<(), <Self::P as Params>::Error> {
415         p.recurse(c, self.object())
416     }
417     fn visit_ns_kind(
418         &mut self,
419         c: &mut <Self::P as Params>::Context,
420         p: &'node mut NsKind,
421     ) -> Result<(), <Self::P as Params>::Error> {
422         p.recurse(c, self.object())
423     }
424     fn visit_og_null_flavor(
425         &mut self,
426         c: &mut <Self::P as Params>::Context,
427         p: &'node mut OgNullFlavor,
428     ) -> Result<(), <Self::P as Params>::Error> {
429         p.recurse(c, self.object())
430     }
431     fn visit_param_kind(
432         &mut self,
433         c: &mut <Self::P as Params>::Context,
434         p: &'node mut ParamKind,
435     ) -> Result<(), <Self::P as Params>::Error> {
436         p.recurse(c, self.object())
437     }
438     fn visit_readonly_kind(
439         &mut self,
440         c: &mut <Self::P as Params>::Context,
441         p: &'node mut ReadonlyKind,
442     ) -> Result<(), <Self::P as Params>::Error> {
443         p.recurse(c, self.object())
444     }
445     fn visit_record_def(
446         &mut self,
447         c: &mut <Self::P as Params>::Context,
448         p: &'node mut RecordDef<<Self::P as Params>::Ex, <Self::P as Params>::En>,
449     ) -> Result<(), <Self::P as Params>::Error> {
450         p.recurse(c, self.object())
451     }
452     fn visit_reify_kind(
453         &mut self,
454         c: &mut <Self::P as Params>::Context,
455         p: &'node mut ReifyKind,
456     ) -> Result<(), <Self::P as Params>::Error> {
457         p.recurse(c, self.object())
458     }
459     fn visit_shape_field_info(
460         &mut self,
461         c: &mut <Self::P as Params>::Context,
462         p: &'node mut ShapeFieldInfo,
463     ) -> Result<(), <Self::P as Params>::Error> {
464         p.recurse(c, self.object())
465     }
466     fn visit_shape_field_name(
467         &mut self,
468         c: &mut <Self::P as Params>::Context,
469         p: &'node mut ShapeFieldName,
470     ) -> Result<(), <Self::P as Params>::Error> {
471         p.recurse(c, self.object())
472     }
473     fn visit_stmt(
474         &mut self,
475         c: &mut <Self::P as Params>::Context,
476         p: &'node mut Stmt<<Self::P as Params>::Ex, <Self::P as Params>::En>,
477     ) -> Result<(), <Self::P as Params>::Error> {
478         p.recurse(c, self.object())
479     }
480     fn visit_stmt_(
481         &mut self,
482         c: &mut <Self::P as Params>::Context,
483         p: &'node mut Stmt_<<Self::P as Params>::Ex, <Self::P as Params>::En>,
484     ) -> Result<(), <Self::P as Params>::Error> {
485         p.recurse(c, self.object())
486     }
487     fn visit_targ(
488         &mut self,
489         c: &mut <Self::P as Params>::Context,
490         p: &'node mut Targ<<Self::P as Params>::Ex>,
491     ) -> Result<(), <Self::P as Params>::Error> {
492         p.recurse(c, self.object())
493     }
494     fn visit_tparam(
495         &mut self,
496         c: &mut <Self::P as Params>::Context,
497         p: &'node mut Tparam<<Self::P as Params>::Ex, <Self::P as Params>::En>,
498     ) -> Result<(), <Self::P as Params>::Error> {
499         p.recurse(c, self.object())
500     }
501     fn visit_tprim(
502         &mut self,
503         c: &mut <Self::P as Params>::Context,
504         p: &'node mut Tprim,
505     ) -> Result<(), <Self::P as Params>::Error> {
506         p.recurse(c, self.object())
507     }
508     fn visit_type_hint(
509         &mut self,
510         c: &mut <Self::P as Params>::Context,
511         p: &'node mut TypeHint<<Self::P as Params>::Ex>,
512     ) -> Result<(), <Self::P as Params>::Error> {
513         p.recurse(c, self.object())
514     }
515     fn visit_typedef(
516         &mut self,
517         c: &mut <Self::P as Params>::Context,
518         p: &'node mut Typedef<<Self::P as Params>::Ex, <Self::P as Params>::En>,
519     ) -> Result<(), <Self::P as Params>::Error> {
520         p.recurse(c, self.object())
521     }
522     fn visit_typedef_visibility(
523         &mut self,
524         c: &mut <Self::P as Params>::Context,
525         p: &'node mut TypedefVisibility,
526     ) -> Result<(), <Self::P as Params>::Error> {
527         p.recurse(c, self.object())
528     }
529     fn visit_uop(
530         &mut self,
531         c: &mut <Self::P as Params>::Context,
532         p: &'node mut Uop,
533     ) -> Result<(), <Self::P as Params>::Error> {
534         p.recurse(c, self.object())
535     }
536     fn visit_use_as_alias(
537         &mut self,
538         c: &mut <Self::P as Params>::Context,
539         p: &'node mut UseAsAlias,
540     ) -> Result<(), <Self::P as Params>::Error> {
541         p.recurse(c, self.object())
542     }
543     fn visit_use_as_visibility(
544         &mut self,
545         c: &mut <Self::P as Params>::Context,
546         p: &'node mut UseAsVisibility,
547     ) -> Result<(), <Self::P as Params>::Error> {
548         p.recurse(c, self.object())
549     }
550     fn visit_user_attribute(
551         &mut self,
552         c: &mut <Self::P as Params>::Context,
553         p: &'node mut UserAttribute<<Self::P as Params>::Ex, <Self::P as Params>::En>,
554     ) -> Result<(), <Self::P as Params>::Error> {
555         p.recurse(c, self.object())
556     }
557     fn visit_using_stmt(
558         &mut self,
559         c: &mut <Self::P as Params>::Context,
560         p: &'node mut UsingStmt<<Self::P as Params>::Ex, <Self::P as Params>::En>,
561     ) -> Result<(), <Self::P as Params>::Error> {
562         p.recurse(c, self.object())
563     }
564     fn visit_variance(
565         &mut self,
566         c: &mut <Self::P as Params>::Context,
567         p: &'node mut Variance,
568     ) -> Result<(), <Self::P as Params>::Error> {
569         p.recurse(c, self.object())
570     }
571     fn visit_vc_kind(
572         &mut self,
573         c: &mut <Self::P as Params>::Context,
574         p: &'node mut VcKind,
575     ) -> Result<(), <Self::P as Params>::Error> {
576         p.recurse(c, self.object())
577     }
578     fn visit_visibility(
579         &mut self,
580         c: &mut <Self::P as Params>::Context,
581         p: &'node mut Visibility,
582     ) -> Result<(), <Self::P as Params>::Error> {
583         p.recurse(c, self.object())
584     }
585     fn visit_where_constraint_hint(
586         &mut self,
587         c: &mut <Self::P as Params>::Context,
588         p: &'node mut WhereConstraintHint,
589     ) -> Result<(), <Self::P as Params>::Error> {
590         p.recurse(c, self.object())
591     }
592     fn visit_xhp_attr(
593         &mut self,
594         c: &mut <Self::P as Params>::Context,
595         p: &'node mut XhpAttr<<Self::P as Params>::Ex, <Self::P as Params>::En>,
596     ) -> Result<(), <Self::P as Params>::Error> {
597         p.recurse(c, self.object())
598     }
599     fn visit_xhp_attr_info(
600         &mut self,
601         c: &mut <Self::P as Params>::Context,
602         p: &'node mut XhpAttrInfo,
603     ) -> Result<(), <Self::P as Params>::Error> {
604         p.recurse(c, self.object())
605     }
606     fn visit_xhp_attr_tag(
607         &mut self,
608         c: &mut <Self::P as Params>::Context,
609         p: &'node mut XhpAttrTag,
610     ) -> Result<(), <Self::P as Params>::Error> {
611         p.recurse(c, self.object())
612     }
613     fn visit_xhp_attribute(
614         &mut self,
615         c: &mut <Self::P as Params>::Context,
616         p: &'node mut XhpAttribute<<Self::P as Params>::Ex, <Self::P as Params>::En>,
617     ) -> Result<(), <Self::P as Params>::Error> {
618         p.recurse(c, self.object())
619     }
620     fn visit_xhp_child(
621         &mut self,
622         c: &mut <Self::P as Params>::Context,
623         p: &'node mut XhpChild,
624     ) -> Result<(), <Self::P as Params>::Error> {
625         p.recurse(c, self.object())
626     }
627     fn visit_xhp_child_op(
628         &mut self,
629         c: &mut <Self::P as Params>::Context,
630         p: &'node mut XhpChildOp,
631     ) -> Result<(), <Self::P as Params>::Error> {
632         p.recurse(c, self.object())
633     }
634     fn visit_xhp_enum_value(
635         &mut self,
636         c: &mut <Self::P as Params>::Context,
637         p: &'node mut XhpEnumValue,
638     ) -> Result<(), <Self::P as Params>::Error> {
639         p.recurse(c, self.object())
640     }
641     fn visit_xhp_simple(
642         &mut self,
643         c: &mut <Self::P as Params>::Context,
644         p: &'node mut XhpSimple<<Self::P as Params>::Ex, <Self::P as Params>::En>,
645     ) -> Result<(), <Self::P as Params>::Error> {
646         p.recurse(c, self.object())
647     }