Fix date-sensitive copyright header in generate_ppx output files
[hiphop-php.git] / hphp / hack / src / annotated_ast / aast.ml
blob04a4f73779aaa5337e20089c93eec2ace474f47c
1 (* @generated from aast.src.ml by hphp/hack/tools/ppx/facebook:generate_ppx *)
2 (* Copyright (c) 2004-present, Facebook, Inc. All rights reserved. *)
3 (* SourceShasum<<8170dd46e27ca70e49a8774fd295aa4756bb454e>> *)
5 (* DO NOT EDIT MANUALLY. *)
6 [@@@ocaml.text
7 "\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the \"hack\" directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n "]
8 include Aast_defs
9 module type AnnotationType =
10 sig type t val pp : Format.formatter -> t -> unit end
11 module type ASTAnnotationTypes =
12 sig
13 module ExprAnnotation : AnnotationType
14 module EnvAnnotation : AnnotationType
15 end
16 module AnnotatedAST(Annotations:ASTAnnotationTypes) =
17 struct
18 module ExprAnnotation = Annotations.ExprAnnotation
19 module EnvAnnotation = Annotations.EnvAnnotation
20 type program = def list[@@deriving
21 (show,
22 (visitors
24 variety = "iter";
25 nude = true;
26 visit_prefix = "on_";
27 ancestors = ["iter_defs"]
28 }),
29 (visitors
31 variety = "reduce";
32 nude = true;
33 visit_prefix = "on_";
34 ancestors = ["reduce_defs"]
35 }),
36 (visitors
38 variety = "map";
39 nude = true;
40 visit_prefix = "on_";
41 ancestors = ["map_defs"]
42 }),
43 (visitors
45 variety = "endo";
46 nude = true;
47 visit_prefix = "on_";
48 ancestors = ["endo_defs"]
49 }))]
50 and expr_annotation = ((ExprAnnotation.t)[@visitors.opaque ])
51 and env_annotation = ((EnvAnnotation.t)[@visitors.opaque ])
52 and stmt =
53 | Fallthrough
54 | Expr of expr
55 | Break of pos
56 | Continue of pos
57 | Throw of is_terminal * expr
58 | Return of pos * expr option
59 | GotoLabel of pstring
60 | Goto of pstring
61 | Static_var of expr list
62 | Global_var of expr list
63 | If of expr * block * block
64 | Do of block * expr
65 | While of expr * block
66 | Using of bool * expr * block
67 | For of expr * expr * expr * block
68 | Switch of expr * case list
69 | Foreach of expr * as_expr * block
70 | Try of block * catch list * block
71 | Noop
72 and as_expr =
73 | As_v of expr
74 | As_kv of expr * expr
75 | Await_as_v of pos * expr
76 | Await_as_kv of pos * expr * expr
77 and block = stmt list
78 and class_id =
79 | CIparent
80 | CIself
81 | CIstatic
82 | CIexpr of expr
83 | CI of instantiated_sid
84 and expr = (expr_annotation * expr_)
85 and expr_ =
86 | Array of afield list
87 | Darray of (expr * expr) list
88 | Varray of expr list
89 | Shape of expr shape_map
90 | ValCollection of vc_kind * expr list
91 | KeyValCollection of kvc_kind * field list
92 | Null
93 | This
94 | True
95 | False
96 | Id of sid
97 | Lvar of lid
98 | Dollar of expr
99 | Dollardollar of lid
100 | Clone of expr
101 | Obj_get of expr * expr * og_null_flavor
102 | Array_get of expr * expr option
103 | Class_get of class_id * pstring
104 | Class_const of class_id * pstring
105 | Call of call_type * expr * hint list * expr list * expr list
106 | Int of pstring
107 | Float of pstring
108 | String of pstring
109 | String2 of expr list
110 | Yield of afield
111 | Yield_break
112 | Await of expr
113 | Suspend of expr
114 | List of expr list
115 | Expr_list of expr list
116 | Cast of hint * expr
117 | Unop of Ast.uop * expr
118 | Binop of Ast.bop * expr * expr
119 [@ocaml.doc
120 " The ID of the $$ that is implicitly declared by this pipe. "]
121 | Pipe of lid * expr * expr
122 | Eif of expr * expr option * expr
123 | NullCoalesce of expr * expr
124 | InstanceOf of expr * class_id
125 | Is of expr * hint
126 | New of class_id * expr list * expr list
127 | Efun of fun_ * lid list
128 | Xml of sid * xhp_attribute list * expr list
129 | Callconv of Ast.param_kind * expr
130 | Lplaceholder of pos
131 | Fun_id of sid
132 | Method_id of expr * pstring
133 | Method_caller of sid * pstring
134 | Smethod_id of sid * pstring
135 | Special_func of special_func
136 | Pair of expr * expr
137 | Assert of assert_expr
138 | Typename of sid
139 | Any
140 and assert_expr =
141 | AE_assert of expr
142 and case =
143 | Default of block
144 | Case of expr * block
145 and catch = (sid * lid * block)
146 and field = (expr * expr)
147 and afield =
148 | AFvalue of expr
149 | AFkvalue of expr * expr
150 and xhp_attribute =
151 | Xhp_simple of pstring * expr
152 | Xhp_spread of expr
153 and special_func =
154 | Gena of expr
155 | Genva of expr list
156 | Gen_array_rec of expr
157 and is_reference = bool
158 and is_variadic = bool
159 and fun_param =
161 param_hint: hint option ;
162 param_is_reference: is_reference ;
163 param_is_variadic: is_variadic ;
164 param_pos: pos ;
165 param_name: string ;
166 param_expr: expr option ;
167 param_callconv: Ast.param_kind option ;
168 param_user_attributes: user_attribute list }
169 and fun_variadicity =
170 | FVvariadicArg of fun_param
171 | FVellipsis
172 | FVnonVariadic
173 and fun_ =
175 f_annotation: env_annotation ;
176 f_mode: FileInfo.mode [@opaque ];
177 f_ret: hint option ;
178 f_name: sid ;
179 f_tparams: tparam list ;
180 f_where_constraints: where_constraint list ;
181 f_variadic: fun_variadicity ;
182 f_params: fun_param list ;
183 f_body: func_body ;
184 f_fun_kind: Ast.fun_kind ;
185 f_user_attributes: user_attribute list ;
186 f_ret_by_ref: bool }
187 and func_body =
188 | UnnamedBody of func_unnamed_body
189 | NamedBody of func_named_body
190 and func_unnamed_body =
192 fub_ast: Ast.block [@opaque ];
193 fub_tparams: Ast.tparam list [@opaque ];
194 fub_namespace: Namespace_env.env [@opaque ]}
195 and func_named_body = {
196 fnb_nast: block ;
197 fnb_unsafe: bool }
198 and user_attribute = {
199 ua_name: sid ;
200 ua_params: expr list }
201 and class_ =
203 c_annotation: env_annotation ;
204 c_mode: FileInfo.mode [@opaque ];
205 c_final: bool ;
206 c_is_xhp: bool ;
207 c_kind: Ast.class_kind ;
208 c_name: sid ;
209 c_tparams: (tparam list * (Ast.constraint_kind * Ast.hint) list SMap.t)
210 [@opaque ];
211 c_extends: hint list ;
212 c_uses: hint list ;
213 c_xhp_attr_uses: hint list ;
214 c_xhp_category: pstring list ;
215 c_req_extends: hint list ;
216 c_req_implements: hint list ;
217 c_implements: hint list ;
218 c_consts: class_const list ;
219 c_typeconsts: class_typeconst list ;
220 c_static_vars: class_var list ;
221 c_vars: class_var list ;
222 c_constructor: method_ option ;
223 c_static_methods: method_ list ;
224 c_methods: method_ list ;
225 c_user_attributes: user_attribute list ;
226 c_enum: enum_ option }
227 and class_const = (hint option * sid * expr option)
228 and class_typeconst =
230 c_tconst_name: sid ;
231 c_tconst_constraint: hint option ;
232 c_tconst_type: hint option }
233 and class_var =
235 cv_final: bool ;
236 cv_is_xhp: bool ;
237 cv_visibility: visibility ;
238 cv_type: hint option ;
239 cv_id: sid ;
240 cv_expr: expr option ;
241 cv_user_attributes: user_attribute list }
242 and method_ =
244 m_annotation: env_annotation ;
245 m_final: bool ;
246 m_abstract: bool ;
247 m_visibility: visibility ;
248 m_name: sid ;
249 m_tparams: tparam list ;
250 m_where_constraints: where_constraint list ;
251 m_variadic: fun_variadicity ;
252 m_params: fun_param list ;
253 m_body: func_body ;
254 m_fun_kind: Ast.fun_kind ;
255 m_user_attributes: user_attribute list ;
256 m_ret: hint option ;
257 m_ret_by_ref: bool }
258 and typedef =
260 t_annotation: env_annotation ;
261 t_name: sid ;
262 t_tparams: tparam list ;
263 t_constraint: hint option ;
264 t_kind: hint ;
265 t_user_attributes: user_attribute list ;
266 t_mode: FileInfo.mode [@opaque ];
267 t_vis: typedef_visibility }
268 and gconst =
270 cst_annotation: env_annotation ;
271 cst_mode: FileInfo.mode [@opaque ];
272 cst_name: sid ;
273 cst_type: hint option ;
274 cst_value: expr option ;
275 cst_is_define: bool }
276 and def =
277 | Fun of fun_
278 | Class of class_
279 | Typedef of typedef
280 | Constant of gconst
281 let rec pp_program :
282 Format.formatter -> program -> Ppx_deriving_runtime.unit =
283 let __0 () = pp_def in
284 ((let open! Ppx_deriving_runtime in
285 fun fmt ->
286 fun x ->
287 Format.fprintf fmt "@[<2>[";
288 ignore
289 (List.fold_left
290 (fun sep ->
291 fun x ->
292 if sep then Format.fprintf fmt ";@ ";
293 ((__0 ()) fmt) x;
294 true) false x);
295 Format.fprintf fmt "@,]@]")
296 [@ocaml.warning "-A"])
298 and show_program : program -> Ppx_deriving_runtime.string =
299 fun x -> Format.asprintf "%a" pp_program x
301 and pp_expr_annotation :
302 Format.formatter -> expr_annotation -> Ppx_deriving_runtime.unit =
303 let __0 () = ExprAnnotation.pp in
304 ((let open! Ppx_deriving_runtime in fun fmt -> (__0 ()) fmt)
305 [@ocaml.warning "-A"])
307 and show_expr_annotation : expr_annotation -> Ppx_deriving_runtime.string
308 = fun x -> Format.asprintf "%a" pp_expr_annotation x
310 and pp_env_annotation :
311 Format.formatter -> env_annotation -> Ppx_deriving_runtime.unit =
312 let __0 () = EnvAnnotation.pp in
313 ((let open! Ppx_deriving_runtime in fun fmt -> (__0 ()) fmt)
314 [@ocaml.warning "-A"])
316 and show_env_annotation : env_annotation -> Ppx_deriving_runtime.string =
317 fun x -> Format.asprintf "%a" pp_env_annotation x
319 and pp_stmt : Format.formatter -> stmt -> Ppx_deriving_runtime.unit =
320 let __31 () = pp_block
322 and __30 () = pp_catch
324 and __29 () = pp_block
326 and __28 () = pp_block
328 and __27 () = pp_as_expr
330 and __26 () = pp_expr
332 and __25 () = pp_case
334 and __24 () = pp_expr
336 and __23 () = pp_block
338 and __22 () = pp_expr
340 and __21 () = pp_expr
342 and __20 () = pp_expr
344 and __19 () = pp_block
346 and __18 () = pp_expr
348 and __17 () = pp_block
350 and __16 () = pp_expr
352 and __15 () = pp_expr
354 and __14 () = pp_block
356 and __13 () = pp_block
358 and __12 () = pp_block
360 and __11 () = pp_expr
362 and __10 () = pp_expr
364 and __9 () = pp_expr
366 and __8 () = pp_pstring
368 and __7 () = pp_pstring
370 and __6 () = pp_expr
372 and __5 () = pp_pos
374 and __4 () = pp_expr
376 and __3 () = pp_is_terminal
378 and __2 () = pp_pos
380 and __1 () = pp_pos
382 and __0 () = pp_expr
384 ((let open! Ppx_deriving_runtime in
385 fun fmt ->
386 function
387 | Fallthrough ->
388 Format.pp_print_string fmt "AnnotatedAST.Fallthrough"
389 | Expr a0 ->
390 (Format.fprintf fmt "(@[<2>AnnotatedAST.Expr@ ";
391 ((__0 ()) fmt) a0;
392 Format.fprintf fmt "@])")
393 | Break a0 ->
394 (Format.fprintf fmt "(@[<2>AnnotatedAST.Break@ ";
395 ((__1 ()) fmt) a0;
396 Format.fprintf fmt "@])")
397 | Continue a0 ->
398 (Format.fprintf fmt "(@[<2>AnnotatedAST.Continue@ ";
399 ((__2 ()) fmt) a0;
400 Format.fprintf fmt "@])")
401 | Throw (a0,a1) ->
402 (Format.fprintf fmt "(@[<2>AnnotatedAST.Throw (@,";
403 (((__3 ()) fmt) a0;
404 Format.fprintf fmt ",@ ";
405 ((__4 ()) fmt) a1);
406 Format.fprintf fmt "@,))@]")
407 | Return (a0,a1) ->
408 (Format.fprintf fmt "(@[<2>AnnotatedAST.Return (@,";
409 (((__5 ()) fmt) a0;
410 Format.fprintf fmt ",@ ";
411 ((function
412 | None -> Format.pp_print_string fmt "None"
413 | Some x ->
414 (Format.pp_print_string fmt "(Some ";
415 ((__6 ()) fmt) x;
416 Format.pp_print_string fmt ")"))) a1);
417 Format.fprintf fmt "@,))@]")
418 | GotoLabel a0 ->
419 (Format.fprintf fmt "(@[<2>AnnotatedAST.GotoLabel@ ";
420 ((__7 ()) fmt) a0;
421 Format.fprintf fmt "@])")
422 | Goto a0 ->
423 (Format.fprintf fmt "(@[<2>AnnotatedAST.Goto@ ";
424 ((__8 ()) fmt) a0;
425 Format.fprintf fmt "@])")
426 | Static_var a0 ->
427 (Format.fprintf fmt "(@[<2>AnnotatedAST.Static_var@ ";
428 ((fun x ->
429 Format.fprintf fmt "@[<2>[";
430 ignore
431 (List.fold_left
432 (fun sep ->
433 fun x ->
434 if sep then Format.fprintf fmt ";@ ";
435 ((__9 ()) fmt) x;
436 true) false x);
437 Format.fprintf fmt "@,]@]")) a0;
438 Format.fprintf fmt "@])")
439 | Global_var a0 ->
440 (Format.fprintf fmt "(@[<2>AnnotatedAST.Global_var@ ";
441 ((fun x ->
442 Format.fprintf fmt "@[<2>[";
443 ignore
444 (List.fold_left
445 (fun sep ->
446 fun x ->
447 if sep then Format.fprintf fmt ";@ ";
448 ((__10 ()) fmt) x;
449 true) false x);
450 Format.fprintf fmt "@,]@]")) a0;
451 Format.fprintf fmt "@])")
452 | If (a0,a1,a2) ->
453 (Format.fprintf fmt "(@[<2>AnnotatedAST.If (@,";
454 ((((__11 ()) fmt) a0;
455 Format.fprintf fmt ",@ ";
456 ((__12 ()) fmt) a1);
457 Format.fprintf fmt ",@ ";
458 ((__13 ()) fmt) a2);
459 Format.fprintf fmt "@,))@]")
460 | Do (a0,a1) ->
461 (Format.fprintf fmt "(@[<2>AnnotatedAST.Do (@,";
462 (((__14 ()) fmt) a0;
463 Format.fprintf fmt ",@ ";
464 ((__15 ()) fmt) a1);
465 Format.fprintf fmt "@,))@]")
466 | While (a0,a1) ->
467 (Format.fprintf fmt "(@[<2>AnnotatedAST.While (@,";
468 (((__16 ()) fmt) a0;
469 Format.fprintf fmt ",@ ";
470 ((__17 ()) fmt) a1);
471 Format.fprintf fmt "@,))@]")
472 | Using (a0,a1,a2) ->
473 (Format.fprintf fmt "(@[<2>AnnotatedAST.Using (@,";
474 (((Format.fprintf fmt "%B") a0;
475 Format.fprintf fmt ",@ ";
476 ((__18 ()) fmt) a1);
477 Format.fprintf fmt ",@ ";
478 ((__19 ()) fmt) a2);
479 Format.fprintf fmt "@,))@]")
480 | For (a0,a1,a2,a3) ->
481 (Format.fprintf fmt "(@[<2>AnnotatedAST.For (@,";
482 (((((__20 ()) fmt) a0;
483 Format.fprintf fmt ",@ ";
484 ((__21 ()) fmt) a1);
485 Format.fprintf fmt ",@ ";
486 ((__22 ()) fmt) a2);
487 Format.fprintf fmt ",@ ";
488 ((__23 ()) fmt) a3);
489 Format.fprintf fmt "@,))@]")
490 | Switch (a0,a1) ->
491 (Format.fprintf fmt "(@[<2>AnnotatedAST.Switch (@,";
492 (((__24 ()) fmt) a0;
493 Format.fprintf fmt ",@ ";
494 ((fun x ->
495 Format.fprintf fmt "@[<2>[";
496 ignore
497 (List.fold_left
498 (fun sep ->
499 fun x ->
500 if sep then Format.fprintf fmt ";@ ";
501 ((__25 ()) fmt) x;
502 true) false x);
503 Format.fprintf fmt "@,]@]")) a1);
504 Format.fprintf fmt "@,))@]")
505 | Foreach (a0,a1,a2) ->
506 (Format.fprintf fmt "(@[<2>AnnotatedAST.Foreach (@,";
507 ((((__26 ()) fmt) a0;
508 Format.fprintf fmt ",@ ";
509 ((__27 ()) fmt) a1);
510 Format.fprintf fmt ",@ ";
511 ((__28 ()) fmt) a2);
512 Format.fprintf fmt "@,))@]")
513 | Try (a0,a1,a2) ->
514 (Format.fprintf fmt "(@[<2>AnnotatedAST.Try (@,";
515 ((((__29 ()) fmt) a0;
516 Format.fprintf fmt ",@ ";
517 ((fun x ->
518 Format.fprintf fmt "@[<2>[";
519 ignore
520 (List.fold_left
521 (fun sep ->
522 fun x ->
523 if sep then Format.fprintf fmt ";@ ";
524 ((__30 ()) fmt) x;
525 true) false x);
526 Format.fprintf fmt "@,]@]")) a1);
527 Format.fprintf fmt ",@ ";
528 ((__31 ()) fmt) a2);
529 Format.fprintf fmt "@,))@]")
530 | Noop -> Format.pp_print_string fmt "AnnotatedAST.Noop")
531 [@ocaml.warning "-A"])
533 and show_stmt : stmt -> Ppx_deriving_runtime.string =
534 fun x -> Format.asprintf "%a" pp_stmt x
536 and pp_as_expr : Format.formatter -> as_expr -> Ppx_deriving_runtime.unit
538 let __7 () = pp_expr
540 and __6 () = pp_expr
542 and __5 () = pp_pos
544 and __4 () = pp_expr
546 and __3 () = pp_pos
548 and __2 () = pp_expr
550 and __1 () = pp_expr
552 and __0 () = pp_expr
554 ((let open! Ppx_deriving_runtime in
555 fun fmt ->
556 function
557 | As_v a0 ->
558 (Format.fprintf fmt "(@[<2>AnnotatedAST.As_v@ ";
559 ((__0 ()) fmt) a0;
560 Format.fprintf fmt "@])")
561 | As_kv (a0,a1) ->
562 (Format.fprintf fmt "(@[<2>AnnotatedAST.As_kv (@,";
563 (((__1 ()) fmt) a0;
564 Format.fprintf fmt ",@ ";
565 ((__2 ()) fmt) a1);
566 Format.fprintf fmt "@,))@]")
567 | Await_as_v (a0,a1) ->
568 (Format.fprintf fmt "(@[<2>AnnotatedAST.Await_as_v (@,";
569 (((__3 ()) fmt) a0;
570 Format.fprintf fmt ",@ ";
571 ((__4 ()) fmt) a1);
572 Format.fprintf fmt "@,))@]")
573 | Await_as_kv (a0,a1,a2) ->
574 (Format.fprintf fmt "(@[<2>AnnotatedAST.Await_as_kv (@,";
575 ((((__5 ()) fmt) a0;
576 Format.fprintf fmt ",@ ";
577 ((__6 ()) fmt) a1);
578 Format.fprintf fmt ",@ ";
579 ((__7 ()) fmt) a2);
580 Format.fprintf fmt "@,))@]"))
581 [@ocaml.warning "-A"])
583 and show_as_expr : as_expr -> Ppx_deriving_runtime.string =
584 fun x -> Format.asprintf "%a" pp_as_expr x
586 and pp_block : Format.formatter -> block -> Ppx_deriving_runtime.unit =
587 let __0 () = pp_stmt in
588 ((let open! Ppx_deriving_runtime in
589 fun fmt ->
590 fun x ->
591 Format.fprintf fmt "@[<2>[";
592 ignore
593 (List.fold_left
594 (fun sep ->
595 fun x ->
596 if sep then Format.fprintf fmt ";@ ";
597 ((__0 ()) fmt) x;
598 true) false x);
599 Format.fprintf fmt "@,]@]")
600 [@ocaml.warning "-A"])
602 and show_block : block -> Ppx_deriving_runtime.string =
603 fun x -> Format.asprintf "%a" pp_block x
605 and pp_class_id :
606 Format.formatter -> class_id -> Ppx_deriving_runtime.unit =
607 let __1 () = pp_instantiated_sid
609 and __0 () = pp_expr
611 ((let open! Ppx_deriving_runtime in
612 fun fmt ->
613 function
614 | CIparent -> Format.pp_print_string fmt "AnnotatedAST.CIparent"
615 | CIself -> Format.pp_print_string fmt "AnnotatedAST.CIself"
616 | CIstatic -> Format.pp_print_string fmt "AnnotatedAST.CIstatic"
617 | CIexpr a0 ->
618 (Format.fprintf fmt "(@[<2>AnnotatedAST.CIexpr@ ";
619 ((__0 ()) fmt) a0;
620 Format.fprintf fmt "@])")
621 | CI a0 ->
622 (Format.fprintf fmt "(@[<2>AnnotatedAST.CI@ ";
623 ((__1 ()) fmt) a0;
624 Format.fprintf fmt "@])"))
625 [@ocaml.warning "-A"])
627 and show_class_id : class_id -> Ppx_deriving_runtime.string =
628 fun x -> Format.asprintf "%a" pp_class_id x
630 and pp_expr : Format.formatter -> expr -> Ppx_deriving_runtime.unit =
631 let __1 () = pp_expr_
633 and __0 () = pp_expr_annotation
635 ((let open! Ppx_deriving_runtime in
636 fun fmt ->
637 fun (a0,a1) ->
638 Format.fprintf fmt "(@[";
639 (((__0 ()) fmt) a0; Format.fprintf fmt ",@ "; ((__1 ()) fmt) a1);
640 Format.fprintf fmt "@])")
641 [@ocaml.warning "-A"])
643 and show_expr : expr -> Ppx_deriving_runtime.string =
644 fun x -> Format.asprintf "%a" pp_expr x
646 and pp_expr_ : Format.formatter -> expr_ -> Ppx_deriving_runtime.unit =
647 let __79 () = pp_sid
649 and __78 () = pp_assert_expr
651 and __77 () = pp_expr
653 and __76 () = pp_expr
655 and __75 () = pp_special_func
657 and __74 () = pp_pstring
659 and __73 () = pp_sid
661 and __72 () = pp_pstring
663 and __71 () = pp_sid
665 and __70 () = pp_pstring
667 and __69 () = pp_expr
669 and __68 () = pp_sid
671 and __67 () = pp_pos
673 and __66 () = pp_expr
675 and __65 () = Ast.pp_param_kind
677 and __64 () = pp_expr
679 and __63 () = pp_xhp_attribute
681 and __62 () = pp_sid
683 and __61 () = pp_lid
685 and __60 () = pp_fun_
687 and __59 () = pp_expr
689 and __58 () = pp_expr
691 and __57 () = pp_class_id
693 and __56 () = pp_hint
695 and __55 () = pp_expr
697 and __54 () = pp_class_id
699 and __53 () = pp_expr
701 and __52 () = pp_expr
703 and __51 () = pp_expr
705 and __50 () = pp_expr
707 and __49 () = pp_expr
709 and __48 () = pp_expr
711 and __47 () = pp_expr
713 and __46 () = pp_expr
715 and __45 () = pp_lid
717 and __44 () = pp_expr
719 and __43 () = pp_expr
721 and __42 () = Ast.pp_bop
723 and __41 () = pp_expr
725 and __40 () = Ast.pp_uop
727 and __39 () = pp_expr
729 and __38 () = pp_hint
731 and __37 () = pp_expr
733 and __36 () = pp_expr
735 and __35 () = pp_expr
737 and __34 () = pp_expr
739 and __33 () = pp_afield
741 and __32 () = pp_expr
743 and __31 () = pp_pstring
745 and __30 () = pp_pstring
747 and __29 () = pp_pstring
749 and __28 () = pp_expr
751 and __27 () = pp_expr
753 and __26 () = pp_hint
755 and __25 () = pp_expr
757 and __24 () = pp_call_type
759 and __23 () = pp_pstring
761 and __22 () = pp_class_id
763 and __21 () = pp_pstring
765 and __20 () = pp_class_id
767 and __19 () = pp_expr
769 and __18 () = pp_expr
771 and __17 () = pp_og_null_flavor
773 and __16 () = pp_expr
775 and __15 () = pp_expr
777 and __14 () = pp_expr
779 and __13 () = pp_lid
781 and __12 () = pp_expr
783 and __11 () = pp_lid
785 and __10 () = pp_sid
787 and __9 () = pp_field
789 and __8 () = pp_kvc_kind
791 and __7 () = pp_expr
793 and __6 () = pp_vc_kind
795 and __5 () = pp_shape_map
797 and __4 () = pp_expr
799 and __3 () = pp_expr
801 and __2 () = pp_expr
803 and __1 () = pp_expr
805 and __0 () = pp_afield
807 ((let open! Ppx_deriving_runtime in
808 fun fmt ->
809 function
810 | Array a0 ->
811 (Format.fprintf fmt "(@[<2>AnnotatedAST.Array@ ";
812 ((fun x ->
813 Format.fprintf fmt "@[<2>[";
814 ignore
815 (List.fold_left
816 (fun sep ->
817 fun x ->
818 if sep then Format.fprintf fmt ";@ ";
819 ((__0 ()) fmt) x;
820 true) false x);
821 Format.fprintf fmt "@,]@]")) a0;
822 Format.fprintf fmt "@])")
823 | Darray a0 ->
824 (Format.fprintf fmt "(@[<2>AnnotatedAST.Darray@ ";
825 ((fun x ->
826 Format.fprintf fmt "@[<2>[";
827 ignore
828 (List.fold_left
829 (fun sep ->
830 fun x ->
831 if sep then Format.fprintf fmt ";@ ";
832 ((fun (a0,a1) ->
833 Format.fprintf fmt "(@[";
834 (((__1 ()) fmt) a0;
835 Format.fprintf fmt ",@ ";
836 ((__2 ()) fmt) a1);
837 Format.fprintf fmt "@])")) x;
838 true) false x);
839 Format.fprintf fmt "@,]@]")) a0;
840 Format.fprintf fmt "@])")
841 | Varray a0 ->
842 (Format.fprintf fmt "(@[<2>AnnotatedAST.Varray@ ";
843 ((fun x ->
844 Format.fprintf fmt "@[<2>[";
845 ignore
846 (List.fold_left
847 (fun sep ->
848 fun x ->
849 if sep then Format.fprintf fmt ";@ ";
850 ((__3 ()) fmt) x;
851 true) false x);
852 Format.fprintf fmt "@,]@]")) a0;
853 Format.fprintf fmt "@])")
854 | Shape a0 ->
855 (Format.fprintf fmt "(@[<2>AnnotatedAST.Shape@ ";
856 ((__5 ()) (fun fmt -> (__4 ()) fmt) fmt) a0;
857 Format.fprintf fmt "@])")
858 | ValCollection (a0,a1) ->
859 (Format.fprintf fmt "(@[<2>AnnotatedAST.ValCollection (@,";
860 (((__6 ()) fmt) a0;
861 Format.fprintf fmt ",@ ";
862 ((fun x ->
863 Format.fprintf fmt "@[<2>[";
864 ignore
865 (List.fold_left
866 (fun sep ->
867 fun x ->
868 if sep then Format.fprintf fmt ";@ ";
869 ((__7 ()) fmt) x;
870 true) false x);
871 Format.fprintf fmt "@,]@]")) a1);
872 Format.fprintf fmt "@,))@]")
873 | KeyValCollection (a0,a1) ->
874 (Format.fprintf fmt "(@[<2>AnnotatedAST.KeyValCollection (@,";
875 (((__8 ()) fmt) a0;
876 Format.fprintf fmt ",@ ";
877 ((fun x ->
878 Format.fprintf fmt "@[<2>[";
879 ignore
880 (List.fold_left
881 (fun sep ->
882 fun x ->
883 if sep then Format.fprintf fmt ";@ ";
884 ((__9 ()) fmt) x;
885 true) false x);
886 Format.fprintf fmt "@,]@]")) a1);
887 Format.fprintf fmt "@,))@]")
888 | Null -> Format.pp_print_string fmt "AnnotatedAST.Null"
889 | This -> Format.pp_print_string fmt "AnnotatedAST.This"
890 | True -> Format.pp_print_string fmt "AnnotatedAST.True"
891 | False -> Format.pp_print_string fmt "AnnotatedAST.False"
892 | Id a0 ->
893 (Format.fprintf fmt "(@[<2>AnnotatedAST.Id@ ";
894 ((__10 ()) fmt) a0;
895 Format.fprintf fmt "@])")
896 | Lvar a0 ->
897 (Format.fprintf fmt "(@[<2>AnnotatedAST.Lvar@ ";
898 ((__11 ()) fmt) a0;
899 Format.fprintf fmt "@])")
900 | Dollar a0 ->
901 (Format.fprintf fmt "(@[<2>AnnotatedAST.Dollar@ ";
902 ((__12 ()) fmt) a0;
903 Format.fprintf fmt "@])")
904 | Dollardollar a0 ->
905 (Format.fprintf fmt "(@[<2>AnnotatedAST.Dollardollar@ ";
906 ((__13 ()) fmt) a0;
907 Format.fprintf fmt "@])")
908 | Clone a0 ->
909 (Format.fprintf fmt "(@[<2>AnnotatedAST.Clone@ ";
910 ((__14 ()) fmt) a0;
911 Format.fprintf fmt "@])")
912 | Obj_get (a0,a1,a2) ->
913 (Format.fprintf fmt "(@[<2>AnnotatedAST.Obj_get (@,";
914 ((((__15 ()) fmt) a0;
915 Format.fprintf fmt ",@ ";
916 ((__16 ()) fmt) a1);
917 Format.fprintf fmt ",@ ";
918 ((__17 ()) fmt) a2);
919 Format.fprintf fmt "@,))@]")
920 | Array_get (a0,a1) ->
921 (Format.fprintf fmt "(@[<2>AnnotatedAST.Array_get (@,";
922 (((__18 ()) fmt) a0;
923 Format.fprintf fmt ",@ ";
924 ((function
925 | None -> Format.pp_print_string fmt "None"
926 | Some x ->
927 (Format.pp_print_string fmt "(Some ";
928 ((__19 ()) fmt) x;
929 Format.pp_print_string fmt ")"))) a1);
930 Format.fprintf fmt "@,))@]")
931 | Class_get (a0,a1) ->
932 (Format.fprintf fmt "(@[<2>AnnotatedAST.Class_get (@,";
933 (((__20 ()) fmt) a0;
934 Format.fprintf fmt ",@ ";
935 ((__21 ()) fmt) a1);
936 Format.fprintf fmt "@,))@]")
937 | Class_const (a0,a1) ->
938 (Format.fprintf fmt "(@[<2>AnnotatedAST.Class_const (@,";
939 (((__22 ()) fmt) a0;
940 Format.fprintf fmt ",@ ";
941 ((__23 ()) fmt) a1);
942 Format.fprintf fmt "@,))@]")
943 | Call (a0,a1,a2,a3,a4) ->
944 (Format.fprintf fmt "(@[<2>AnnotatedAST.Call (@,";
945 ((((((__24 ()) fmt) a0;
946 Format.fprintf fmt ",@ ";
947 ((__25 ()) fmt) a1);
948 Format.fprintf fmt ",@ ";
949 ((fun x ->
950 Format.fprintf fmt "@[<2>[";
951 ignore
952 (List.fold_left
953 (fun sep ->
954 fun x ->
955 if sep then Format.fprintf fmt ";@ ";
956 ((__26 ()) fmt) x;
957 true) false x);
958 Format.fprintf fmt "@,]@]")) a2);
959 Format.fprintf fmt ",@ ";
960 ((fun x ->
961 Format.fprintf fmt "@[<2>[";
962 ignore
963 (List.fold_left
964 (fun sep ->
965 fun x ->
966 if sep then Format.fprintf fmt ";@ ";
967 ((__27 ()) fmt) x;
968 true) false x);
969 Format.fprintf fmt "@,]@]")) a3);
970 Format.fprintf fmt ",@ ";
971 ((fun x ->
972 Format.fprintf fmt "@[<2>[";
973 ignore
974 (List.fold_left
975 (fun sep ->
976 fun x ->
977 if sep then Format.fprintf fmt ";@ ";
978 ((__28 ()) fmt) x;
979 true) false x);
980 Format.fprintf fmt "@,]@]")) a4);
981 Format.fprintf fmt "@,))@]")
982 | Int a0 ->
983 (Format.fprintf fmt "(@[<2>AnnotatedAST.Int@ ";
984 ((__29 ()) fmt) a0;
985 Format.fprintf fmt "@])")
986 | Float a0 ->
987 (Format.fprintf fmt "(@[<2>AnnotatedAST.Float@ ";
988 ((__30 ()) fmt) a0;
989 Format.fprintf fmt "@])")
990 | String a0 ->
991 (Format.fprintf fmt "(@[<2>AnnotatedAST.String@ ";
992 ((__31 ()) fmt) a0;
993 Format.fprintf fmt "@])")
994 | String2 a0 ->
995 (Format.fprintf fmt "(@[<2>AnnotatedAST.String2@ ";
996 ((fun x ->
997 Format.fprintf fmt "@[<2>[";
998 ignore
999 (List.fold_left
1000 (fun sep ->
1001 fun x ->
1002 if sep then Format.fprintf fmt ";@ ";
1003 ((__32 ()) fmt) x;
1004 true) false x);
1005 Format.fprintf fmt "@,]@]")) a0;
1006 Format.fprintf fmt "@])")
1007 | Yield a0 ->
1008 (Format.fprintf fmt "(@[<2>AnnotatedAST.Yield@ ";
1009 ((__33 ()) fmt) a0;
1010 Format.fprintf fmt "@])")
1011 | Yield_break ->
1012 Format.pp_print_string fmt "AnnotatedAST.Yield_break"
1013 | Await a0 ->
1014 (Format.fprintf fmt "(@[<2>AnnotatedAST.Await@ ";
1015 ((__34 ()) fmt) a0;
1016 Format.fprintf fmt "@])")
1017 | Suspend a0 ->
1018 (Format.fprintf fmt "(@[<2>AnnotatedAST.Suspend@ ";
1019 ((__35 ()) fmt) a0;
1020 Format.fprintf fmt "@])")
1021 | List a0 ->
1022 (Format.fprintf fmt "(@[<2>AnnotatedAST.List@ ";
1023 ((fun x ->
1024 Format.fprintf fmt "@[<2>[";
1025 ignore
1026 (List.fold_left
1027 (fun sep ->
1028 fun x ->
1029 if sep then Format.fprintf fmt ";@ ";
1030 ((__36 ()) fmt) x;
1031 true) false x);
1032 Format.fprintf fmt "@,]@]")) a0;
1033 Format.fprintf fmt "@])")
1034 | Expr_list a0 ->
1035 (Format.fprintf fmt "(@[<2>AnnotatedAST.Expr_list@ ";
1036 ((fun x ->
1037 Format.fprintf fmt "@[<2>[";
1038 ignore
1039 (List.fold_left
1040 (fun sep ->
1041 fun x ->
1042 if sep then Format.fprintf fmt ";@ ";
1043 ((__37 ()) fmt) x;
1044 true) false x);
1045 Format.fprintf fmt "@,]@]")) a0;
1046 Format.fprintf fmt "@])")
1047 | Cast (a0,a1) ->
1048 (Format.fprintf fmt "(@[<2>AnnotatedAST.Cast (@,";
1049 (((__38 ()) fmt) a0;
1050 Format.fprintf fmt ",@ ";
1051 ((__39 ()) fmt) a1);
1052 Format.fprintf fmt "@,))@]")
1053 | Unop (a0,a1) ->
1054 (Format.fprintf fmt "(@[<2>AnnotatedAST.Unop (@,";
1055 (((__40 ()) fmt) a0;
1056 Format.fprintf fmt ",@ ";
1057 ((__41 ()) fmt) a1);
1058 Format.fprintf fmt "@,))@]")
1059 | Binop (a0,a1,a2) ->
1060 (Format.fprintf fmt "(@[<2>AnnotatedAST.Binop (@,";
1061 ((((__42 ()) fmt) a0;
1062 Format.fprintf fmt ",@ ";
1063 ((__43 ()) fmt) a1);
1064 Format.fprintf fmt ",@ ";
1065 ((__44 ()) fmt) a2);
1066 Format.fprintf fmt "@,))@]")
1067 | Pipe (a0,a1,a2) ->
1068 (Format.fprintf fmt "(@[<2>AnnotatedAST.Pipe (@,";
1069 ((((__45 ()) fmt) a0;
1070 Format.fprintf fmt ",@ ";
1071 ((__46 ()) fmt) a1);
1072 Format.fprintf fmt ",@ ";
1073 ((__47 ()) fmt) a2);
1074 Format.fprintf fmt "@,))@]")
1075 | Eif (a0,a1,a2) ->
1076 (Format.fprintf fmt "(@[<2>AnnotatedAST.Eif (@,";
1077 ((((__48 ()) fmt) a0;
1078 Format.fprintf fmt ",@ ";
1079 ((function
1080 | None -> Format.pp_print_string fmt "None"
1081 | Some x ->
1082 (Format.pp_print_string fmt "(Some ";
1083 ((__49 ()) fmt) x;
1084 Format.pp_print_string fmt ")"))) a1);
1085 Format.fprintf fmt ",@ ";
1086 ((__50 ()) fmt) a2);
1087 Format.fprintf fmt "@,))@]")
1088 | NullCoalesce (a0,a1) ->
1089 (Format.fprintf fmt "(@[<2>AnnotatedAST.NullCoalesce (@,";
1090 (((__51 ()) fmt) a0;
1091 Format.fprintf fmt ",@ ";
1092 ((__52 ()) fmt) a1);
1093 Format.fprintf fmt "@,))@]")
1094 | InstanceOf (a0,a1) ->
1095 (Format.fprintf fmt "(@[<2>AnnotatedAST.InstanceOf (@,";
1096 (((__53 ()) fmt) a0;
1097 Format.fprintf fmt ",@ ";
1098 ((__54 ()) fmt) a1);
1099 Format.fprintf fmt "@,))@]")
1100 | Is (a0,a1) ->
1101 (Format.fprintf fmt "(@[<2>AnnotatedAST.Is (@,";
1102 (((__55 ()) fmt) a0;
1103 Format.fprintf fmt ",@ ";
1104 ((__56 ()) fmt) a1);
1105 Format.fprintf fmt "@,))@]")
1106 | New (a0,a1,a2) ->
1107 (Format.fprintf fmt "(@[<2>AnnotatedAST.New (@,";
1108 ((((__57 ()) fmt) a0;
1109 Format.fprintf fmt ",@ ";
1110 ((fun x ->
1111 Format.fprintf fmt "@[<2>[";
1112 ignore
1113 (List.fold_left
1114 (fun sep ->
1115 fun x ->
1116 if sep then Format.fprintf fmt ";@ ";
1117 ((__58 ()) fmt) x;
1118 true) false x);
1119 Format.fprintf fmt "@,]@]")) a1);
1120 Format.fprintf fmt ",@ ";
1121 ((fun x ->
1122 Format.fprintf fmt "@[<2>[";
1123 ignore
1124 (List.fold_left
1125 (fun sep ->
1126 fun x ->
1127 if sep then Format.fprintf fmt ";@ ";
1128 ((__59 ()) fmt) x;
1129 true) false x);
1130 Format.fprintf fmt "@,]@]")) a2);
1131 Format.fprintf fmt "@,))@]")
1132 | Efun (a0,a1) ->
1133 (Format.fprintf fmt "(@[<2>AnnotatedAST.Efun (@,";
1134 (((__60 ()) fmt) a0;
1135 Format.fprintf fmt ",@ ";
1136 ((fun x ->
1137 Format.fprintf fmt "@[<2>[";
1138 ignore
1139 (List.fold_left
1140 (fun sep ->
1141 fun x ->
1142 if sep then Format.fprintf fmt ";@ ";
1143 ((__61 ()) fmt) x;
1144 true) false x);
1145 Format.fprintf fmt "@,]@]")) a1);
1146 Format.fprintf fmt "@,))@]")
1147 | Xml (a0,a1,a2) ->
1148 (Format.fprintf fmt "(@[<2>AnnotatedAST.Xml (@,";
1149 ((((__62 ()) fmt) a0;
1150 Format.fprintf fmt ",@ ";
1151 ((fun x ->
1152 Format.fprintf fmt "@[<2>[";
1153 ignore
1154 (List.fold_left
1155 (fun sep ->
1156 fun x ->
1157 if sep then Format.fprintf fmt ";@ ";
1158 ((__63 ()) fmt) x;
1159 true) false x);
1160 Format.fprintf fmt "@,]@]")) a1);
1161 Format.fprintf fmt ",@ ";
1162 ((fun x ->
1163 Format.fprintf fmt "@[<2>[";
1164 ignore
1165 (List.fold_left
1166 (fun sep ->
1167 fun x ->
1168 if sep then Format.fprintf fmt ";@ ";
1169 ((__64 ()) fmt) x;
1170 true) false x);
1171 Format.fprintf fmt "@,]@]")) a2);
1172 Format.fprintf fmt "@,))@]")
1173 | Callconv (a0,a1) ->
1174 (Format.fprintf fmt "(@[<2>AnnotatedAST.Callconv (@,";
1175 (((__65 ()) fmt) a0;
1176 Format.fprintf fmt ",@ ";
1177 ((__66 ()) fmt) a1);
1178 Format.fprintf fmt "@,))@]")
1179 | Lplaceholder a0 ->
1180 (Format.fprintf fmt "(@[<2>AnnotatedAST.Lplaceholder@ ";
1181 ((__67 ()) fmt) a0;
1182 Format.fprintf fmt "@])")
1183 | Fun_id a0 ->
1184 (Format.fprintf fmt "(@[<2>AnnotatedAST.Fun_id@ ";
1185 ((__68 ()) fmt) a0;
1186 Format.fprintf fmt "@])")
1187 | Method_id (a0,a1) ->
1188 (Format.fprintf fmt "(@[<2>AnnotatedAST.Method_id (@,";
1189 (((__69 ()) fmt) a0;
1190 Format.fprintf fmt ",@ ";
1191 ((__70 ()) fmt) a1);
1192 Format.fprintf fmt "@,))@]")
1193 | Method_caller (a0,a1) ->
1194 (Format.fprintf fmt "(@[<2>AnnotatedAST.Method_caller (@,";
1195 (((__71 ()) fmt) a0;
1196 Format.fprintf fmt ",@ ";
1197 ((__72 ()) fmt) a1);
1198 Format.fprintf fmt "@,))@]")
1199 | Smethod_id (a0,a1) ->
1200 (Format.fprintf fmt "(@[<2>AnnotatedAST.Smethod_id (@,";
1201 (((__73 ()) fmt) a0;
1202 Format.fprintf fmt ",@ ";
1203 ((__74 ()) fmt) a1);
1204 Format.fprintf fmt "@,))@]")
1205 | Special_func a0 ->
1206 (Format.fprintf fmt "(@[<2>AnnotatedAST.Special_func@ ";
1207 ((__75 ()) fmt) a0;
1208 Format.fprintf fmt "@])")
1209 | Pair (a0,a1) ->
1210 (Format.fprintf fmt "(@[<2>AnnotatedAST.Pair (@,";
1211 (((__76 ()) fmt) a0;
1212 Format.fprintf fmt ",@ ";
1213 ((__77 ()) fmt) a1);
1214 Format.fprintf fmt "@,))@]")
1215 | Assert a0 ->
1216 (Format.fprintf fmt "(@[<2>AnnotatedAST.Assert@ ";
1217 ((__78 ()) fmt) a0;
1218 Format.fprintf fmt "@])")
1219 | Typename a0 ->
1220 (Format.fprintf fmt "(@[<2>AnnotatedAST.Typename@ ";
1221 ((__79 ()) fmt) a0;
1222 Format.fprintf fmt "@])")
1223 | Any -> Format.pp_print_string fmt "AnnotatedAST.Any")
1224 [@ocaml.warning "-A"])
1226 and show_expr_ : expr_ -> Ppx_deriving_runtime.string =
1227 fun x -> Format.asprintf "%a" pp_expr_ x
1229 and pp_assert_expr :
1230 Format.formatter -> assert_expr -> Ppx_deriving_runtime.unit =
1231 let __0 () = pp_expr in
1232 ((let open! Ppx_deriving_runtime in
1233 fun fmt ->
1234 function
1235 | AE_assert a0 ->
1236 (Format.fprintf fmt "(@[<2>AnnotatedAST.AE_assert@ ";
1237 ((__0 ()) fmt) a0;
1238 Format.fprintf fmt "@])"))
1239 [@ocaml.warning "-A"])
1241 and show_assert_expr : assert_expr -> Ppx_deriving_runtime.string =
1242 fun x -> Format.asprintf "%a" pp_assert_expr x
1244 and pp_case : Format.formatter -> case -> Ppx_deriving_runtime.unit =
1245 let __2 () = pp_block
1247 and __1 () = pp_expr
1249 and __0 () = pp_block
1251 ((let open! Ppx_deriving_runtime in
1252 fun fmt ->
1253 function
1254 | Default a0 ->
1255 (Format.fprintf fmt "(@[<2>AnnotatedAST.Default@ ";
1256 ((__0 ()) fmt) a0;
1257 Format.fprintf fmt "@])")
1258 | Case (a0,a1) ->
1259 (Format.fprintf fmt "(@[<2>AnnotatedAST.Case (@,";
1260 (((__1 ()) fmt) a0;
1261 Format.fprintf fmt ",@ ";
1262 ((__2 ()) fmt) a1);
1263 Format.fprintf fmt "@,))@]"))
1264 [@ocaml.warning "-A"])
1266 and show_case : case -> Ppx_deriving_runtime.string =
1267 fun x -> Format.asprintf "%a" pp_case x
1269 and pp_catch : Format.formatter -> catch -> Ppx_deriving_runtime.unit =
1270 let __2 () = pp_block
1272 and __1 () = pp_lid
1274 and __0 () = pp_sid
1276 ((let open! Ppx_deriving_runtime in
1277 fun fmt ->
1278 fun (a0,a1,a2) ->
1279 Format.fprintf fmt "(@[";
1280 ((((__0 ()) fmt) a0;
1281 Format.fprintf fmt ",@ ";
1282 ((__1 ()) fmt) a1);
1283 Format.fprintf fmt ",@ ";
1284 ((__2 ()) fmt) a2);
1285 Format.fprintf fmt "@])")
1286 [@ocaml.warning "-A"])
1288 and show_catch : catch -> Ppx_deriving_runtime.string =
1289 fun x -> Format.asprintf "%a" pp_catch x
1291 and pp_field : Format.formatter -> field -> Ppx_deriving_runtime.unit =
1292 let __1 () = pp_expr
1294 and __0 () = pp_expr
1296 ((let open! Ppx_deriving_runtime in
1297 fun fmt ->
1298 fun (a0,a1) ->
1299 Format.fprintf fmt "(@[";
1300 (((__0 ()) fmt) a0; Format.fprintf fmt ",@ "; ((__1 ()) fmt) a1);
1301 Format.fprintf fmt "@])")
1302 [@ocaml.warning "-A"])
1304 and show_field : field -> Ppx_deriving_runtime.string =
1305 fun x -> Format.asprintf "%a" pp_field x
1307 and pp_afield : Format.formatter -> afield -> Ppx_deriving_runtime.unit =
1308 let __2 () = pp_expr
1310 and __1 () = pp_expr
1312 and __0 () = pp_expr
1314 ((let open! Ppx_deriving_runtime in
1315 fun fmt ->
1316 function
1317 | AFvalue a0 ->
1318 (Format.fprintf fmt "(@[<2>AnnotatedAST.AFvalue@ ";
1319 ((__0 ()) fmt) a0;
1320 Format.fprintf fmt "@])")
1321 | AFkvalue (a0,a1) ->
1322 (Format.fprintf fmt "(@[<2>AnnotatedAST.AFkvalue (@,";
1323 (((__1 ()) fmt) a0;
1324 Format.fprintf fmt ",@ ";
1325 ((__2 ()) fmt) a1);
1326 Format.fprintf fmt "@,))@]"))
1327 [@ocaml.warning "-A"])
1329 and show_afield : afield -> Ppx_deriving_runtime.string =
1330 fun x -> Format.asprintf "%a" pp_afield x
1332 and pp_xhp_attribute :
1333 Format.formatter -> xhp_attribute -> Ppx_deriving_runtime.unit =
1334 let __2 () = pp_expr
1336 and __1 () = pp_expr
1338 and __0 () = pp_pstring
1340 ((let open! Ppx_deriving_runtime in
1341 fun fmt ->
1342 function
1343 | Xhp_simple (a0,a1) ->
1344 (Format.fprintf fmt "(@[<2>AnnotatedAST.Xhp_simple (@,";
1345 (((__0 ()) fmt) a0;
1346 Format.fprintf fmt ",@ ";
1347 ((__1 ()) fmt) a1);
1348 Format.fprintf fmt "@,))@]")
1349 | Xhp_spread a0 ->
1350 (Format.fprintf fmt "(@[<2>AnnotatedAST.Xhp_spread@ ";
1351 ((__2 ()) fmt) a0;
1352 Format.fprintf fmt "@])"))
1353 [@ocaml.warning "-A"])
1355 and show_xhp_attribute : xhp_attribute -> Ppx_deriving_runtime.string =
1356 fun x -> Format.asprintf "%a" pp_xhp_attribute x
1358 and pp_special_func :
1359 Format.formatter -> special_func -> Ppx_deriving_runtime.unit =
1360 let __2 () = pp_expr
1362 and __1 () = pp_expr
1364 and __0 () = pp_expr
1366 ((let open! Ppx_deriving_runtime in
1367 fun fmt ->
1368 function
1369 | Gena a0 ->
1370 (Format.fprintf fmt "(@[<2>AnnotatedAST.Gena@ ";
1371 ((__0 ()) fmt) a0;
1372 Format.fprintf fmt "@])")
1373 | Genva a0 ->
1374 (Format.fprintf fmt "(@[<2>AnnotatedAST.Genva@ ";
1375 ((fun x ->
1376 Format.fprintf fmt "@[<2>[";
1377 ignore
1378 (List.fold_left
1379 (fun sep ->
1380 fun x ->
1381 if sep then Format.fprintf fmt ";@ ";
1382 ((__1 ()) fmt) x;
1383 true) false x);
1384 Format.fprintf fmt "@,]@]")) a0;
1385 Format.fprintf fmt "@])")
1386 | Gen_array_rec a0 ->
1387 (Format.fprintf fmt "(@[<2>AnnotatedAST.Gen_array_rec@ ";
1388 ((__2 ()) fmt) a0;
1389 Format.fprintf fmt "@])"))
1390 [@ocaml.warning "-A"])
1392 and show_special_func : special_func -> Ppx_deriving_runtime.string =
1393 fun x -> Format.asprintf "%a" pp_special_func x
1395 and (pp_is_reference :
1396 Format.formatter -> is_reference -> Ppx_deriving_runtime.unit)
1398 ((let open! Ppx_deriving_runtime in fun fmt -> Format.fprintf fmt "%B")
1399 [@ocaml.warning "-A"])
1401 and show_is_reference : is_reference -> Ppx_deriving_runtime.string =
1402 fun x -> Format.asprintf "%a" pp_is_reference x
1404 and (pp_is_variadic :
1405 Format.formatter -> is_variadic -> Ppx_deriving_runtime.unit)
1407 ((let open! Ppx_deriving_runtime in fun fmt -> Format.fprintf fmt "%B")
1408 [@ocaml.warning "-A"])
1410 and show_is_variadic : is_variadic -> Ppx_deriving_runtime.string =
1411 fun x -> Format.asprintf "%a" pp_is_variadic x
1413 and pp_fun_param :
1414 Format.formatter -> fun_param -> Ppx_deriving_runtime.unit =
1415 let __6 () = pp_user_attribute
1417 and __5 () = Ast.pp_param_kind
1419 and __4 () = pp_expr
1421 and __3 () = pp_pos
1423 and __2 () = pp_is_variadic
1425 and __1 () = pp_is_reference
1427 and __0 () = pp_hint
1429 ((let open! Ppx_deriving_runtime in
1430 fun fmt ->
1431 fun x ->
1432 Format.fprintf fmt "@[<2>{ ";
1433 ((((((((Format.fprintf fmt "@[%s =@ " "AnnotatedAST.param_hint";
1434 ((function
1435 | None -> Format.pp_print_string fmt "None"
1436 | Some x ->
1437 (Format.pp_print_string fmt "(Some ";
1438 ((__0 ()) fmt) x;
1439 Format.pp_print_string fmt ")"))) x.param_hint;
1440 Format.fprintf fmt "@]");
1441 Format.fprintf fmt ";@ ";
1442 Format.fprintf fmt "@[%s =@ " "param_is_reference";
1443 ((__1 ()) fmt) x.param_is_reference;
1444 Format.fprintf fmt "@]");
1445 Format.fprintf fmt ";@ ";
1446 Format.fprintf fmt "@[%s =@ " "param_is_variadic";
1447 ((__2 ()) fmt) x.param_is_variadic;
1448 Format.fprintf fmt "@]");
1449 Format.fprintf fmt ";@ ";
1450 Format.fprintf fmt "@[%s =@ " "param_pos";
1451 ((__3 ()) fmt) x.param_pos;
1452 Format.fprintf fmt "@]");
1453 Format.fprintf fmt ";@ ";
1454 Format.fprintf fmt "@[%s =@ " "param_name";
1455 (Format.fprintf fmt "%S") x.param_name;
1456 Format.fprintf fmt "@]");
1457 Format.fprintf fmt ";@ ";
1458 Format.fprintf fmt "@[%s =@ " "param_expr";
1459 ((function
1460 | None -> Format.pp_print_string fmt "None"
1461 | Some x ->
1462 (Format.pp_print_string fmt "(Some ";
1463 ((__4 ()) fmt) x;
1464 Format.pp_print_string fmt ")"))) x.param_expr;
1465 Format.fprintf fmt "@]");
1466 Format.fprintf fmt ";@ ";
1467 Format.fprintf fmt "@[%s =@ " "param_callconv";
1468 ((function
1469 | None -> Format.pp_print_string fmt "None"
1470 | Some x ->
1471 (Format.pp_print_string fmt "(Some ";
1472 ((__5 ()) fmt) x;
1473 Format.pp_print_string fmt ")"))) x.param_callconv;
1474 Format.fprintf fmt "@]");
1475 Format.fprintf fmt ";@ ";
1476 Format.fprintf fmt "@[%s =@ " "param_user_attributes";
1477 ((fun x ->
1478 Format.fprintf fmt "@[<2>[";
1479 ignore
1480 (List.fold_left
1481 (fun sep ->
1482 fun x ->
1483 if sep then Format.fprintf fmt ";@ ";
1484 ((__6 ()) fmt) x;
1485 true) false x);
1486 Format.fprintf fmt "@,]@]")) x.param_user_attributes;
1487 Format.fprintf fmt "@]");
1488 Format.fprintf fmt "@ }@]")
1489 [@ocaml.warning "-A"])
1491 and show_fun_param : fun_param -> Ppx_deriving_runtime.string =
1492 fun x -> Format.asprintf "%a" pp_fun_param x
1494 and pp_fun_variadicity :
1495 Format.formatter -> fun_variadicity -> Ppx_deriving_runtime.unit =
1496 let __0 () = pp_fun_param in
1497 ((let open! Ppx_deriving_runtime in
1498 fun fmt ->
1499 function
1500 | FVvariadicArg a0 ->
1501 (Format.fprintf fmt "(@[<2>AnnotatedAST.FVvariadicArg@ ";
1502 ((__0 ()) fmt) a0;
1503 Format.fprintf fmt "@])")
1504 | FVellipsis ->
1505 Format.pp_print_string fmt "AnnotatedAST.FVellipsis"
1506 | FVnonVariadic ->
1507 Format.pp_print_string fmt "AnnotatedAST.FVnonVariadic")
1508 [@ocaml.warning "-A"])
1510 and show_fun_variadicity : fun_variadicity -> Ppx_deriving_runtime.string
1511 = fun x -> Format.asprintf "%a" pp_fun_variadicity x
1513 and pp_fun_ : Format.formatter -> fun_ -> Ppx_deriving_runtime.unit =
1514 let __9 () = pp_user_attribute
1516 and __8 () = Ast.pp_fun_kind
1518 and __7 () = pp_func_body
1520 and __6 () = pp_fun_param
1522 and __5 () = pp_fun_variadicity
1524 and __4 () = pp_where_constraint
1526 and __3 () = pp_tparam
1528 and __2 () = pp_sid
1530 and __1 () = pp_hint
1532 and __0 () = pp_env_annotation
1534 ((let open! Ppx_deriving_runtime in
1535 fun fmt ->
1536 fun x ->
1537 Format.fprintf fmt "@[<2>{ ";
1538 ((((((((((((Format.fprintf fmt "@[%s =@ "
1539 "AnnotatedAST.f_annotation";
1540 ((__0 ()) fmt) x.f_annotation;
1541 Format.fprintf fmt "@]");
1542 Format.fprintf fmt ";@ ";
1543 Format.fprintf fmt "@[%s =@ " "f_mode";
1544 ((fun _ -> Format.pp_print_string fmt "<opaque>"))
1545 x.f_mode;
1546 Format.fprintf fmt "@]");
1547 Format.fprintf fmt ";@ ";
1548 Format.fprintf fmt "@[%s =@ " "f_ret";
1549 ((function
1550 | None -> Format.pp_print_string fmt "None"
1551 | Some x ->
1552 (Format.pp_print_string fmt "(Some ";
1553 ((__1 ()) fmt) x;
1554 Format.pp_print_string fmt ")"))) x.f_ret;
1555 Format.fprintf fmt "@]");
1556 Format.fprintf fmt ";@ ";
1557 Format.fprintf fmt "@[%s =@ " "f_name";
1558 ((__2 ()) fmt) x.f_name;
1559 Format.fprintf fmt "@]");
1560 Format.fprintf fmt ";@ ";
1561 Format.fprintf fmt "@[%s =@ " "f_tparams";
1562 ((fun x ->
1563 Format.fprintf fmt "@[<2>[";
1564 ignore
1565 (List.fold_left
1566 (fun sep ->
1567 fun x ->
1568 if sep then Format.fprintf fmt ";@ ";
1569 ((__3 ()) fmt) x;
1570 true) false x);
1571 Format.fprintf fmt "@,]@]")) x.f_tparams;
1572 Format.fprintf fmt "@]");
1573 Format.fprintf fmt ";@ ";
1574 Format.fprintf fmt "@[%s =@ " "f_where_constraints";
1575 ((fun x ->
1576 Format.fprintf fmt "@[<2>[";
1577 ignore
1578 (List.fold_left
1579 (fun sep ->
1580 fun x ->
1581 if sep then Format.fprintf fmt ";@ ";
1582 ((__4 ()) fmt) x;
1583 true) false x);
1584 Format.fprintf fmt "@,]@]")) x.f_where_constraints;
1585 Format.fprintf fmt "@]");
1586 Format.fprintf fmt ";@ ";
1587 Format.fprintf fmt "@[%s =@ " "f_variadic";
1588 ((__5 ()) fmt) x.f_variadic;
1589 Format.fprintf fmt "@]");
1590 Format.fprintf fmt ";@ ";
1591 Format.fprintf fmt "@[%s =@ " "f_params";
1592 ((fun x ->
1593 Format.fprintf fmt "@[<2>[";
1594 ignore
1595 (List.fold_left
1596 (fun sep ->
1597 fun x ->
1598 if sep then Format.fprintf fmt ";@ ";
1599 ((__6 ()) fmt) x;
1600 true) false x);
1601 Format.fprintf fmt "@,]@]")) x.f_params;
1602 Format.fprintf fmt "@]");
1603 Format.fprintf fmt ";@ ";
1604 Format.fprintf fmt "@[%s =@ " "f_body";
1605 ((__7 ()) fmt) x.f_body;
1606 Format.fprintf fmt "@]");
1607 Format.fprintf fmt ";@ ";
1608 Format.fprintf fmt "@[%s =@ " "f_fun_kind";
1609 ((__8 ()) fmt) x.f_fun_kind;
1610 Format.fprintf fmt "@]");
1611 Format.fprintf fmt ";@ ";
1612 Format.fprintf fmt "@[%s =@ " "f_user_attributes";
1613 ((fun x ->
1614 Format.fprintf fmt "@[<2>[";
1615 ignore
1616 (List.fold_left
1617 (fun sep ->
1618 fun x ->
1619 if sep then Format.fprintf fmt ";@ ";
1620 ((__9 ()) fmt) x;
1621 true) false x);
1622 Format.fprintf fmt "@,]@]")) x.f_user_attributes;
1623 Format.fprintf fmt "@]");
1624 Format.fprintf fmt ";@ ";
1625 Format.fprintf fmt "@[%s =@ " "f_ret_by_ref";
1626 (Format.fprintf fmt "%B") x.f_ret_by_ref;
1627 Format.fprintf fmt "@]");
1628 Format.fprintf fmt "@ }@]")
1629 [@ocaml.warning "-A"])
1631 and show_fun_ : fun_ -> Ppx_deriving_runtime.string =
1632 fun x -> Format.asprintf "%a" pp_fun_ x
1634 and pp_func_body :
1635 Format.formatter -> func_body -> Ppx_deriving_runtime.unit =
1636 let __1 () = pp_func_named_body
1638 and __0 () = pp_func_unnamed_body
1640 ((let open! Ppx_deriving_runtime in
1641 fun fmt ->
1642 function
1643 | UnnamedBody a0 ->
1644 (Format.fprintf fmt "(@[<2>AnnotatedAST.UnnamedBody@ ";
1645 ((__0 ()) fmt) a0;
1646 Format.fprintf fmt "@])")
1647 | NamedBody a0 ->
1648 (Format.fprintf fmt "(@[<2>AnnotatedAST.NamedBody@ ";
1649 ((__1 ()) fmt) a0;
1650 Format.fprintf fmt "@])"))
1651 [@ocaml.warning "-A"])
1653 and show_func_body : func_body -> Ppx_deriving_runtime.string =
1654 fun x -> Format.asprintf "%a" pp_func_body x
1656 and (pp_func_unnamed_body :
1657 Format.formatter -> func_unnamed_body -> Ppx_deriving_runtime.unit)
1659 ((let open! Ppx_deriving_runtime in
1660 fun fmt ->
1661 fun x ->
1662 Format.fprintf fmt "@[<2>{ ";
1663 (((Format.fprintf fmt "@[%s =@ " "AnnotatedAST.fub_ast";
1664 ((fun _ -> Format.pp_print_string fmt "<opaque>"))
1665 x.fub_ast;
1666 Format.fprintf fmt "@]");
1667 Format.fprintf fmt ";@ ";
1668 Format.fprintf fmt "@[%s =@ " "fub_tparams";
1669 ((fun _ -> Format.pp_print_string fmt "<opaque>"))
1670 x.fub_tparams;
1671 Format.fprintf fmt "@]");
1672 Format.fprintf fmt ";@ ";
1673 Format.fprintf fmt "@[%s =@ " "fub_namespace";
1674 ((fun _ -> Format.pp_print_string fmt "<opaque>"))
1675 x.fub_namespace;
1676 Format.fprintf fmt "@]");
1677 Format.fprintf fmt "@ }@]")
1678 [@ocaml.warning "-A"])
1680 and show_func_unnamed_body :
1681 func_unnamed_body -> Ppx_deriving_runtime.string =
1682 fun x -> Format.asprintf "%a" pp_func_unnamed_body x
1684 and pp_func_named_body :
1685 Format.formatter -> func_named_body -> Ppx_deriving_runtime.unit =
1686 let __0 () = pp_block in
1687 ((let open! Ppx_deriving_runtime in
1688 fun fmt ->
1689 fun x ->
1690 Format.fprintf fmt "@[<2>{ ";
1691 ((Format.fprintf fmt "@[%s =@ " "AnnotatedAST.fnb_nast";
1692 ((__0 ()) fmt) x.fnb_nast;
1693 Format.fprintf fmt "@]");
1694 Format.fprintf fmt ";@ ";
1695 Format.fprintf fmt "@[%s =@ " "fnb_unsafe";
1696 (Format.fprintf fmt "%B") x.fnb_unsafe;
1697 Format.fprintf fmt "@]");
1698 Format.fprintf fmt "@ }@]")
1699 [@ocaml.warning "-A"])
1701 and show_func_named_body : func_named_body -> Ppx_deriving_runtime.string
1702 = fun x -> Format.asprintf "%a" pp_func_named_body x
1704 and pp_user_attribute :
1705 Format.formatter -> user_attribute -> Ppx_deriving_runtime.unit =
1706 let __1 () = pp_expr
1708 and __0 () = pp_sid
1710 ((let open! Ppx_deriving_runtime in
1711 fun fmt ->
1712 fun x ->
1713 Format.fprintf fmt "@[<2>{ ";
1714 ((Format.fprintf fmt "@[%s =@ " "AnnotatedAST.ua_name";
1715 ((__0 ()) fmt) x.ua_name;
1716 Format.fprintf fmt "@]");
1717 Format.fprintf fmt ";@ ";
1718 Format.fprintf fmt "@[%s =@ " "ua_params";
1719 ((fun x ->
1720 Format.fprintf fmt "@[<2>[";
1721 ignore
1722 (List.fold_left
1723 (fun sep ->
1724 fun x ->
1725 if sep then Format.fprintf fmt ";@ ";
1726 ((__1 ()) fmt) x;
1727 true) false x);
1728 Format.fprintf fmt "@,]@]")) x.ua_params;
1729 Format.fprintf fmt "@]");
1730 Format.fprintf fmt "@ }@]")
1731 [@ocaml.warning "-A"])
1733 and show_user_attribute : user_attribute -> Ppx_deriving_runtime.string =
1734 fun x -> Format.asprintf "%a" pp_user_attribute x
1736 and pp_class_ : Format.formatter -> class_ -> Ppx_deriving_runtime.unit =
1737 let __18 () = pp_enum_
1739 and __17 () = pp_user_attribute
1741 and __16 () = pp_method_
1743 and __15 () = pp_method_
1745 and __14 () = pp_method_
1747 and __13 () = pp_class_var
1749 and __12 () = pp_class_var
1751 and __11 () = pp_class_typeconst
1753 and __10 () = pp_class_const
1755 and __9 () = pp_hint
1757 and __8 () = pp_hint
1759 and __7 () = pp_hint
1761 and __6 () = pp_pstring
1763 and __5 () = pp_hint
1765 and __4 () = pp_hint
1767 and __3 () = pp_hint
1769 and __2 () = pp_sid
1771 and __1 () = Ast.pp_class_kind
1773 and __0 () = pp_env_annotation
1775 ((let open! Ppx_deriving_runtime in
1776 fun fmt ->
1777 fun x ->
1778 Format.fprintf fmt "@[<2>{ ";
1779 (((((((((((((((((((((((Format.fprintf fmt "@[%s =@ "
1780 "AnnotatedAST.c_annotation";
1781 ((__0 ()) fmt) x.c_annotation;
1782 Format.fprintf fmt "@]");
1783 Format.fprintf fmt ";@ ";
1784 Format.fprintf fmt "@[%s =@ " "c_mode";
1785 ((fun _ ->
1786 Format.pp_print_string fmt "<opaque>"))
1787 x.c_mode;
1788 Format.fprintf fmt "@]");
1789 Format.fprintf fmt ";@ ";
1790 Format.fprintf fmt "@[%s =@ " "c_final";
1791 (Format.fprintf fmt "%B") x.c_final;
1792 Format.fprintf fmt "@]");
1793 Format.fprintf fmt ";@ ";
1794 Format.fprintf fmt "@[%s =@ " "c_is_xhp";
1795 (Format.fprintf fmt "%B") x.c_is_xhp;
1796 Format.fprintf fmt "@]");
1797 Format.fprintf fmt ";@ ";
1798 Format.fprintf fmt "@[%s =@ " "c_kind";
1799 ((__1 ()) fmt) x.c_kind;
1800 Format.fprintf fmt "@]");
1801 Format.fprintf fmt ";@ ";
1802 Format.fprintf fmt "@[%s =@ " "c_name";
1803 ((__2 ()) fmt) x.c_name;
1804 Format.fprintf fmt "@]");
1805 Format.fprintf fmt ";@ ";
1806 Format.fprintf fmt "@[%s =@ " "c_tparams";
1807 ((fun _ ->
1808 Format.pp_print_string fmt "<opaque>"))
1809 x.c_tparams;
1810 Format.fprintf fmt "@]");
1811 Format.fprintf fmt ";@ ";
1812 Format.fprintf fmt "@[%s =@ " "c_extends";
1813 ((fun x ->
1814 Format.fprintf fmt "@[<2>[";
1815 ignore
1816 (List.fold_left
1817 (fun sep ->
1818 fun x ->
1819 if sep
1820 then Format.fprintf fmt ";@ ";
1821 ((__3 ()) fmt) x;
1822 true) false x);
1823 Format.fprintf fmt "@,]@]")) x.c_extends;
1824 Format.fprintf fmt "@]");
1825 Format.fprintf fmt ";@ ";
1826 Format.fprintf fmt "@[%s =@ " "c_uses";
1827 ((fun x ->
1828 Format.fprintf fmt "@[<2>[";
1829 ignore
1830 (List.fold_left
1831 (fun sep ->
1832 fun x ->
1833 if sep
1834 then Format.fprintf fmt ";@ ";
1835 ((__4 ()) fmt) x;
1836 true) false x);
1837 Format.fprintf fmt "@,]@]")) x.c_uses;
1838 Format.fprintf fmt "@]");
1839 Format.fprintf fmt ";@ ";
1840 Format.fprintf fmt "@[%s =@ " "c_xhp_attr_uses";
1841 ((fun x ->
1842 Format.fprintf fmt "@[<2>[";
1843 ignore
1844 (List.fold_left
1845 (fun sep ->
1846 fun x ->
1847 if sep
1848 then Format.fprintf fmt ";@ ";
1849 ((__5 ()) fmt) x;
1850 true) false x);
1851 Format.fprintf fmt "@,]@]"))
1852 x.c_xhp_attr_uses;
1853 Format.fprintf fmt "@]");
1854 Format.fprintf fmt ";@ ";
1855 Format.fprintf fmt "@[%s =@ " "c_xhp_category";
1856 ((fun x ->
1857 Format.fprintf fmt "@[<2>[";
1858 ignore
1859 (List.fold_left
1860 (fun sep ->
1861 fun x ->
1862 if sep then Format.fprintf fmt ";@ ";
1863 ((__6 ()) fmt) x;
1864 true) false x);
1865 Format.fprintf fmt "@,]@]")) x.c_xhp_category;
1866 Format.fprintf fmt "@]");
1867 Format.fprintf fmt ";@ ";
1868 Format.fprintf fmt "@[%s =@ " "c_req_extends";
1869 ((fun x ->
1870 Format.fprintf fmt "@[<2>[";
1871 ignore
1872 (List.fold_left
1873 (fun sep ->
1874 fun x ->
1875 if sep then Format.fprintf fmt ";@ ";
1876 ((__7 ()) fmt) x;
1877 true) false x);
1878 Format.fprintf fmt "@,]@]")) x.c_req_extends;
1879 Format.fprintf fmt "@]");
1880 Format.fprintf fmt ";@ ";
1881 Format.fprintf fmt "@[%s =@ " "c_req_implements";
1882 ((fun x ->
1883 Format.fprintf fmt "@[<2>[";
1884 ignore
1885 (List.fold_left
1886 (fun sep ->
1887 fun x ->
1888 if sep then Format.fprintf fmt ";@ ";
1889 ((__8 ()) fmt) x;
1890 true) false x);
1891 Format.fprintf fmt "@,]@]")) x.c_req_implements;
1892 Format.fprintf fmt "@]");
1893 Format.fprintf fmt ";@ ";
1894 Format.fprintf fmt "@[%s =@ " "c_implements";
1895 ((fun x ->
1896 Format.fprintf fmt "@[<2>[";
1897 ignore
1898 (List.fold_left
1899 (fun sep ->
1900 fun x ->
1901 if sep then Format.fprintf fmt ";@ ";
1902 ((__9 ()) fmt) x;
1903 true) false x);
1904 Format.fprintf fmt "@,]@]")) x.c_implements;
1905 Format.fprintf fmt "@]");
1906 Format.fprintf fmt ";@ ";
1907 Format.fprintf fmt "@[%s =@ " "c_consts";
1908 ((fun x ->
1909 Format.fprintf fmt "@[<2>[";
1910 ignore
1911 (List.fold_left
1912 (fun sep ->
1913 fun x ->
1914 if sep then Format.fprintf fmt ";@ ";
1915 ((__10 ()) fmt) x;
1916 true) false x);
1917 Format.fprintf fmt "@,]@]")) x.c_consts;
1918 Format.fprintf fmt "@]");
1919 Format.fprintf fmt ";@ ";
1920 Format.fprintf fmt "@[%s =@ " "c_typeconsts";
1921 ((fun x ->
1922 Format.fprintf fmt "@[<2>[";
1923 ignore
1924 (List.fold_left
1925 (fun sep ->
1926 fun x ->
1927 if sep then Format.fprintf fmt ";@ ";
1928 ((__11 ()) fmt) x;
1929 true) false x);
1930 Format.fprintf fmt "@,]@]")) x.c_typeconsts;
1931 Format.fprintf fmt "@]");
1932 Format.fprintf fmt ";@ ";
1933 Format.fprintf fmt "@[%s =@ " "c_static_vars";
1934 ((fun x ->
1935 Format.fprintf fmt "@[<2>[";
1936 ignore
1937 (List.fold_left
1938 (fun sep ->
1939 fun x ->
1940 if sep then Format.fprintf fmt ";@ ";
1941 ((__12 ()) fmt) x;
1942 true) false x);
1943 Format.fprintf fmt "@,]@]")) x.c_static_vars;
1944 Format.fprintf fmt "@]");
1945 Format.fprintf fmt ";@ ";
1946 Format.fprintf fmt "@[%s =@ " "c_vars";
1947 ((fun x ->
1948 Format.fprintf fmt "@[<2>[";
1949 ignore
1950 (List.fold_left
1951 (fun sep ->
1952 fun x ->
1953 if sep then Format.fprintf fmt ";@ ";
1954 ((__13 ()) fmt) x;
1955 true) false x);
1956 Format.fprintf fmt "@,]@]")) x.c_vars;
1957 Format.fprintf fmt "@]");
1958 Format.fprintf fmt ";@ ";
1959 Format.fprintf fmt "@[%s =@ " "c_constructor";
1960 ((function
1961 | None -> Format.pp_print_string fmt "None"
1962 | Some x ->
1963 (Format.pp_print_string fmt "(Some ";
1964 ((__14 ()) fmt) x;
1965 Format.pp_print_string fmt ")"))) x.c_constructor;
1966 Format.fprintf fmt "@]");
1967 Format.fprintf fmt ";@ ";
1968 Format.fprintf fmt "@[%s =@ " "c_static_methods";
1969 ((fun x ->
1970 Format.fprintf fmt "@[<2>[";
1971 ignore
1972 (List.fold_left
1973 (fun sep ->
1974 fun x ->
1975 if sep then Format.fprintf fmt ";@ ";
1976 ((__15 ()) fmt) x;
1977 true) false x);
1978 Format.fprintf fmt "@,]@]")) x.c_static_methods;
1979 Format.fprintf fmt "@]");
1980 Format.fprintf fmt ";@ ";
1981 Format.fprintf fmt "@[%s =@ " "c_methods";
1982 ((fun x ->
1983 Format.fprintf fmt "@[<2>[";
1984 ignore
1985 (List.fold_left
1986 (fun sep ->
1987 fun x ->
1988 if sep then Format.fprintf fmt ";@ ";
1989 ((__16 ()) fmt) x;
1990 true) false x);
1991 Format.fprintf fmt "@,]@]")) x.c_methods;
1992 Format.fprintf fmt "@]");
1993 Format.fprintf fmt ";@ ";
1994 Format.fprintf fmt "@[%s =@ " "c_user_attributes";
1995 ((fun x ->
1996 Format.fprintf fmt "@[<2>[";
1997 ignore
1998 (List.fold_left
1999 (fun sep ->
2000 fun x ->
2001 if sep then Format.fprintf fmt ";@ ";
2002 ((__17 ()) fmt) x;
2003 true) false x);
2004 Format.fprintf fmt "@,]@]")) x.c_user_attributes;
2005 Format.fprintf fmt "@]");
2006 Format.fprintf fmt ";@ ";
2007 Format.fprintf fmt "@[%s =@ " "c_enum";
2008 ((function
2009 | None -> Format.pp_print_string fmt "None"
2010 | Some x ->
2011 (Format.pp_print_string fmt "(Some ";
2012 ((__18 ()) fmt) x;
2013 Format.pp_print_string fmt ")"))) x.c_enum;
2014 Format.fprintf fmt "@]");
2015 Format.fprintf fmt "@ }@]")
2016 [@ocaml.warning "-A"])
2018 and show_class_ : class_ -> Ppx_deriving_runtime.string =
2019 fun x -> Format.asprintf "%a" pp_class_ x
2021 and pp_class_const :
2022 Format.formatter -> class_const -> Ppx_deriving_runtime.unit =
2023 let __2 () = pp_expr
2025 and __1 () = pp_sid
2027 and __0 () = pp_hint
2029 ((let open! Ppx_deriving_runtime in
2030 fun fmt ->
2031 fun (a0,a1,a2) ->
2032 Format.fprintf fmt "(@[";
2033 ((((function
2034 | None -> Format.pp_print_string fmt "None"
2035 | Some x ->
2036 (Format.pp_print_string fmt "(Some ";
2037 ((__0 ()) fmt) x;
2038 Format.pp_print_string fmt ")"))) a0;
2039 Format.fprintf fmt ",@ ";
2040 ((__1 ()) fmt) a1);
2041 Format.fprintf fmt ",@ ";
2042 ((function
2043 | None -> Format.pp_print_string fmt "None"
2044 | Some x ->
2045 (Format.pp_print_string fmt "(Some ";
2046 ((__2 ()) fmt) x;
2047 Format.pp_print_string fmt ")"))) a2);
2048 Format.fprintf fmt "@])")
2049 [@ocaml.warning "-A"])
2051 and show_class_const : class_const -> Ppx_deriving_runtime.string =
2052 fun x -> Format.asprintf "%a" pp_class_const x
2054 and pp_class_typeconst :
2055 Format.formatter -> class_typeconst -> Ppx_deriving_runtime.unit =
2056 let __2 () = pp_hint
2058 and __1 () = pp_hint
2060 and __0 () = pp_sid
2062 ((let open! Ppx_deriving_runtime in
2063 fun fmt ->
2064 fun x ->
2065 Format.fprintf fmt "@[<2>{ ";
2066 (((Format.fprintf fmt "@[%s =@ " "AnnotatedAST.c_tconst_name";
2067 ((__0 ()) fmt) x.c_tconst_name;
2068 Format.fprintf fmt "@]");
2069 Format.fprintf fmt ";@ ";
2070 Format.fprintf fmt "@[%s =@ " "c_tconst_constraint";
2071 ((function
2072 | None -> Format.pp_print_string fmt "None"
2073 | Some x ->
2074 (Format.pp_print_string fmt "(Some ";
2075 ((__1 ()) fmt) x;
2076 Format.pp_print_string fmt ")")))
2077 x.c_tconst_constraint;
2078 Format.fprintf fmt "@]");
2079 Format.fprintf fmt ";@ ";
2080 Format.fprintf fmt "@[%s =@ " "c_tconst_type";
2081 ((function
2082 | None -> Format.pp_print_string fmt "None"
2083 | Some x ->
2084 (Format.pp_print_string fmt "(Some ";
2085 ((__2 ()) fmt) x;
2086 Format.pp_print_string fmt ")"))) x.c_tconst_type;
2087 Format.fprintf fmt "@]");
2088 Format.fprintf fmt "@ }@]")
2089 [@ocaml.warning "-A"])
2091 and show_class_typeconst : class_typeconst -> Ppx_deriving_runtime.string
2092 = fun x -> Format.asprintf "%a" pp_class_typeconst x
2094 and pp_class_var :
2095 Format.formatter -> class_var -> Ppx_deriving_runtime.unit =
2096 let __4 () = pp_user_attribute
2098 and __3 () = pp_expr
2100 and __2 () = pp_sid
2102 and __1 () = pp_hint
2104 and __0 () = pp_visibility
2106 ((let open! Ppx_deriving_runtime in
2107 fun fmt ->
2108 fun x ->
2109 Format.fprintf fmt "@[<2>{ ";
2110 (((((((Format.fprintf fmt "@[%s =@ " "AnnotatedAST.cv_final";
2111 (Format.fprintf fmt "%B") x.cv_final;
2112 Format.fprintf fmt "@]");
2113 Format.fprintf fmt ";@ ";
2114 Format.fprintf fmt "@[%s =@ " "cv_is_xhp";
2115 (Format.fprintf fmt "%B") x.cv_is_xhp;
2116 Format.fprintf fmt "@]");
2117 Format.fprintf fmt ";@ ";
2118 Format.fprintf fmt "@[%s =@ " "cv_visibility";
2119 ((__0 ()) fmt) x.cv_visibility;
2120 Format.fprintf fmt "@]");
2121 Format.fprintf fmt ";@ ";
2122 Format.fprintf fmt "@[%s =@ " "cv_type";
2123 ((function
2124 | None -> Format.pp_print_string fmt "None"
2125 | Some x ->
2126 (Format.pp_print_string fmt "(Some ";
2127 ((__1 ()) fmt) x;
2128 Format.pp_print_string fmt ")"))) x.cv_type;
2129 Format.fprintf fmt "@]");
2130 Format.fprintf fmt ";@ ";
2131 Format.fprintf fmt "@[%s =@ " "cv_id";
2132 ((__2 ()) fmt) x.cv_id;
2133 Format.fprintf fmt "@]");
2134 Format.fprintf fmt ";@ ";
2135 Format.fprintf fmt "@[%s =@ " "cv_expr";
2136 ((function
2137 | None -> Format.pp_print_string fmt "None"
2138 | Some x ->
2139 (Format.pp_print_string fmt "(Some ";
2140 ((__3 ()) fmt) x;
2141 Format.pp_print_string fmt ")"))) x.cv_expr;
2142 Format.fprintf fmt "@]");
2143 Format.fprintf fmt ";@ ";
2144 Format.fprintf fmt "@[%s =@ " "cv_user_attributes";
2145 ((fun x ->
2146 Format.fprintf fmt "@[<2>[";
2147 ignore
2148 (List.fold_left
2149 (fun sep ->
2150 fun x ->
2151 if sep then Format.fprintf fmt ";@ ";
2152 ((__4 ()) fmt) x;
2153 true) false x);
2154 Format.fprintf fmt "@,]@]")) x.cv_user_attributes;
2155 Format.fprintf fmt "@]");
2156 Format.fprintf fmt "@ }@]")
2157 [@ocaml.warning "-A"])
2159 and show_class_var : class_var -> Ppx_deriving_runtime.string =
2160 fun x -> Format.asprintf "%a" pp_class_var x
2162 and pp_method_ : Format.formatter -> method_ -> Ppx_deriving_runtime.unit
2164 let __10 () = pp_hint
2166 and __9 () = pp_user_attribute
2168 and __8 () = Ast.pp_fun_kind
2170 and __7 () = pp_func_body
2172 and __6 () = pp_fun_param
2174 and __5 () = pp_fun_variadicity
2176 and __4 () = pp_where_constraint
2178 and __3 () = pp_tparam
2180 and __2 () = pp_sid
2182 and __1 () = pp_visibility
2184 and __0 () = pp_env_annotation
2186 ((let open! Ppx_deriving_runtime in
2187 fun fmt ->
2188 fun x ->
2189 Format.fprintf fmt "@[<2>{ ";
2190 ((((((((((((((Format.fprintf fmt "@[%s =@ "
2191 "AnnotatedAST.m_annotation";
2192 ((__0 ()) fmt) x.m_annotation;
2193 Format.fprintf fmt "@]");
2194 Format.fprintf fmt ";@ ";
2195 Format.fprintf fmt "@[%s =@ " "m_final";
2196 (Format.fprintf fmt "%B") x.m_final;
2197 Format.fprintf fmt "@]");
2198 Format.fprintf fmt ";@ ";
2199 Format.fprintf fmt "@[%s =@ " "m_abstract";
2200 (Format.fprintf fmt "%B") x.m_abstract;
2201 Format.fprintf fmt "@]");
2202 Format.fprintf fmt ";@ ";
2203 Format.fprintf fmt "@[%s =@ " "m_visibility";
2204 ((__1 ()) fmt) x.m_visibility;
2205 Format.fprintf fmt "@]");
2206 Format.fprintf fmt ";@ ";
2207 Format.fprintf fmt "@[%s =@ " "m_name";
2208 ((__2 ()) fmt) x.m_name;
2209 Format.fprintf fmt "@]");
2210 Format.fprintf fmt ";@ ";
2211 Format.fprintf fmt "@[%s =@ " "m_tparams";
2212 ((fun x ->
2213 Format.fprintf fmt "@[<2>[";
2214 ignore
2215 (List.fold_left
2216 (fun sep ->
2217 fun x ->
2218 if sep then Format.fprintf fmt ";@ ";
2219 ((__3 ()) fmt) x;
2220 true) false x);
2221 Format.fprintf fmt "@,]@]")) x.m_tparams;
2222 Format.fprintf fmt "@]");
2223 Format.fprintf fmt ";@ ";
2224 Format.fprintf fmt "@[%s =@ " "m_where_constraints";
2225 ((fun x ->
2226 Format.fprintf fmt "@[<2>[";
2227 ignore
2228 (List.fold_left
2229 (fun sep ->
2230 fun x ->
2231 if sep then Format.fprintf fmt ";@ ";
2232 ((__4 ()) fmt) x;
2233 true) false x);
2234 Format.fprintf fmt "@,]@]")) x.m_where_constraints;
2235 Format.fprintf fmt "@]");
2236 Format.fprintf fmt ";@ ";
2237 Format.fprintf fmt "@[%s =@ " "m_variadic";
2238 ((__5 ()) fmt) x.m_variadic;
2239 Format.fprintf fmt "@]");
2240 Format.fprintf fmt ";@ ";
2241 Format.fprintf fmt "@[%s =@ " "m_params";
2242 ((fun x ->
2243 Format.fprintf fmt "@[<2>[";
2244 ignore
2245 (List.fold_left
2246 (fun sep ->
2247 fun x ->
2248 if sep then Format.fprintf fmt ";@ ";
2249 ((__6 ()) fmt) x;
2250 true) false x);
2251 Format.fprintf fmt "@,]@]")) x.m_params;
2252 Format.fprintf fmt "@]");
2253 Format.fprintf fmt ";@ ";
2254 Format.fprintf fmt "@[%s =@ " "m_body";
2255 ((__7 ()) fmt) x.m_body;
2256 Format.fprintf fmt "@]");
2257 Format.fprintf fmt ";@ ";
2258 Format.fprintf fmt "@[%s =@ " "m_fun_kind";
2259 ((__8 ()) fmt) x.m_fun_kind;
2260 Format.fprintf fmt "@]");
2261 Format.fprintf fmt ";@ ";
2262 Format.fprintf fmt "@[%s =@ " "m_user_attributes";
2263 ((fun x ->
2264 Format.fprintf fmt "@[<2>[";
2265 ignore
2266 (List.fold_left
2267 (fun sep ->
2268 fun x ->
2269 if sep then Format.fprintf fmt ";@ ";
2270 ((__9 ()) fmt) x;
2271 true) false x);
2272 Format.fprintf fmt "@,]@]")) x.m_user_attributes;
2273 Format.fprintf fmt "@]");
2274 Format.fprintf fmt ";@ ";
2275 Format.fprintf fmt "@[%s =@ " "m_ret";
2276 ((function
2277 | None -> Format.pp_print_string fmt "None"
2278 | Some x ->
2279 (Format.pp_print_string fmt "(Some ";
2280 ((__10 ()) fmt) x;
2281 Format.pp_print_string fmt ")"))) x.m_ret;
2282 Format.fprintf fmt "@]");
2283 Format.fprintf fmt ";@ ";
2284 Format.fprintf fmt "@[%s =@ " "m_ret_by_ref";
2285 (Format.fprintf fmt "%B") x.m_ret_by_ref;
2286 Format.fprintf fmt "@]");
2287 Format.fprintf fmt "@ }@]")
2288 [@ocaml.warning "-A"])
2290 and show_method_ : method_ -> Ppx_deriving_runtime.string =
2291 fun x -> Format.asprintf "%a" pp_method_ x
2293 and pp_typedef : Format.formatter -> typedef -> Ppx_deriving_runtime.unit
2295 let __6 () = pp_typedef_visibility
2297 and __5 () = pp_user_attribute
2299 and __4 () = pp_hint
2301 and __3 () = pp_hint
2303 and __2 () = pp_tparam
2305 and __1 () = pp_sid
2307 and __0 () = pp_env_annotation
2309 ((let open! Ppx_deriving_runtime in
2310 fun fmt ->
2311 fun x ->
2312 Format.fprintf fmt "@[<2>{ ";
2313 ((((((((Format.fprintf fmt "@[%s =@ "
2314 "AnnotatedAST.t_annotation";
2315 ((__0 ()) fmt) x.t_annotation;
2316 Format.fprintf fmt "@]");
2317 Format.fprintf fmt ";@ ";
2318 Format.fprintf fmt "@[%s =@ " "t_name";
2319 ((__1 ()) fmt) x.t_name;
2320 Format.fprintf fmt "@]");
2321 Format.fprintf fmt ";@ ";
2322 Format.fprintf fmt "@[%s =@ " "t_tparams";
2323 ((fun x ->
2324 Format.fprintf fmt "@[<2>[";
2325 ignore
2326 (List.fold_left
2327 (fun sep ->
2328 fun x ->
2329 if sep then Format.fprintf fmt ";@ ";
2330 ((__2 ()) fmt) x;
2331 true) false x);
2332 Format.fprintf fmt "@,]@]")) x.t_tparams;
2333 Format.fprintf fmt "@]");
2334 Format.fprintf fmt ";@ ";
2335 Format.fprintf fmt "@[%s =@ " "t_constraint";
2336 ((function
2337 | None -> Format.pp_print_string fmt "None"
2338 | Some x ->
2339 (Format.pp_print_string fmt "(Some ";
2340 ((__3 ()) fmt) x;
2341 Format.pp_print_string fmt ")"))) x.t_constraint;
2342 Format.fprintf fmt "@]");
2343 Format.fprintf fmt ";@ ";
2344 Format.fprintf fmt "@[%s =@ " "t_kind";
2345 ((__4 ()) fmt) x.t_kind;
2346 Format.fprintf fmt "@]");
2347 Format.fprintf fmt ";@ ";
2348 Format.fprintf fmt "@[%s =@ " "t_user_attributes";
2349 ((fun x ->
2350 Format.fprintf fmt "@[<2>[";
2351 ignore
2352 (List.fold_left
2353 (fun sep ->
2354 fun x ->
2355 if sep then Format.fprintf fmt ";@ ";
2356 ((__5 ()) fmt) x;
2357 true) false x);
2358 Format.fprintf fmt "@,]@]")) x.t_user_attributes;
2359 Format.fprintf fmt "@]");
2360 Format.fprintf fmt ";@ ";
2361 Format.fprintf fmt "@[%s =@ " "t_mode";
2362 ((fun _ -> Format.pp_print_string fmt "<opaque>")) x.t_mode;
2363 Format.fprintf fmt "@]");
2364 Format.fprintf fmt ";@ ";
2365 Format.fprintf fmt "@[%s =@ " "t_vis";
2366 ((__6 ()) fmt) x.t_vis;
2367 Format.fprintf fmt "@]");
2368 Format.fprintf fmt "@ }@]")
2369 [@ocaml.warning "-A"])
2371 and show_typedef : typedef -> Ppx_deriving_runtime.string =
2372 fun x -> Format.asprintf "%a" pp_typedef x
2374 and pp_gconst : Format.formatter -> gconst -> Ppx_deriving_runtime.unit =
2375 let __3 () = pp_expr
2377 and __2 () = pp_hint
2379 and __1 () = pp_sid
2381 and __0 () = pp_env_annotation
2383 ((let open! Ppx_deriving_runtime in
2384 fun fmt ->
2385 fun x ->
2386 Format.fprintf fmt "@[<2>{ ";
2387 ((((((Format.fprintf fmt "@[%s =@ "
2388 "AnnotatedAST.cst_annotation";
2389 ((__0 ()) fmt) x.cst_annotation;
2390 Format.fprintf fmt "@]");
2391 Format.fprintf fmt ";@ ";
2392 Format.fprintf fmt "@[%s =@ " "cst_mode";
2393 ((fun _ -> Format.pp_print_string fmt "<opaque>"))
2394 x.cst_mode;
2395 Format.fprintf fmt "@]");
2396 Format.fprintf fmt ";@ ";
2397 Format.fprintf fmt "@[%s =@ " "cst_name";
2398 ((__1 ()) fmt) x.cst_name;
2399 Format.fprintf fmt "@]");
2400 Format.fprintf fmt ";@ ";
2401 Format.fprintf fmt "@[%s =@ " "cst_type";
2402 ((function
2403 | None -> Format.pp_print_string fmt "None"
2404 | Some x ->
2405 (Format.pp_print_string fmt "(Some ";
2406 ((__2 ()) fmt) x;
2407 Format.pp_print_string fmt ")"))) x.cst_type;
2408 Format.fprintf fmt "@]");
2409 Format.fprintf fmt ";@ ";
2410 Format.fprintf fmt "@[%s =@ " "cst_value";
2411 ((function
2412 | None -> Format.pp_print_string fmt "None"
2413 | Some x ->
2414 (Format.pp_print_string fmt "(Some ";
2415 ((__3 ()) fmt) x;
2416 Format.pp_print_string fmt ")"))) x.cst_value;
2417 Format.fprintf fmt "@]");
2418 Format.fprintf fmt ";@ ";
2419 Format.fprintf fmt "@[%s =@ " "cst_is_define";
2420 (Format.fprintf fmt "%B") x.cst_is_define;
2421 Format.fprintf fmt "@]");
2422 Format.fprintf fmt "@ }@]")
2423 [@ocaml.warning "-A"])
2425 and show_gconst : gconst -> Ppx_deriving_runtime.string =
2426 fun x -> Format.asprintf "%a" pp_gconst x
2428 and pp_def : Format.formatter -> def -> Ppx_deriving_runtime.unit =
2429 let __3 () = pp_gconst
2431 and __2 () = pp_typedef
2433 and __1 () = pp_class_
2435 and __0 () = pp_fun_
2437 ((let open! Ppx_deriving_runtime in
2438 fun fmt ->
2439 function
2440 | Fun a0 ->
2441 (Format.fprintf fmt "(@[<2>AnnotatedAST.Fun@ ";
2442 ((__0 ()) fmt) a0;
2443 Format.fprintf fmt "@])")
2444 | Class a0 ->
2445 (Format.fprintf fmt "(@[<2>AnnotatedAST.Class@ ";
2446 ((__1 ()) fmt) a0;
2447 Format.fprintf fmt "@])")
2448 | Typedef a0 ->
2449 (Format.fprintf fmt "(@[<2>AnnotatedAST.Typedef@ ";
2450 ((__2 ()) fmt) a0;
2451 Format.fprintf fmt "@])")
2452 | Constant a0 ->
2453 (Format.fprintf fmt "(@[<2>AnnotatedAST.Constant@ ";
2454 ((__3 ()) fmt) a0;
2455 Format.fprintf fmt "@])"))
2456 [@ocaml.warning "-A"])
2458 and show_def : def -> Ppx_deriving_runtime.string =
2459 fun x -> Format.asprintf "%a" pp_def x
2461 include
2462 struct
2463 [@@@ocaml.warning "-4-26-27"]
2464 [@@@VISITORS.BEGIN ]
2465 class virtual ['self] iter =
2466 object (self : 'self)
2467 inherit [_] iter_defs
2468 method on_program env = self#on_list self#on_def env
2469 method on_expr_annotation env _visitors_this = ()
2470 method on_env_annotation env _visitors_this = ()
2471 method on_Fallthrough env = ()
2472 method on_Expr env _visitors_c0 =
2473 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2474 method on_Break env _visitors_c0 =
2475 let _visitors_r0 = self#on_pos env _visitors_c0 in ()
2476 method on_Continue env _visitors_c0 =
2477 let _visitors_r0 = self#on_pos env _visitors_c0 in ()
2478 method on_Throw env _visitors_c0 _visitors_c1 =
2479 let _visitors_r0 = self#on_is_terminal env _visitors_c0 in
2480 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2481 method on_Return env _visitors_c0 _visitors_c1 =
2482 let _visitors_r0 = self#on_pos env _visitors_c0 in
2483 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
2486 method on_GotoLabel env _visitors_c0 =
2487 let _visitors_r0 = self#on_pstring env _visitors_c0 in ()
2488 method on_Goto env _visitors_c0 =
2489 let _visitors_r0 = self#on_pstring env _visitors_c0 in ()
2490 method on_Static_var env _visitors_c0 =
2491 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2494 method on_Global_var env _visitors_c0 =
2495 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2498 method on_If env _visitors_c0 _visitors_c1 _visitors_c2 =
2499 let _visitors_r0 = self#on_expr env _visitors_c0 in
2500 let _visitors_r1 = self#on_block env _visitors_c1 in
2501 let _visitors_r2 = self#on_block env _visitors_c2 in ()
2502 method on_Do env _visitors_c0 _visitors_c1 =
2503 let _visitors_r0 = self#on_block env _visitors_c0 in
2504 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2505 method on_While env _visitors_c0 _visitors_c1 =
2506 let _visitors_r0 = self#on_expr env _visitors_c0 in
2507 let _visitors_r1 = self#on_block env _visitors_c1 in ()
2508 method on_Using env _visitors_c0 _visitors_c1 _visitors_c2 =
2509 let _visitors_r0 = self#on_bool env _visitors_c0 in
2510 let _visitors_r1 = self#on_expr env _visitors_c1 in
2511 let _visitors_r2 = self#on_block env _visitors_c2 in ()
2512 method on_For env _visitors_c0 _visitors_c1 _visitors_c2
2513 _visitors_c3 =
2514 let _visitors_r0 = self#on_expr env _visitors_c0 in
2515 let _visitors_r1 = self#on_expr env _visitors_c1 in
2516 let _visitors_r2 = self#on_expr env _visitors_c2 in
2517 let _visitors_r3 = self#on_block env _visitors_c3 in ()
2518 method on_Switch env _visitors_c0 _visitors_c1 =
2519 let _visitors_r0 = self#on_expr env _visitors_c0 in
2520 let _visitors_r1 = self#on_list self#on_case env _visitors_c1
2523 method on_Foreach env _visitors_c0 _visitors_c1 _visitors_c2 =
2524 let _visitors_r0 = self#on_expr env _visitors_c0 in
2525 let _visitors_r1 = self#on_as_expr env _visitors_c1 in
2526 let _visitors_r2 = self#on_block env _visitors_c2 in ()
2527 method on_Try env _visitors_c0 _visitors_c1 _visitors_c2 =
2528 let _visitors_r0 = self#on_block env _visitors_c0 in
2529 let _visitors_r1 = self#on_list self#on_catch env _visitors_c1
2531 let _visitors_r2 = self#on_block env _visitors_c2 in ()
2532 method on_Noop env = ()
2533 method on_stmt env _visitors_this =
2534 match _visitors_this with
2535 | Fallthrough -> self#on_Fallthrough env
2536 | Expr _visitors_c0 -> self#on_Expr env _visitors_c0
2537 | Break _visitors_c0 -> self#on_Break env _visitors_c0
2538 | Continue _visitors_c0 -> self#on_Continue env _visitors_c0
2539 | Throw (_visitors_c0,_visitors_c1) ->
2540 self#on_Throw env _visitors_c0 _visitors_c1
2541 | Return (_visitors_c0,_visitors_c1) ->
2542 self#on_Return env _visitors_c0 _visitors_c1
2543 | GotoLabel _visitors_c0 -> self#on_GotoLabel env _visitors_c0
2544 | Goto _visitors_c0 -> self#on_Goto env _visitors_c0
2545 | Static_var _visitors_c0 ->
2546 self#on_Static_var env _visitors_c0
2547 | Global_var _visitors_c0 ->
2548 self#on_Global_var env _visitors_c0
2549 | If (_visitors_c0,_visitors_c1,_visitors_c2) ->
2550 self#on_If env _visitors_c0 _visitors_c1 _visitors_c2
2551 | Do (_visitors_c0,_visitors_c1) ->
2552 self#on_Do env _visitors_c0 _visitors_c1
2553 | While (_visitors_c0,_visitors_c1) ->
2554 self#on_While env _visitors_c0 _visitors_c1
2555 | Using (_visitors_c0,_visitors_c1,_visitors_c2) ->
2556 self#on_Using env _visitors_c0 _visitors_c1 _visitors_c2
2557 | For (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3) ->
2558 self#on_For env _visitors_c0 _visitors_c1 _visitors_c2
2559 _visitors_c3
2560 | Switch (_visitors_c0,_visitors_c1) ->
2561 self#on_Switch env _visitors_c0 _visitors_c1
2562 | Foreach (_visitors_c0,_visitors_c1,_visitors_c2) ->
2563 self#on_Foreach env _visitors_c0 _visitors_c1 _visitors_c2
2564 | Try (_visitors_c0,_visitors_c1,_visitors_c2) ->
2565 self#on_Try env _visitors_c0 _visitors_c1 _visitors_c2
2566 | Noop -> self#on_Noop env
2567 method on_As_v env _visitors_c0 =
2568 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2569 method on_As_kv env _visitors_c0 _visitors_c1 =
2570 let _visitors_r0 = self#on_expr env _visitors_c0 in
2571 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2572 method on_Await_as_v env _visitors_c0 _visitors_c1 =
2573 let _visitors_r0 = self#on_pos env _visitors_c0 in
2574 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2575 method on_Await_as_kv env _visitors_c0 _visitors_c1 _visitors_c2
2577 let _visitors_r0 = self#on_pos env _visitors_c0 in
2578 let _visitors_r1 = self#on_expr env _visitors_c1 in
2579 let _visitors_r2 = self#on_expr env _visitors_c2 in ()
2580 method on_as_expr env _visitors_this =
2581 match _visitors_this with
2582 | As_v _visitors_c0 -> self#on_As_v env _visitors_c0
2583 | As_kv (_visitors_c0,_visitors_c1) ->
2584 self#on_As_kv env _visitors_c0 _visitors_c1
2585 | Await_as_v (_visitors_c0,_visitors_c1) ->
2586 self#on_Await_as_v env _visitors_c0 _visitors_c1
2587 | Await_as_kv (_visitors_c0,_visitors_c1,_visitors_c2) ->
2588 self#on_Await_as_kv env _visitors_c0 _visitors_c1
2589 _visitors_c2
2590 method on_block env = self#on_list self#on_stmt env
2591 method on_CIparent env = ()
2592 method on_CIself env = ()
2593 method on_CIstatic env = ()
2594 method on_CIexpr env _visitors_c0 =
2595 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2596 method on_CI env _visitors_c0 =
2597 let _visitors_r0 = self#on_instantiated_sid env _visitors_c0
2600 method on_class_id env _visitors_this =
2601 match _visitors_this with
2602 | CIparent -> self#on_CIparent env
2603 | CIself -> self#on_CIself env
2604 | CIstatic -> self#on_CIstatic env
2605 | CIexpr _visitors_c0 -> self#on_CIexpr env _visitors_c0
2606 | CI _visitors_c0 -> self#on_CI env _visitors_c0
2607 method on_expr env (_visitors_c0,_visitors_c1) =
2608 let _visitors_r0 = self#on_expr_annotation env _visitors_c0 in
2609 let _visitors_r1 = self#on_expr_ env _visitors_c1 in ()
2610 method on_Array env _visitors_c0 =
2611 let _visitors_r0 = self#on_list self#on_afield env _visitors_c0
2614 method on_Darray env _visitors_c0 =
2615 let _visitors_r0 =
2616 self#on_list
2617 (fun env ->
2618 fun (_visitors_c0,_visitors_c1) ->
2619 let _visitors_r0 = self#on_expr env _visitors_c0 in
2620 let _visitors_r1 = self#on_expr env _visitors_c1 in
2621 ()) env _visitors_c0
2624 method on_Varray env _visitors_c0 =
2625 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2628 method on_Shape env _visitors_c0 =
2629 let _visitors_r0 =
2630 self#on_shape_map self#on_expr env _visitors_c0 in
2632 method on_ValCollection env _visitors_c0 _visitors_c1 =
2633 let _visitors_r0 = self#on_vc_kind env _visitors_c0 in
2634 let _visitors_r1 = self#on_list self#on_expr env _visitors_c1
2637 method on_KeyValCollection env _visitors_c0 _visitors_c1 =
2638 let _visitors_r0 = self#on_kvc_kind env _visitors_c0 in
2639 let _visitors_r1 = self#on_list self#on_field env _visitors_c1
2642 method on_Null env = ()
2643 method on_This env = ()
2644 method on_True env = ()
2645 method on_False env = ()
2646 method on_Id env _visitors_c0 =
2647 let _visitors_r0 = self#on_sid env _visitors_c0 in ()
2648 method on_Lvar env _visitors_c0 =
2649 let _visitors_r0 = self#on_lid env _visitors_c0 in ()
2650 method on_Dollar env _visitors_c0 =
2651 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2652 method on_Dollardollar env _visitors_c0 =
2653 let _visitors_r0 = self#on_lid env _visitors_c0 in ()
2654 method on_Clone env _visitors_c0 =
2655 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2656 method on_Obj_get env _visitors_c0 _visitors_c1 _visitors_c2 =
2657 let _visitors_r0 = self#on_expr env _visitors_c0 in
2658 let _visitors_r1 = self#on_expr env _visitors_c1 in
2659 let _visitors_r2 = self#on_og_null_flavor env _visitors_c2 in
2661 method on_Array_get env _visitors_c0 _visitors_c1 =
2662 let _visitors_r0 = self#on_expr env _visitors_c0 in
2663 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
2666 method on_Class_get env _visitors_c0 _visitors_c1 =
2667 let _visitors_r0 = self#on_class_id env _visitors_c0 in
2668 let _visitors_r1 = self#on_pstring env _visitors_c1 in ()
2669 method on_Class_const env _visitors_c0 _visitors_c1 =
2670 let _visitors_r0 = self#on_class_id env _visitors_c0 in
2671 let _visitors_r1 = self#on_pstring env _visitors_c1 in ()
2672 method on_Call env _visitors_c0 _visitors_c1 _visitors_c2
2673 _visitors_c3 _visitors_c4 =
2674 let _visitors_r0 = self#on_call_type env _visitors_c0 in
2675 let _visitors_r1 = self#on_expr env _visitors_c1 in
2676 let _visitors_r2 = self#on_list self#on_hint env _visitors_c2
2678 let _visitors_r3 = self#on_list self#on_expr env _visitors_c3
2680 let _visitors_r4 = self#on_list self#on_expr env _visitors_c4
2683 method on_Int env _visitors_c0 =
2684 let _visitors_r0 = self#on_pstring env _visitors_c0 in ()
2685 method on_Float env _visitors_c0 =
2686 let _visitors_r0 = self#on_pstring env _visitors_c0 in ()
2687 method on_String env _visitors_c0 =
2688 let _visitors_r0 = self#on_pstring env _visitors_c0 in ()
2689 method on_String2 env _visitors_c0 =
2690 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2693 method on_Yield env _visitors_c0 =
2694 let _visitors_r0 = self#on_afield env _visitors_c0 in ()
2695 method on_Yield_break env = ()
2696 method on_Await env _visitors_c0 =
2697 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2698 method on_Suspend env _visitors_c0 =
2699 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2700 method on_List env _visitors_c0 =
2701 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2704 method on_Expr_list env _visitors_c0 =
2705 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2708 method on_Cast env _visitors_c0 _visitors_c1 =
2709 let _visitors_r0 = self#on_hint env _visitors_c0 in
2710 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2711 method on_Unop env _visitors_c0 _visitors_c1 =
2712 let _visitors_r0 = self#on_uop env _visitors_c0 in
2713 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2714 method on_Binop env _visitors_c0 _visitors_c1 _visitors_c2 =
2715 let _visitors_r0 = self#on_bop env _visitors_c0 in
2716 let _visitors_r1 = self#on_expr env _visitors_c1 in
2717 let _visitors_r2 = self#on_expr env _visitors_c2 in ()
2718 method on_Pipe env _visitors_c0 _visitors_c1 _visitors_c2 =
2719 let _visitors_r0 = self#on_lid env _visitors_c0 in
2720 let _visitors_r1 = self#on_expr env _visitors_c1 in
2721 let _visitors_r2 = self#on_expr env _visitors_c2 in ()
2722 method on_Eif env _visitors_c0 _visitors_c1 _visitors_c2 =
2723 let _visitors_r0 = self#on_expr env _visitors_c0 in
2724 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
2726 let _visitors_r2 = self#on_expr env _visitors_c2 in ()
2727 method on_NullCoalesce env _visitors_c0 _visitors_c1 =
2728 let _visitors_r0 = self#on_expr env _visitors_c0 in
2729 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2730 method on_InstanceOf env _visitors_c0 _visitors_c1 =
2731 let _visitors_r0 = self#on_expr env _visitors_c0 in
2732 let _visitors_r1 = self#on_class_id env _visitors_c1 in ()
2733 method on_Is env _visitors_c0 _visitors_c1 =
2734 let _visitors_r0 = self#on_expr env _visitors_c0 in
2735 let _visitors_r1 = self#on_hint env _visitors_c1 in ()
2736 method on_New env _visitors_c0 _visitors_c1 _visitors_c2 =
2737 let _visitors_r0 = self#on_class_id env _visitors_c0 in
2738 let _visitors_r1 = self#on_list self#on_expr env _visitors_c1
2740 let _visitors_r2 = self#on_list self#on_expr env _visitors_c2
2743 method on_Efun env _visitors_c0 _visitors_c1 =
2744 let _visitors_r0 = self#on_fun_ env _visitors_c0 in
2745 let _visitors_r1 = self#on_list self#on_lid env _visitors_c1
2748 method on_Xml env _visitors_c0 _visitors_c1 _visitors_c2 =
2749 let _visitors_r0 = self#on_sid env _visitors_c0 in
2750 let _visitors_r1 =
2751 self#on_list self#on_xhp_attribute env _visitors_c1 in
2752 let _visitors_r2 = self#on_list self#on_expr env _visitors_c2
2755 method on_Callconv env _visitors_c0 _visitors_c1 =
2756 let _visitors_r0 = self#on_param_kind env _visitors_c0 in
2757 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2758 method on_Lplaceholder env _visitors_c0 =
2759 let _visitors_r0 = self#on_pos env _visitors_c0 in ()
2760 method on_Fun_id env _visitors_c0 =
2761 let _visitors_r0 = self#on_sid env _visitors_c0 in ()
2762 method on_Method_id env _visitors_c0 _visitors_c1 =
2763 let _visitors_r0 = self#on_expr env _visitors_c0 in
2764 let _visitors_r1 = self#on_pstring env _visitors_c1 in ()
2765 method on_Method_caller env _visitors_c0 _visitors_c1 =
2766 let _visitors_r0 = self#on_sid env _visitors_c0 in
2767 let _visitors_r1 = self#on_pstring env _visitors_c1 in ()
2768 method on_Smethod_id env _visitors_c0 _visitors_c1 =
2769 let _visitors_r0 = self#on_sid env _visitors_c0 in
2770 let _visitors_r1 = self#on_pstring env _visitors_c1 in ()
2771 method on_Special_func env _visitors_c0 =
2772 let _visitors_r0 = self#on_special_func env _visitors_c0 in ()
2773 method on_Pair env _visitors_c0 _visitors_c1 =
2774 let _visitors_r0 = self#on_expr env _visitors_c0 in
2775 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2776 method on_Assert env _visitors_c0 =
2777 let _visitors_r0 = self#on_assert_expr env _visitors_c0 in ()
2778 method on_Typename env _visitors_c0 =
2779 let _visitors_r0 = self#on_sid env _visitors_c0 in ()
2780 method on_Any env = ()
2781 method on_expr_ env _visitors_this =
2782 match _visitors_this with
2783 | Array _visitors_c0 -> self#on_Array env _visitors_c0
2784 | Darray _visitors_c0 -> self#on_Darray env _visitors_c0
2785 | Varray _visitors_c0 -> self#on_Varray env _visitors_c0
2786 | Shape _visitors_c0 -> self#on_Shape env _visitors_c0
2787 | ValCollection (_visitors_c0,_visitors_c1) ->
2788 self#on_ValCollection env _visitors_c0 _visitors_c1
2789 | KeyValCollection (_visitors_c0,_visitors_c1) ->
2790 self#on_KeyValCollection env _visitors_c0 _visitors_c1
2791 | Null -> self#on_Null env
2792 | This -> self#on_This env
2793 | True -> self#on_True env
2794 | False -> self#on_False env
2795 | Id _visitors_c0 -> self#on_Id env _visitors_c0
2796 | Lvar _visitors_c0 -> self#on_Lvar env _visitors_c0
2797 | Dollar _visitors_c0 -> self#on_Dollar env _visitors_c0
2798 | Dollardollar _visitors_c0 ->
2799 self#on_Dollardollar env _visitors_c0
2800 | Clone _visitors_c0 -> self#on_Clone env _visitors_c0
2801 | Obj_get (_visitors_c0,_visitors_c1,_visitors_c2) ->
2802 self#on_Obj_get env _visitors_c0 _visitors_c1 _visitors_c2
2803 | Array_get (_visitors_c0,_visitors_c1) ->
2804 self#on_Array_get env _visitors_c0 _visitors_c1
2805 | Class_get (_visitors_c0,_visitors_c1) ->
2806 self#on_Class_get env _visitors_c0 _visitors_c1
2807 | Class_const (_visitors_c0,_visitors_c1) ->
2808 self#on_Class_const env _visitors_c0 _visitors_c1
2809 | Call
2810 (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3,_visitors_c4)
2812 self#on_Call env _visitors_c0 _visitors_c1 _visitors_c2
2813 _visitors_c3 _visitors_c4
2814 | Int _visitors_c0 -> self#on_Int env _visitors_c0
2815 | Float _visitors_c0 -> self#on_Float env _visitors_c0
2816 | String _visitors_c0 -> self#on_String env _visitors_c0
2817 | String2 _visitors_c0 -> self#on_String2 env _visitors_c0
2818 | Yield _visitors_c0 -> self#on_Yield env _visitors_c0
2819 | Yield_break -> self#on_Yield_break env
2820 | Await _visitors_c0 -> self#on_Await env _visitors_c0
2821 | Suspend _visitors_c0 -> self#on_Suspend env _visitors_c0
2822 | List _visitors_c0 -> self#on_List env _visitors_c0
2823 | Expr_list _visitors_c0 -> self#on_Expr_list env _visitors_c0
2824 | Cast (_visitors_c0,_visitors_c1) ->
2825 self#on_Cast env _visitors_c0 _visitors_c1
2826 | Unop (_visitors_c0,_visitors_c1) ->
2827 self#on_Unop env _visitors_c0 _visitors_c1
2828 | Binop (_visitors_c0,_visitors_c1,_visitors_c2) ->
2829 self#on_Binop env _visitors_c0 _visitors_c1 _visitors_c2
2830 | Pipe (_visitors_c0,_visitors_c1,_visitors_c2) ->
2831 self#on_Pipe env _visitors_c0 _visitors_c1 _visitors_c2
2832 | Eif (_visitors_c0,_visitors_c1,_visitors_c2) ->
2833 self#on_Eif env _visitors_c0 _visitors_c1 _visitors_c2
2834 | NullCoalesce (_visitors_c0,_visitors_c1) ->
2835 self#on_NullCoalesce env _visitors_c0 _visitors_c1
2836 | InstanceOf (_visitors_c0,_visitors_c1) ->
2837 self#on_InstanceOf env _visitors_c0 _visitors_c1
2838 | Is (_visitors_c0,_visitors_c1) ->
2839 self#on_Is env _visitors_c0 _visitors_c1
2840 | New (_visitors_c0,_visitors_c1,_visitors_c2) ->
2841 self#on_New env _visitors_c0 _visitors_c1 _visitors_c2
2842 | Efun (_visitors_c0,_visitors_c1) ->
2843 self#on_Efun env _visitors_c0 _visitors_c1
2844 | Xml (_visitors_c0,_visitors_c1,_visitors_c2) ->
2845 self#on_Xml env _visitors_c0 _visitors_c1 _visitors_c2
2846 | Callconv (_visitors_c0,_visitors_c1) ->
2847 self#on_Callconv env _visitors_c0 _visitors_c1
2848 | Lplaceholder _visitors_c0 ->
2849 self#on_Lplaceholder env _visitors_c0
2850 | Fun_id _visitors_c0 -> self#on_Fun_id env _visitors_c0
2851 | Method_id (_visitors_c0,_visitors_c1) ->
2852 self#on_Method_id env _visitors_c0 _visitors_c1
2853 | Method_caller (_visitors_c0,_visitors_c1) ->
2854 self#on_Method_caller env _visitors_c0 _visitors_c1
2855 | Smethod_id (_visitors_c0,_visitors_c1) ->
2856 self#on_Smethod_id env _visitors_c0 _visitors_c1
2857 | Special_func _visitors_c0 ->
2858 self#on_Special_func env _visitors_c0
2859 | Pair (_visitors_c0,_visitors_c1) ->
2860 self#on_Pair env _visitors_c0 _visitors_c1
2861 | Assert _visitors_c0 -> self#on_Assert env _visitors_c0
2862 | Typename _visitors_c0 -> self#on_Typename env _visitors_c0
2863 | Any -> self#on_Any env
2864 method on_AE_assert env _visitors_c0 =
2865 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2866 method on_assert_expr env _visitors_this =
2867 match _visitors_this with
2868 | AE_assert _visitors_c0 -> self#on_AE_assert env _visitors_c0
2869 method on_Default env _visitors_c0 =
2870 let _visitors_r0 = self#on_block env _visitors_c0 in ()
2871 method on_Case env _visitors_c0 _visitors_c1 =
2872 let _visitors_r0 = self#on_expr env _visitors_c0 in
2873 let _visitors_r1 = self#on_block env _visitors_c1 in ()
2874 method on_case env _visitors_this =
2875 match _visitors_this with
2876 | Default _visitors_c0 -> self#on_Default env _visitors_c0
2877 | Case (_visitors_c0,_visitors_c1) ->
2878 self#on_Case env _visitors_c0 _visitors_c1
2879 method on_catch env (_visitors_c0,_visitors_c1,_visitors_c2) =
2880 let _visitors_r0 = self#on_sid env _visitors_c0 in
2881 let _visitors_r1 = self#on_lid env _visitors_c1 in
2882 let _visitors_r2 = self#on_block env _visitors_c2 in ()
2883 method on_field env (_visitors_c0,_visitors_c1) =
2884 let _visitors_r0 = self#on_expr env _visitors_c0 in
2885 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2886 method on_AFvalue env _visitors_c0 =
2887 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2888 method on_AFkvalue env _visitors_c0 _visitors_c1 =
2889 let _visitors_r0 = self#on_expr env _visitors_c0 in
2890 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2891 method on_afield env _visitors_this =
2892 match _visitors_this with
2893 | AFvalue _visitors_c0 -> self#on_AFvalue env _visitors_c0
2894 | AFkvalue (_visitors_c0,_visitors_c1) ->
2895 self#on_AFkvalue env _visitors_c0 _visitors_c1
2896 method on_Xhp_simple env _visitors_c0 _visitors_c1 =
2897 let _visitors_r0 = self#on_pstring env _visitors_c0 in
2898 let _visitors_r1 = self#on_expr env _visitors_c1 in ()
2899 method on_Xhp_spread env _visitors_c0 =
2900 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2901 method on_xhp_attribute env _visitors_this =
2902 match _visitors_this with
2903 | Xhp_simple (_visitors_c0,_visitors_c1) ->
2904 self#on_Xhp_simple env _visitors_c0 _visitors_c1
2905 | Xhp_spread _visitors_c0 ->
2906 self#on_Xhp_spread env _visitors_c0
2907 method on_Gena env _visitors_c0 =
2908 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2909 method on_Genva env _visitors_c0 =
2910 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
2913 method on_Gen_array_rec env _visitors_c0 =
2914 let _visitors_r0 = self#on_expr env _visitors_c0 in ()
2915 method on_special_func env _visitors_this =
2916 match _visitors_this with
2917 | Gena _visitors_c0 -> self#on_Gena env _visitors_c0
2918 | Genva _visitors_c0 -> self#on_Genva env _visitors_c0
2919 | Gen_array_rec _visitors_c0 ->
2920 self#on_Gen_array_rec env _visitors_c0
2921 method on_is_reference env = self#on_bool env
2922 method on_is_variadic env = self#on_bool env
2923 method on_fun_param env _visitors_this =
2924 let _visitors_r0 =
2925 self#on_option self#on_hint env _visitors_this.param_hint in
2926 let _visitors_r1 =
2927 self#on_is_reference env _visitors_this.param_is_reference
2929 let _visitors_r2 =
2930 self#on_is_variadic env _visitors_this.param_is_variadic in
2931 let _visitors_r3 = self#on_pos env _visitors_this.param_pos in
2932 let _visitors_r4 = self#on_string env _visitors_this.param_name
2934 let _visitors_r5 =
2935 self#on_option self#on_expr env _visitors_this.param_expr in
2936 let _visitors_r6 =
2937 self#on_option self#on_param_kind env
2938 _visitors_this.param_callconv
2940 let _visitors_r7 =
2941 self#on_list self#on_user_attribute env
2942 _visitors_this.param_user_attributes
2945 method on_FVvariadicArg env _visitors_c0 =
2946 let _visitors_r0 = self#on_fun_param env _visitors_c0 in ()
2947 method on_FVellipsis env = ()
2948 method on_FVnonVariadic env = ()
2949 method on_fun_variadicity env _visitors_this =
2950 match _visitors_this with
2951 | FVvariadicArg _visitors_c0 ->
2952 self#on_FVvariadicArg env _visitors_c0
2953 | FVellipsis -> self#on_FVellipsis env
2954 | FVnonVariadic -> self#on_FVnonVariadic env
2955 method on_fun_ env _visitors_this =
2956 let _visitors_r0 =
2957 self#on_env_annotation env _visitors_this.f_annotation in
2958 let _visitors_r1 =
2959 (fun _visitors_this -> ()) _visitors_this.f_mode in
2960 let _visitors_r2 =
2961 self#on_option self#on_hint env _visitors_this.f_ret in
2962 let _visitors_r3 = self#on_sid env _visitors_this.f_name in
2963 let _visitors_r4 =
2964 self#on_list self#on_tparam env _visitors_this.f_tparams in
2965 let _visitors_r5 =
2966 self#on_list self#on_where_constraint env
2967 _visitors_this.f_where_constraints
2969 let _visitors_r6 =
2970 self#on_fun_variadicity env _visitors_this.f_variadic in
2971 let _visitors_r7 =
2972 self#on_list self#on_fun_param env _visitors_this.f_params
2974 let _visitors_r8 = self#on_func_body env _visitors_this.f_body
2976 let _visitors_r9 =
2977 self#on_fun_kind env _visitors_this.f_fun_kind in
2978 let _visitors_r10 =
2979 self#on_list self#on_user_attribute env
2980 _visitors_this.f_user_attributes
2982 let _visitors_r11 =
2983 self#on_bool env _visitors_this.f_ret_by_ref in
2985 method on_UnnamedBody env _visitors_c0 =
2986 let _visitors_r0 = self#on_func_unnamed_body env _visitors_c0
2989 method on_NamedBody env _visitors_c0 =
2990 let _visitors_r0 = self#on_func_named_body env _visitors_c0 in
2992 method on_func_body env _visitors_this =
2993 match _visitors_this with
2994 | UnnamedBody _visitors_c0 ->
2995 self#on_UnnamedBody env _visitors_c0
2996 | NamedBody _visitors_c0 -> self#on_NamedBody env _visitors_c0
2997 method on_func_unnamed_body env _visitors_this =
2998 let _visitors_r0 =
2999 (fun _visitors_this -> ()) _visitors_this.fub_ast in
3000 let _visitors_r1 =
3001 (fun _visitors_this -> ()) _visitors_this.fub_tparams in
3002 let _visitors_r2 =
3003 (fun _visitors_this -> ()) _visitors_this.fub_namespace in
3005 method on_func_named_body env _visitors_this =
3006 let _visitors_r0 = self#on_block env _visitors_this.fnb_nast
3008 let _visitors_r1 = self#on_bool env _visitors_this.fnb_unsafe
3011 method on_user_attribute env _visitors_this =
3012 let _visitors_r0 = self#on_sid env _visitors_this.ua_name in
3013 let _visitors_r1 =
3014 self#on_list self#on_expr env _visitors_this.ua_params in
3016 method on_class_ env _visitors_this =
3017 let _visitors_r0 =
3018 self#on_env_annotation env _visitors_this.c_annotation in
3019 let _visitors_r1 =
3020 (fun _visitors_this -> ()) _visitors_this.c_mode in
3021 let _visitors_r2 = self#on_bool env _visitors_this.c_final in
3022 let _visitors_r3 = self#on_bool env _visitors_this.c_is_xhp in
3023 let _visitors_r4 = self#on_class_kind env _visitors_this.c_kind
3025 let _visitors_r5 = self#on_sid env _visitors_this.c_name in
3026 let _visitors_r6 =
3027 (fun _visitors_this -> ()) _visitors_this.c_tparams in
3028 let _visitors_r7 =
3029 self#on_list self#on_hint env _visitors_this.c_extends in
3030 let _visitors_r8 =
3031 self#on_list self#on_hint env _visitors_this.c_uses in
3032 let _visitors_r9 =
3033 self#on_list self#on_hint env _visitors_this.c_xhp_attr_uses
3035 let _visitors_r10 =
3036 self#on_list self#on_pstring env
3037 _visitors_this.c_xhp_category
3039 let _visitors_r11 =
3040 self#on_list self#on_hint env _visitors_this.c_req_extends
3042 let _visitors_r12 =
3043 self#on_list self#on_hint env _visitors_this.c_req_implements
3045 let _visitors_r13 =
3046 self#on_list self#on_hint env _visitors_this.c_implements in
3047 let _visitors_r14 =
3048 self#on_list self#on_class_const env _visitors_this.c_consts
3050 let _visitors_r15 =
3051 self#on_list self#on_class_typeconst env
3052 _visitors_this.c_typeconsts
3054 let _visitors_r16 =
3055 self#on_list self#on_class_var env
3056 _visitors_this.c_static_vars
3058 let _visitors_r17 =
3059 self#on_list self#on_class_var env _visitors_this.c_vars in
3060 let _visitors_r18 =
3061 self#on_option self#on_method_ env
3062 _visitors_this.c_constructor
3064 let _visitors_r19 =
3065 self#on_list self#on_method_ env
3066 _visitors_this.c_static_methods
3068 let _visitors_r20 =
3069 self#on_list self#on_method_ env _visitors_this.c_methods in
3070 let _visitors_r21 =
3071 self#on_list self#on_user_attribute env
3072 _visitors_this.c_user_attributes
3074 let _visitors_r22 =
3075 self#on_option self#on_enum_ env _visitors_this.c_enum in
3077 method on_class_const env
3078 (_visitors_c0,_visitors_c1,_visitors_c2) =
3079 let _visitors_r0 = self#on_option self#on_hint env _visitors_c0
3081 let _visitors_r1 = self#on_sid env _visitors_c1 in
3082 let _visitors_r2 = self#on_option self#on_expr env _visitors_c2
3085 method on_class_typeconst env _visitors_this =
3086 let _visitors_r0 = self#on_sid env _visitors_this.c_tconst_name
3088 let _visitors_r1 =
3089 self#on_option self#on_hint env
3090 _visitors_this.c_tconst_constraint
3092 let _visitors_r2 =
3093 self#on_option self#on_hint env _visitors_this.c_tconst_type
3096 method on_class_var env _visitors_this =
3097 let _visitors_r0 = self#on_bool env _visitors_this.cv_final in
3098 let _visitors_r1 = self#on_bool env _visitors_this.cv_is_xhp
3100 let _visitors_r2 =
3101 self#on_visibility env _visitors_this.cv_visibility in
3102 let _visitors_r3 =
3103 self#on_option self#on_hint env _visitors_this.cv_type in
3104 let _visitors_r4 = self#on_sid env _visitors_this.cv_id in
3105 let _visitors_r5 =
3106 self#on_option self#on_expr env _visitors_this.cv_expr in
3107 let _visitors_r6 =
3108 self#on_list self#on_user_attribute env
3109 _visitors_this.cv_user_attributes
3112 method on_method_ env _visitors_this =
3113 let _visitors_r0 =
3114 self#on_env_annotation env _visitors_this.m_annotation in
3115 let _visitors_r1 = self#on_bool env _visitors_this.m_final in
3116 let _visitors_r2 = self#on_bool env _visitors_this.m_abstract
3118 let _visitors_r3 =
3119 self#on_visibility env _visitors_this.m_visibility in
3120 let _visitors_r4 = self#on_sid env _visitors_this.m_name in
3121 let _visitors_r5 =
3122 self#on_list self#on_tparam env _visitors_this.m_tparams in
3123 let _visitors_r6 =
3124 self#on_list self#on_where_constraint env
3125 _visitors_this.m_where_constraints
3127 let _visitors_r7 =
3128 self#on_fun_variadicity env _visitors_this.m_variadic in
3129 let _visitors_r8 =
3130 self#on_list self#on_fun_param env _visitors_this.m_params
3132 let _visitors_r9 = self#on_func_body env _visitors_this.m_body
3134 let _visitors_r10 =
3135 self#on_fun_kind env _visitors_this.m_fun_kind in
3136 let _visitors_r11 =
3137 self#on_list self#on_user_attribute env
3138 _visitors_this.m_user_attributes
3140 let _visitors_r12 =
3141 self#on_option self#on_hint env _visitors_this.m_ret in
3142 let _visitors_r13 =
3143 self#on_bool env _visitors_this.m_ret_by_ref in
3145 method on_typedef env _visitors_this =
3146 let _visitors_r0 =
3147 self#on_env_annotation env _visitors_this.t_annotation in
3148 let _visitors_r1 = self#on_sid env _visitors_this.t_name in
3149 let _visitors_r2 =
3150 self#on_list self#on_tparam env _visitors_this.t_tparams in
3151 let _visitors_r3 =
3152 self#on_option self#on_hint env _visitors_this.t_constraint
3154 let _visitors_r4 = self#on_hint env _visitors_this.t_kind in
3155 let _visitors_r5 =
3156 self#on_list self#on_user_attribute env
3157 _visitors_this.t_user_attributes
3159 let _visitors_r6 =
3160 (fun _visitors_this -> ()) _visitors_this.t_mode in
3161 let _visitors_r7 =
3162 self#on_typedef_visibility env _visitors_this.t_vis in
3164 method on_gconst env _visitors_this =
3165 let _visitors_r0 =
3166 self#on_env_annotation env _visitors_this.cst_annotation in
3167 let _visitors_r1 =
3168 (fun _visitors_this -> ()) _visitors_this.cst_mode in
3169 let _visitors_r2 = self#on_sid env _visitors_this.cst_name in
3170 let _visitors_r3 =
3171 self#on_option self#on_hint env _visitors_this.cst_type in
3172 let _visitors_r4 =
3173 self#on_option self#on_expr env _visitors_this.cst_value in
3174 let _visitors_r5 =
3175 self#on_bool env _visitors_this.cst_is_define in
3177 method on_Fun env _visitors_c0 =
3178 let _visitors_r0 = self#on_fun_ env _visitors_c0 in ()
3179 method on_Class env _visitors_c0 =
3180 let _visitors_r0 = self#on_class_ env _visitors_c0 in ()
3181 method on_Typedef env _visitors_c0 =
3182 let _visitors_r0 = self#on_typedef env _visitors_c0 in ()
3183 method on_Constant env _visitors_c0 =
3184 let _visitors_r0 = self#on_gconst env _visitors_c0 in ()
3185 method on_def env _visitors_this =
3186 match _visitors_this with
3187 | Fun _visitors_c0 -> self#on_Fun env _visitors_c0
3188 | Class _visitors_c0 -> self#on_Class env _visitors_c0
3189 | Typedef _visitors_c0 -> self#on_Typedef env _visitors_c0
3190 | Constant _visitors_c0 -> self#on_Constant env _visitors_c0
3192 [@@@VISITORS.END ]
3194 include
3195 struct
3196 [@@@ocaml.warning "-4-26-27"]
3197 [@@@VISITORS.BEGIN ]
3198 class virtual ['self] reduce =
3199 object (self : 'self)
3200 inherit [_] reduce_defs
3201 method on_program env = self#on_list self#on_def env
3202 method on_expr_annotation env _visitors_this = self#zero
3203 method on_env_annotation env _visitors_this = self#zero
3204 method on_Fallthrough env = self#zero
3205 method on_Expr env _visitors_c0 =
3206 let _visitors_s0 = self#on_expr env _visitors_c0 in
3207 _visitors_s0
3208 method on_Break env _visitors_c0 =
3209 let _visitors_s0 = self#on_pos env _visitors_c0 in
3210 _visitors_s0
3211 method on_Continue env _visitors_c0 =
3212 let _visitors_s0 = self#on_pos env _visitors_c0 in
3213 _visitors_s0
3214 method on_Throw env _visitors_c0 _visitors_c1 =
3215 let _visitors_s0 = self#on_is_terminal env _visitors_c0 in
3216 let _visitors_s1 = self#on_expr env _visitors_c1 in
3217 self#plus _visitors_s0 _visitors_s1
3218 method on_Return env _visitors_c0 _visitors_c1 =
3219 let _visitors_s0 = self#on_pos env _visitors_c0 in
3220 let _visitors_s1 = self#on_option self#on_expr env _visitors_c1
3222 self#plus _visitors_s0 _visitors_s1
3223 method on_GotoLabel env _visitors_c0 =
3224 let _visitors_s0 = self#on_pstring env _visitors_c0 in
3225 _visitors_s0
3226 method on_Goto env _visitors_c0 =
3227 let _visitors_s0 = self#on_pstring env _visitors_c0 in
3228 _visitors_s0
3229 method on_Static_var env _visitors_c0 =
3230 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3232 _visitors_s0
3233 method on_Global_var env _visitors_c0 =
3234 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3236 _visitors_s0
3237 method on_If env _visitors_c0 _visitors_c1 _visitors_c2 =
3238 let _visitors_s0 = self#on_expr env _visitors_c0 in
3239 let _visitors_s1 = self#on_block env _visitors_c1 in
3240 let _visitors_s2 = self#on_block env _visitors_c2 in
3241 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3242 method on_Do env _visitors_c0 _visitors_c1 =
3243 let _visitors_s0 = self#on_block env _visitors_c0 in
3244 let _visitors_s1 = self#on_expr env _visitors_c1 in
3245 self#plus _visitors_s0 _visitors_s1
3246 method on_While env _visitors_c0 _visitors_c1 =
3247 let _visitors_s0 = self#on_expr env _visitors_c0 in
3248 let _visitors_s1 = self#on_block env _visitors_c1 in
3249 self#plus _visitors_s0 _visitors_s1
3250 method on_Using env _visitors_c0 _visitors_c1 _visitors_c2 =
3251 let _visitors_s0 = self#on_bool env _visitors_c0 in
3252 let _visitors_s1 = self#on_expr env _visitors_c1 in
3253 let _visitors_s2 = self#on_block env _visitors_c2 in
3254 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3255 method on_For env _visitors_c0 _visitors_c1 _visitors_c2
3256 _visitors_c3 =
3257 let _visitors_s0 = self#on_expr env _visitors_c0 in
3258 let _visitors_s1 = self#on_expr env _visitors_c1 in
3259 let _visitors_s2 = self#on_expr env _visitors_c2 in
3260 let _visitors_s3 = self#on_block env _visitors_c3 in
3261 self#plus
3262 (self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2)
3263 _visitors_s3
3264 method on_Switch env _visitors_c0 _visitors_c1 =
3265 let _visitors_s0 = self#on_expr env _visitors_c0 in
3266 let _visitors_s1 = self#on_list self#on_case env _visitors_c1
3268 self#plus _visitors_s0 _visitors_s1
3269 method on_Foreach env _visitors_c0 _visitors_c1 _visitors_c2 =
3270 let _visitors_s0 = self#on_expr env _visitors_c0 in
3271 let _visitors_s1 = self#on_as_expr env _visitors_c1 in
3272 let _visitors_s2 = self#on_block env _visitors_c2 in
3273 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3274 method on_Try env _visitors_c0 _visitors_c1 _visitors_c2 =
3275 let _visitors_s0 = self#on_block env _visitors_c0 in
3276 let _visitors_s1 = self#on_list self#on_catch env _visitors_c1
3278 let _visitors_s2 = self#on_block env _visitors_c2 in
3279 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3280 method on_Noop env = self#zero
3281 method on_stmt env _visitors_this =
3282 match _visitors_this with
3283 | Fallthrough -> self#on_Fallthrough env
3284 | Expr _visitors_c0 -> self#on_Expr env _visitors_c0
3285 | Break _visitors_c0 -> self#on_Break env _visitors_c0
3286 | Continue _visitors_c0 -> self#on_Continue env _visitors_c0
3287 | Throw (_visitors_c0,_visitors_c1) ->
3288 self#on_Throw env _visitors_c0 _visitors_c1
3289 | Return (_visitors_c0,_visitors_c1) ->
3290 self#on_Return env _visitors_c0 _visitors_c1
3291 | GotoLabel _visitors_c0 -> self#on_GotoLabel env _visitors_c0
3292 | Goto _visitors_c0 -> self#on_Goto env _visitors_c0
3293 | Static_var _visitors_c0 ->
3294 self#on_Static_var env _visitors_c0
3295 | Global_var _visitors_c0 ->
3296 self#on_Global_var env _visitors_c0
3297 | If (_visitors_c0,_visitors_c1,_visitors_c2) ->
3298 self#on_If env _visitors_c0 _visitors_c1 _visitors_c2
3299 | Do (_visitors_c0,_visitors_c1) ->
3300 self#on_Do env _visitors_c0 _visitors_c1
3301 | While (_visitors_c0,_visitors_c1) ->
3302 self#on_While env _visitors_c0 _visitors_c1
3303 | Using (_visitors_c0,_visitors_c1,_visitors_c2) ->
3304 self#on_Using env _visitors_c0 _visitors_c1 _visitors_c2
3305 | For (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3) ->
3306 self#on_For env _visitors_c0 _visitors_c1 _visitors_c2
3307 _visitors_c3
3308 | Switch (_visitors_c0,_visitors_c1) ->
3309 self#on_Switch env _visitors_c0 _visitors_c1
3310 | Foreach (_visitors_c0,_visitors_c1,_visitors_c2) ->
3311 self#on_Foreach env _visitors_c0 _visitors_c1 _visitors_c2
3312 | Try (_visitors_c0,_visitors_c1,_visitors_c2) ->
3313 self#on_Try env _visitors_c0 _visitors_c1 _visitors_c2
3314 | Noop -> self#on_Noop env
3315 method on_As_v env _visitors_c0 =
3316 let _visitors_s0 = self#on_expr env _visitors_c0 in
3317 _visitors_s0
3318 method on_As_kv env _visitors_c0 _visitors_c1 =
3319 let _visitors_s0 = self#on_expr env _visitors_c0 in
3320 let _visitors_s1 = self#on_expr env _visitors_c1 in
3321 self#plus _visitors_s0 _visitors_s1
3322 method on_Await_as_v env _visitors_c0 _visitors_c1 =
3323 let _visitors_s0 = self#on_pos env _visitors_c0 in
3324 let _visitors_s1 = self#on_expr env _visitors_c1 in
3325 self#plus _visitors_s0 _visitors_s1
3326 method on_Await_as_kv env _visitors_c0 _visitors_c1 _visitors_c2
3328 let _visitors_s0 = self#on_pos env _visitors_c0 in
3329 let _visitors_s1 = self#on_expr env _visitors_c1 in
3330 let _visitors_s2 = self#on_expr env _visitors_c2 in
3331 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3332 method on_as_expr env _visitors_this =
3333 match _visitors_this with
3334 | As_v _visitors_c0 -> self#on_As_v env _visitors_c0
3335 | As_kv (_visitors_c0,_visitors_c1) ->
3336 self#on_As_kv env _visitors_c0 _visitors_c1
3337 | Await_as_v (_visitors_c0,_visitors_c1) ->
3338 self#on_Await_as_v env _visitors_c0 _visitors_c1
3339 | Await_as_kv (_visitors_c0,_visitors_c1,_visitors_c2) ->
3340 self#on_Await_as_kv env _visitors_c0 _visitors_c1
3341 _visitors_c2
3342 method on_block env = self#on_list self#on_stmt env
3343 method on_CIparent env = self#zero
3344 method on_CIself env = self#zero
3345 method on_CIstatic env = self#zero
3346 method on_CIexpr env _visitors_c0 =
3347 let _visitors_s0 = self#on_expr env _visitors_c0 in
3348 _visitors_s0
3349 method on_CI env _visitors_c0 =
3350 let _visitors_s0 = self#on_instantiated_sid env _visitors_c0
3352 _visitors_s0
3353 method on_class_id env _visitors_this =
3354 match _visitors_this with
3355 | CIparent -> self#on_CIparent env
3356 | CIself -> self#on_CIself env
3357 | CIstatic -> self#on_CIstatic env
3358 | CIexpr _visitors_c0 -> self#on_CIexpr env _visitors_c0
3359 | CI _visitors_c0 -> self#on_CI env _visitors_c0
3360 method on_expr env (_visitors_c0,_visitors_c1) =
3361 let _visitors_s0 = self#on_expr_annotation env _visitors_c0 in
3362 let _visitors_s1 = self#on_expr_ env _visitors_c1 in
3363 self#plus _visitors_s0 _visitors_s1
3364 method on_Array env _visitors_c0 =
3365 let _visitors_s0 = self#on_list self#on_afield env _visitors_c0
3367 _visitors_s0
3368 method on_Darray env _visitors_c0 =
3369 let _visitors_s0 =
3370 self#on_list
3371 (fun env ->
3372 fun (_visitors_c0,_visitors_c1) ->
3373 let _visitors_s0 = self#on_expr env _visitors_c0 in
3374 let _visitors_s1 = self#on_expr env _visitors_c1 in
3375 self#plus _visitors_s0 _visitors_s1) env _visitors_c0
3377 _visitors_s0
3378 method on_Varray env _visitors_c0 =
3379 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3381 _visitors_s0
3382 method on_Shape env _visitors_c0 =
3383 let _visitors_s0 =
3384 self#on_shape_map self#on_expr env _visitors_c0 in
3385 _visitors_s0
3386 method on_ValCollection env _visitors_c0 _visitors_c1 =
3387 let _visitors_s0 = self#on_vc_kind env _visitors_c0 in
3388 let _visitors_s1 = self#on_list self#on_expr env _visitors_c1
3390 self#plus _visitors_s0 _visitors_s1
3391 method on_KeyValCollection env _visitors_c0 _visitors_c1 =
3392 let _visitors_s0 = self#on_kvc_kind env _visitors_c0 in
3393 let _visitors_s1 = self#on_list self#on_field env _visitors_c1
3395 self#plus _visitors_s0 _visitors_s1
3396 method on_Null env = self#zero
3397 method on_This env = self#zero
3398 method on_True env = self#zero
3399 method on_False env = self#zero
3400 method on_Id env _visitors_c0 =
3401 let _visitors_s0 = self#on_sid env _visitors_c0 in
3402 _visitors_s0
3403 method on_Lvar env _visitors_c0 =
3404 let _visitors_s0 = self#on_lid env _visitors_c0 in
3405 _visitors_s0
3406 method on_Dollar env _visitors_c0 =
3407 let _visitors_s0 = self#on_expr env _visitors_c0 in
3408 _visitors_s0
3409 method on_Dollardollar env _visitors_c0 =
3410 let _visitors_s0 = self#on_lid env _visitors_c0 in
3411 _visitors_s0
3412 method on_Clone env _visitors_c0 =
3413 let _visitors_s0 = self#on_expr env _visitors_c0 in
3414 _visitors_s0
3415 method on_Obj_get env _visitors_c0 _visitors_c1 _visitors_c2 =
3416 let _visitors_s0 = self#on_expr env _visitors_c0 in
3417 let _visitors_s1 = self#on_expr env _visitors_c1 in
3418 let _visitors_s2 = self#on_og_null_flavor env _visitors_c2 in
3419 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3420 method on_Array_get env _visitors_c0 _visitors_c1 =
3421 let _visitors_s0 = self#on_expr env _visitors_c0 in
3422 let _visitors_s1 = self#on_option self#on_expr env _visitors_c1
3424 self#plus _visitors_s0 _visitors_s1
3425 method on_Class_get env _visitors_c0 _visitors_c1 =
3426 let _visitors_s0 = self#on_class_id env _visitors_c0 in
3427 let _visitors_s1 = self#on_pstring env _visitors_c1 in
3428 self#plus _visitors_s0 _visitors_s1
3429 method on_Class_const env _visitors_c0 _visitors_c1 =
3430 let _visitors_s0 = self#on_class_id env _visitors_c0 in
3431 let _visitors_s1 = self#on_pstring env _visitors_c1 in
3432 self#plus _visitors_s0 _visitors_s1
3433 method on_Call env _visitors_c0 _visitors_c1 _visitors_c2
3434 _visitors_c3 _visitors_c4 =
3435 let _visitors_s0 = self#on_call_type env _visitors_c0 in
3436 let _visitors_s1 = self#on_expr env _visitors_c1 in
3437 let _visitors_s2 = self#on_list self#on_hint env _visitors_c2
3439 let _visitors_s3 = self#on_list self#on_expr env _visitors_c3
3441 let _visitors_s4 = self#on_list self#on_expr env _visitors_c4
3443 self#plus
3444 (self#plus
3445 (self#plus (self#plus _visitors_s0 _visitors_s1)
3446 _visitors_s2) _visitors_s3) _visitors_s4
3447 method on_Int env _visitors_c0 =
3448 let _visitors_s0 = self#on_pstring env _visitors_c0 in
3449 _visitors_s0
3450 method on_Float env _visitors_c0 =
3451 let _visitors_s0 = self#on_pstring env _visitors_c0 in
3452 _visitors_s0
3453 method on_String env _visitors_c0 =
3454 let _visitors_s0 = self#on_pstring env _visitors_c0 in
3455 _visitors_s0
3456 method on_String2 env _visitors_c0 =
3457 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3459 _visitors_s0
3460 method on_Yield env _visitors_c0 =
3461 let _visitors_s0 = self#on_afield env _visitors_c0 in
3462 _visitors_s0
3463 method on_Yield_break env = self#zero
3464 method on_Await env _visitors_c0 =
3465 let _visitors_s0 = self#on_expr env _visitors_c0 in
3466 _visitors_s0
3467 method on_Suspend env _visitors_c0 =
3468 let _visitors_s0 = self#on_expr env _visitors_c0 in
3469 _visitors_s0
3470 method on_List env _visitors_c0 =
3471 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3473 _visitors_s0
3474 method on_Expr_list env _visitors_c0 =
3475 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3477 _visitors_s0
3478 method on_Cast env _visitors_c0 _visitors_c1 =
3479 let _visitors_s0 = self#on_hint env _visitors_c0 in
3480 let _visitors_s1 = self#on_expr env _visitors_c1 in
3481 self#plus _visitors_s0 _visitors_s1
3482 method on_Unop env _visitors_c0 _visitors_c1 =
3483 let _visitors_s0 = self#on_uop env _visitors_c0 in
3484 let _visitors_s1 = self#on_expr env _visitors_c1 in
3485 self#plus _visitors_s0 _visitors_s1
3486 method on_Binop env _visitors_c0 _visitors_c1 _visitors_c2 =
3487 let _visitors_s0 = self#on_bop env _visitors_c0 in
3488 let _visitors_s1 = self#on_expr env _visitors_c1 in
3489 let _visitors_s2 = self#on_expr env _visitors_c2 in
3490 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3491 method on_Pipe env _visitors_c0 _visitors_c1 _visitors_c2 =
3492 let _visitors_s0 = self#on_lid env _visitors_c0 in
3493 let _visitors_s1 = self#on_expr env _visitors_c1 in
3494 let _visitors_s2 = self#on_expr env _visitors_c2 in
3495 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3496 method on_Eif env _visitors_c0 _visitors_c1 _visitors_c2 =
3497 let _visitors_s0 = self#on_expr env _visitors_c0 in
3498 let _visitors_s1 = self#on_option self#on_expr env _visitors_c1
3500 let _visitors_s2 = self#on_expr env _visitors_c2 in
3501 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3502 method on_NullCoalesce env _visitors_c0 _visitors_c1 =
3503 let _visitors_s0 = self#on_expr env _visitors_c0 in
3504 let _visitors_s1 = self#on_expr env _visitors_c1 in
3505 self#plus _visitors_s0 _visitors_s1
3506 method on_InstanceOf env _visitors_c0 _visitors_c1 =
3507 let _visitors_s0 = self#on_expr env _visitors_c0 in
3508 let _visitors_s1 = self#on_class_id env _visitors_c1 in
3509 self#plus _visitors_s0 _visitors_s1
3510 method on_Is env _visitors_c0 _visitors_c1 =
3511 let _visitors_s0 = self#on_expr env _visitors_c0 in
3512 let _visitors_s1 = self#on_hint env _visitors_c1 in
3513 self#plus _visitors_s0 _visitors_s1
3514 method on_New env _visitors_c0 _visitors_c1 _visitors_c2 =
3515 let _visitors_s0 = self#on_class_id env _visitors_c0 in
3516 let _visitors_s1 = self#on_list self#on_expr env _visitors_c1
3518 let _visitors_s2 = self#on_list self#on_expr env _visitors_c2
3520 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3521 method on_Efun env _visitors_c0 _visitors_c1 =
3522 let _visitors_s0 = self#on_fun_ env _visitors_c0 in
3523 let _visitors_s1 = self#on_list self#on_lid env _visitors_c1
3525 self#plus _visitors_s0 _visitors_s1
3526 method on_Xml env _visitors_c0 _visitors_c1 _visitors_c2 =
3527 let _visitors_s0 = self#on_sid env _visitors_c0 in
3528 let _visitors_s1 =
3529 self#on_list self#on_xhp_attribute env _visitors_c1 in
3530 let _visitors_s2 = self#on_list self#on_expr env _visitors_c2
3532 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3533 method on_Callconv env _visitors_c0 _visitors_c1 =
3534 let _visitors_s0 = self#on_param_kind env _visitors_c0 in
3535 let _visitors_s1 = self#on_expr env _visitors_c1 in
3536 self#plus _visitors_s0 _visitors_s1
3537 method on_Lplaceholder env _visitors_c0 =
3538 let _visitors_s0 = self#on_pos env _visitors_c0 in
3539 _visitors_s0
3540 method on_Fun_id env _visitors_c0 =
3541 let _visitors_s0 = self#on_sid env _visitors_c0 in
3542 _visitors_s0
3543 method on_Method_id env _visitors_c0 _visitors_c1 =
3544 let _visitors_s0 = self#on_expr env _visitors_c0 in
3545 let _visitors_s1 = self#on_pstring env _visitors_c1 in
3546 self#plus _visitors_s0 _visitors_s1
3547 method on_Method_caller env _visitors_c0 _visitors_c1 =
3548 let _visitors_s0 = self#on_sid env _visitors_c0 in
3549 let _visitors_s1 = self#on_pstring env _visitors_c1 in
3550 self#plus _visitors_s0 _visitors_s1
3551 method on_Smethod_id env _visitors_c0 _visitors_c1 =
3552 let _visitors_s0 = self#on_sid env _visitors_c0 in
3553 let _visitors_s1 = self#on_pstring env _visitors_c1 in
3554 self#plus _visitors_s0 _visitors_s1
3555 method on_Special_func env _visitors_c0 =
3556 let _visitors_s0 = self#on_special_func env _visitors_c0 in
3557 _visitors_s0
3558 method on_Pair env _visitors_c0 _visitors_c1 =
3559 let _visitors_s0 = self#on_expr env _visitors_c0 in
3560 let _visitors_s1 = self#on_expr env _visitors_c1 in
3561 self#plus _visitors_s0 _visitors_s1
3562 method on_Assert env _visitors_c0 =
3563 let _visitors_s0 = self#on_assert_expr env _visitors_c0 in
3564 _visitors_s0
3565 method on_Typename env _visitors_c0 =
3566 let _visitors_s0 = self#on_sid env _visitors_c0 in
3567 _visitors_s0
3568 method on_Any env = self#zero
3569 method on_expr_ env _visitors_this =
3570 match _visitors_this with
3571 | Array _visitors_c0 -> self#on_Array env _visitors_c0
3572 | Darray _visitors_c0 -> self#on_Darray env _visitors_c0
3573 | Varray _visitors_c0 -> self#on_Varray env _visitors_c0
3574 | Shape _visitors_c0 -> self#on_Shape env _visitors_c0
3575 | ValCollection (_visitors_c0,_visitors_c1) ->
3576 self#on_ValCollection env _visitors_c0 _visitors_c1
3577 | KeyValCollection (_visitors_c0,_visitors_c1) ->
3578 self#on_KeyValCollection env _visitors_c0 _visitors_c1
3579 | Null -> self#on_Null env
3580 | This -> self#on_This env
3581 | True -> self#on_True env
3582 | False -> self#on_False env
3583 | Id _visitors_c0 -> self#on_Id env _visitors_c0
3584 | Lvar _visitors_c0 -> self#on_Lvar env _visitors_c0
3585 | Dollar _visitors_c0 -> self#on_Dollar env _visitors_c0
3586 | Dollardollar _visitors_c0 ->
3587 self#on_Dollardollar env _visitors_c0
3588 | Clone _visitors_c0 -> self#on_Clone env _visitors_c0
3589 | Obj_get (_visitors_c0,_visitors_c1,_visitors_c2) ->
3590 self#on_Obj_get env _visitors_c0 _visitors_c1 _visitors_c2
3591 | Array_get (_visitors_c0,_visitors_c1) ->
3592 self#on_Array_get env _visitors_c0 _visitors_c1
3593 | Class_get (_visitors_c0,_visitors_c1) ->
3594 self#on_Class_get env _visitors_c0 _visitors_c1
3595 | Class_const (_visitors_c0,_visitors_c1) ->
3596 self#on_Class_const env _visitors_c0 _visitors_c1
3597 | Call
3598 (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3,_visitors_c4)
3600 self#on_Call env _visitors_c0 _visitors_c1 _visitors_c2
3601 _visitors_c3 _visitors_c4
3602 | Int _visitors_c0 -> self#on_Int env _visitors_c0
3603 | Float _visitors_c0 -> self#on_Float env _visitors_c0
3604 | String _visitors_c0 -> self#on_String env _visitors_c0
3605 | String2 _visitors_c0 -> self#on_String2 env _visitors_c0
3606 | Yield _visitors_c0 -> self#on_Yield env _visitors_c0
3607 | Yield_break -> self#on_Yield_break env
3608 | Await _visitors_c0 -> self#on_Await env _visitors_c0
3609 | Suspend _visitors_c0 -> self#on_Suspend env _visitors_c0
3610 | List _visitors_c0 -> self#on_List env _visitors_c0
3611 | Expr_list _visitors_c0 -> self#on_Expr_list env _visitors_c0
3612 | Cast (_visitors_c0,_visitors_c1) ->
3613 self#on_Cast env _visitors_c0 _visitors_c1
3614 | Unop (_visitors_c0,_visitors_c1) ->
3615 self#on_Unop env _visitors_c0 _visitors_c1
3616 | Binop (_visitors_c0,_visitors_c1,_visitors_c2) ->
3617 self#on_Binop env _visitors_c0 _visitors_c1 _visitors_c2
3618 | Pipe (_visitors_c0,_visitors_c1,_visitors_c2) ->
3619 self#on_Pipe env _visitors_c0 _visitors_c1 _visitors_c2
3620 | Eif (_visitors_c0,_visitors_c1,_visitors_c2) ->
3621 self#on_Eif env _visitors_c0 _visitors_c1 _visitors_c2
3622 | NullCoalesce (_visitors_c0,_visitors_c1) ->
3623 self#on_NullCoalesce env _visitors_c0 _visitors_c1
3624 | InstanceOf (_visitors_c0,_visitors_c1) ->
3625 self#on_InstanceOf env _visitors_c0 _visitors_c1
3626 | Is (_visitors_c0,_visitors_c1) ->
3627 self#on_Is env _visitors_c0 _visitors_c1
3628 | New (_visitors_c0,_visitors_c1,_visitors_c2) ->
3629 self#on_New env _visitors_c0 _visitors_c1 _visitors_c2
3630 | Efun (_visitors_c0,_visitors_c1) ->
3631 self#on_Efun env _visitors_c0 _visitors_c1
3632 | Xml (_visitors_c0,_visitors_c1,_visitors_c2) ->
3633 self#on_Xml env _visitors_c0 _visitors_c1 _visitors_c2
3634 | Callconv (_visitors_c0,_visitors_c1) ->
3635 self#on_Callconv env _visitors_c0 _visitors_c1
3636 | Lplaceholder _visitors_c0 ->
3637 self#on_Lplaceholder env _visitors_c0
3638 | Fun_id _visitors_c0 -> self#on_Fun_id env _visitors_c0
3639 | Method_id (_visitors_c0,_visitors_c1) ->
3640 self#on_Method_id env _visitors_c0 _visitors_c1
3641 | Method_caller (_visitors_c0,_visitors_c1) ->
3642 self#on_Method_caller env _visitors_c0 _visitors_c1
3643 | Smethod_id (_visitors_c0,_visitors_c1) ->
3644 self#on_Smethod_id env _visitors_c0 _visitors_c1
3645 | Special_func _visitors_c0 ->
3646 self#on_Special_func env _visitors_c0
3647 | Pair (_visitors_c0,_visitors_c1) ->
3648 self#on_Pair env _visitors_c0 _visitors_c1
3649 | Assert _visitors_c0 -> self#on_Assert env _visitors_c0
3650 | Typename _visitors_c0 -> self#on_Typename env _visitors_c0
3651 | Any -> self#on_Any env
3652 method on_AE_assert env _visitors_c0 =
3653 let _visitors_s0 = self#on_expr env _visitors_c0 in
3654 _visitors_s0
3655 method on_assert_expr env _visitors_this =
3656 match _visitors_this with
3657 | AE_assert _visitors_c0 -> self#on_AE_assert env _visitors_c0
3658 method on_Default env _visitors_c0 =
3659 let _visitors_s0 = self#on_block env _visitors_c0 in
3660 _visitors_s0
3661 method on_Case env _visitors_c0 _visitors_c1 =
3662 let _visitors_s0 = self#on_expr env _visitors_c0 in
3663 let _visitors_s1 = self#on_block env _visitors_c1 in
3664 self#plus _visitors_s0 _visitors_s1
3665 method on_case env _visitors_this =
3666 match _visitors_this with
3667 | Default _visitors_c0 -> self#on_Default env _visitors_c0
3668 | Case (_visitors_c0,_visitors_c1) ->
3669 self#on_Case env _visitors_c0 _visitors_c1
3670 method on_catch env (_visitors_c0,_visitors_c1,_visitors_c2) =
3671 let _visitors_s0 = self#on_sid env _visitors_c0 in
3672 let _visitors_s1 = self#on_lid env _visitors_c1 in
3673 let _visitors_s2 = self#on_block env _visitors_c2 in
3674 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3675 method on_field env (_visitors_c0,_visitors_c1) =
3676 let _visitors_s0 = self#on_expr env _visitors_c0 in
3677 let _visitors_s1 = self#on_expr env _visitors_c1 in
3678 self#plus _visitors_s0 _visitors_s1
3679 method on_AFvalue env _visitors_c0 =
3680 let _visitors_s0 = self#on_expr env _visitors_c0 in
3681 _visitors_s0
3682 method on_AFkvalue env _visitors_c0 _visitors_c1 =
3683 let _visitors_s0 = self#on_expr env _visitors_c0 in
3684 let _visitors_s1 = self#on_expr env _visitors_c1 in
3685 self#plus _visitors_s0 _visitors_s1
3686 method on_afield env _visitors_this =
3687 match _visitors_this with
3688 | AFvalue _visitors_c0 -> self#on_AFvalue env _visitors_c0
3689 | AFkvalue (_visitors_c0,_visitors_c1) ->
3690 self#on_AFkvalue env _visitors_c0 _visitors_c1
3691 method on_Xhp_simple env _visitors_c0 _visitors_c1 =
3692 let _visitors_s0 = self#on_pstring env _visitors_c0 in
3693 let _visitors_s1 = self#on_expr env _visitors_c1 in
3694 self#plus _visitors_s0 _visitors_s1
3695 method on_Xhp_spread env _visitors_c0 =
3696 let _visitors_s0 = self#on_expr env _visitors_c0 in
3697 _visitors_s0
3698 method on_xhp_attribute env _visitors_this =
3699 match _visitors_this with
3700 | Xhp_simple (_visitors_c0,_visitors_c1) ->
3701 self#on_Xhp_simple env _visitors_c0 _visitors_c1
3702 | Xhp_spread _visitors_c0 ->
3703 self#on_Xhp_spread env _visitors_c0
3704 method on_Gena env _visitors_c0 =
3705 let _visitors_s0 = self#on_expr env _visitors_c0 in
3706 _visitors_s0
3707 method on_Genva env _visitors_c0 =
3708 let _visitors_s0 = self#on_list self#on_expr env _visitors_c0
3710 _visitors_s0
3711 method on_Gen_array_rec env _visitors_c0 =
3712 let _visitors_s0 = self#on_expr env _visitors_c0 in
3713 _visitors_s0
3714 method on_special_func env _visitors_this =
3715 match _visitors_this with
3716 | Gena _visitors_c0 -> self#on_Gena env _visitors_c0
3717 | Genva _visitors_c0 -> self#on_Genva env _visitors_c0
3718 | Gen_array_rec _visitors_c0 ->
3719 self#on_Gen_array_rec env _visitors_c0
3720 method on_is_reference env = self#on_bool env
3721 method on_is_variadic env = self#on_bool env
3722 method on_fun_param env _visitors_this =
3723 let _visitors_s0 =
3724 self#on_option self#on_hint env _visitors_this.param_hint in
3725 let _visitors_s1 =
3726 self#on_is_reference env _visitors_this.param_is_reference
3728 let _visitors_s2 =
3729 self#on_is_variadic env _visitors_this.param_is_variadic in
3730 let _visitors_s3 = self#on_pos env _visitors_this.param_pos in
3731 let _visitors_s4 = self#on_string env _visitors_this.param_name
3733 let _visitors_s5 =
3734 self#on_option self#on_expr env _visitors_this.param_expr in
3735 let _visitors_s6 =
3736 self#on_option self#on_param_kind env
3737 _visitors_this.param_callconv
3739 let _visitors_s7 =
3740 self#on_list self#on_user_attribute env
3741 _visitors_this.param_user_attributes
3743 self#plus
3744 (self#plus
3745 (self#plus
3746 (self#plus
3747 (self#plus
3748 (self#plus (self#plus _visitors_s0 _visitors_s1)
3749 _visitors_s2) _visitors_s3) _visitors_s4)
3750 _visitors_s5) _visitors_s6) _visitors_s7
3751 method on_FVvariadicArg env _visitors_c0 =
3752 let _visitors_s0 = self#on_fun_param env _visitors_c0 in
3753 _visitors_s0
3754 method on_FVellipsis env = self#zero
3755 method on_FVnonVariadic env = self#zero
3756 method on_fun_variadicity env _visitors_this =
3757 match _visitors_this with
3758 | FVvariadicArg _visitors_c0 ->
3759 self#on_FVvariadicArg env _visitors_c0
3760 | FVellipsis -> self#on_FVellipsis env
3761 | FVnonVariadic -> self#on_FVnonVariadic env
3762 method on_fun_ env _visitors_this =
3763 let _visitors_s0 =
3764 self#on_env_annotation env _visitors_this.f_annotation in
3765 let _visitors_s1 =
3766 (fun _visitors_this -> self#zero) _visitors_this.f_mode in
3767 let _visitors_s2 =
3768 self#on_option self#on_hint env _visitors_this.f_ret in
3769 let _visitors_s3 = self#on_sid env _visitors_this.f_name in
3770 let _visitors_s4 =
3771 self#on_list self#on_tparam env _visitors_this.f_tparams in
3772 let _visitors_s5 =
3773 self#on_list self#on_where_constraint env
3774 _visitors_this.f_where_constraints
3776 let _visitors_s6 =
3777 self#on_fun_variadicity env _visitors_this.f_variadic in
3778 let _visitors_s7 =
3779 self#on_list self#on_fun_param env _visitors_this.f_params
3781 let _visitors_s8 = self#on_func_body env _visitors_this.f_body
3783 let _visitors_s9 =
3784 self#on_fun_kind env _visitors_this.f_fun_kind in
3785 let _visitors_s10 =
3786 self#on_list self#on_user_attribute env
3787 _visitors_this.f_user_attributes
3789 let _visitors_s11 =
3790 self#on_bool env _visitors_this.f_ret_by_ref in
3791 self#plus
3792 (self#plus
3793 (self#plus
3794 (self#plus
3795 (self#plus
3796 (self#plus
3797 (self#plus
3798 (self#plus
3799 (self#plus
3800 (self#plus
3801 (self#plus _visitors_s0
3802 _visitors_s1) _visitors_s2)
3803 _visitors_s3) _visitors_s4)
3804 _visitors_s5) _visitors_s6) _visitors_s7)
3805 _visitors_s8) _visitors_s9) _visitors_s10)
3806 _visitors_s11
3807 method on_UnnamedBody env _visitors_c0 =
3808 let _visitors_s0 = self#on_func_unnamed_body env _visitors_c0
3810 _visitors_s0
3811 method on_NamedBody env _visitors_c0 =
3812 let _visitors_s0 = self#on_func_named_body env _visitors_c0 in
3813 _visitors_s0
3814 method on_func_body env _visitors_this =
3815 match _visitors_this with
3816 | UnnamedBody _visitors_c0 ->
3817 self#on_UnnamedBody env _visitors_c0
3818 | NamedBody _visitors_c0 -> self#on_NamedBody env _visitors_c0
3819 method on_func_unnamed_body env _visitors_this =
3820 let _visitors_s0 =
3821 (fun _visitors_this -> self#zero) _visitors_this.fub_ast in
3822 let _visitors_s1 =
3823 (fun _visitors_this -> self#zero) _visitors_this.fub_tparams
3825 let _visitors_s2 =
3826 (fun _visitors_this -> self#zero)
3827 _visitors_this.fub_namespace
3829 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3830 method on_func_named_body env _visitors_this =
3831 let _visitors_s0 = self#on_block env _visitors_this.fnb_nast
3833 let _visitors_s1 = self#on_bool env _visitors_this.fnb_unsafe
3835 self#plus _visitors_s0 _visitors_s1
3836 method on_user_attribute env _visitors_this =
3837 let _visitors_s0 = self#on_sid env _visitors_this.ua_name in
3838 let _visitors_s1 =
3839 self#on_list self#on_expr env _visitors_this.ua_params in
3840 self#plus _visitors_s0 _visitors_s1
3841 method on_class_ env _visitors_this =
3842 let _visitors_s0 =
3843 self#on_env_annotation env _visitors_this.c_annotation in
3844 let _visitors_s1 =
3845 (fun _visitors_this -> self#zero) _visitors_this.c_mode in
3846 let _visitors_s2 = self#on_bool env _visitors_this.c_final in
3847 let _visitors_s3 = self#on_bool env _visitors_this.c_is_xhp in
3848 let _visitors_s4 = self#on_class_kind env _visitors_this.c_kind
3850 let _visitors_s5 = self#on_sid env _visitors_this.c_name in
3851 let _visitors_s6 =
3852 (fun _visitors_this -> self#zero) _visitors_this.c_tparams
3854 let _visitors_s7 =
3855 self#on_list self#on_hint env _visitors_this.c_extends in
3856 let _visitors_s8 =
3857 self#on_list self#on_hint env _visitors_this.c_uses in
3858 let _visitors_s9 =
3859 self#on_list self#on_hint env _visitors_this.c_xhp_attr_uses
3861 let _visitors_s10 =
3862 self#on_list self#on_pstring env
3863 _visitors_this.c_xhp_category
3865 let _visitors_s11 =
3866 self#on_list self#on_hint env _visitors_this.c_req_extends
3868 let _visitors_s12 =
3869 self#on_list self#on_hint env _visitors_this.c_req_implements
3871 let _visitors_s13 =
3872 self#on_list self#on_hint env _visitors_this.c_implements in
3873 let _visitors_s14 =
3874 self#on_list self#on_class_const env _visitors_this.c_consts
3876 let _visitors_s15 =
3877 self#on_list self#on_class_typeconst env
3878 _visitors_this.c_typeconsts
3880 let _visitors_s16 =
3881 self#on_list self#on_class_var env
3882 _visitors_this.c_static_vars
3884 let _visitors_s17 =
3885 self#on_list self#on_class_var env _visitors_this.c_vars in
3886 let _visitors_s18 =
3887 self#on_option self#on_method_ env
3888 _visitors_this.c_constructor
3890 let _visitors_s19 =
3891 self#on_list self#on_method_ env
3892 _visitors_this.c_static_methods
3894 let _visitors_s20 =
3895 self#on_list self#on_method_ env _visitors_this.c_methods in
3896 let _visitors_s21 =
3897 self#on_list self#on_user_attribute env
3898 _visitors_this.c_user_attributes
3900 let _visitors_s22 =
3901 self#on_option self#on_enum_ env _visitors_this.c_enum in
3902 self#plus
3903 (self#plus
3904 (self#plus
3905 (self#plus
3906 (self#plus
3907 (self#plus
3908 (self#plus
3909 (self#plus
3910 (self#plus
3911 (self#plus
3912 (self#plus
3913 (self#plus
3914 (self#plus
3915 (self#plus
3916 (self#plus
3917 (self#plus
3918 (self#plus
3919 (self#plus
3920 (self#plus
3921 (self#plus
3922 (self#plus
3923 (self#plus
3924 _visitors_s0
3925 _visitors_s1)
3926 _visitors_s2)
3927 _visitors_s3)
3928 _visitors_s4)
3929 _visitors_s5)
3930 _visitors_s6)
3931 _visitors_s7)
3932 _visitors_s8)
3933 _visitors_s9)
3934 _visitors_s10)
3935 _visitors_s11) _visitors_s12)
3936 _visitors_s13) _visitors_s14)
3937 _visitors_s15) _visitors_s16)
3938 _visitors_s17) _visitors_s18) _visitors_s19)
3939 _visitors_s20) _visitors_s21) _visitors_s22
3940 method on_class_const env
3941 (_visitors_c0,_visitors_c1,_visitors_c2) =
3942 let _visitors_s0 = self#on_option self#on_hint env _visitors_c0
3944 let _visitors_s1 = self#on_sid env _visitors_c1 in
3945 let _visitors_s2 = self#on_option self#on_expr env _visitors_c2
3947 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3948 method on_class_typeconst env _visitors_this =
3949 let _visitors_s0 = self#on_sid env _visitors_this.c_tconst_name
3951 let _visitors_s1 =
3952 self#on_option self#on_hint env
3953 _visitors_this.c_tconst_constraint
3955 let _visitors_s2 =
3956 self#on_option self#on_hint env _visitors_this.c_tconst_type
3958 self#plus (self#plus _visitors_s0 _visitors_s1) _visitors_s2
3959 method on_class_var env _visitors_this =
3960 let _visitors_s0 = self#on_bool env _visitors_this.cv_final in
3961 let _visitors_s1 = self#on_bool env _visitors_this.cv_is_xhp
3963 let _visitors_s2 =
3964 self#on_visibility env _visitors_this.cv_visibility in
3965 let _visitors_s3 =
3966 self#on_option self#on_hint env _visitors_this.cv_type in
3967 let _visitors_s4 = self#on_sid env _visitors_this.cv_id in
3968 let _visitors_s5 =
3969 self#on_option self#on_expr env _visitors_this.cv_expr in
3970 let _visitors_s6 =
3971 self#on_list self#on_user_attribute env
3972 _visitors_this.cv_user_attributes
3974 self#plus
3975 (self#plus
3976 (self#plus
3977 (self#plus
3978 (self#plus (self#plus _visitors_s0 _visitors_s1)
3979 _visitors_s2) _visitors_s3) _visitors_s4)
3980 _visitors_s5) _visitors_s6
3981 method on_method_ env _visitors_this =
3982 let _visitors_s0 =
3983 self#on_env_annotation env _visitors_this.m_annotation in
3984 let _visitors_s1 = self#on_bool env _visitors_this.m_final in
3985 let _visitors_s2 = self#on_bool env _visitors_this.m_abstract
3987 let _visitors_s3 =
3988 self#on_visibility env _visitors_this.m_visibility in
3989 let _visitors_s4 = self#on_sid env _visitors_this.m_name in
3990 let _visitors_s5 =
3991 self#on_list self#on_tparam env _visitors_this.m_tparams in
3992 let _visitors_s6 =
3993 self#on_list self#on_where_constraint env
3994 _visitors_this.m_where_constraints
3996 let _visitors_s7 =
3997 self#on_fun_variadicity env _visitors_this.m_variadic in
3998 let _visitors_s8 =
3999 self#on_list self#on_fun_param env _visitors_this.m_params
4001 let _visitors_s9 = self#on_func_body env _visitors_this.m_body
4003 let _visitors_s10 =
4004 self#on_fun_kind env _visitors_this.m_fun_kind in
4005 let _visitors_s11 =
4006 self#on_list self#on_user_attribute env
4007 _visitors_this.m_user_attributes
4009 let _visitors_s12 =
4010 self#on_option self#on_hint env _visitors_this.m_ret in
4011 let _visitors_s13 =
4012 self#on_bool env _visitors_this.m_ret_by_ref in
4013 self#plus
4014 (self#plus
4015 (self#plus
4016 (self#plus
4017 (self#plus
4018 (self#plus
4019 (self#plus
4020 (self#plus
4021 (self#plus
4022 (self#plus
4023 (self#plus
4024 (self#plus
4025 (self#plus _visitors_s0
4026 _visitors_s1)
4027 _visitors_s2) _visitors_s3)
4028 _visitors_s4) _visitors_s5)
4029 _visitors_s6) _visitors_s7) _visitors_s8)
4030 _visitors_s9) _visitors_s10) _visitors_s11)
4031 _visitors_s12) _visitors_s13
4032 method on_typedef env _visitors_this =
4033 let _visitors_s0 =
4034 self#on_env_annotation env _visitors_this.t_annotation in
4035 let _visitors_s1 = self#on_sid env _visitors_this.t_name in
4036 let _visitors_s2 =
4037 self#on_list self#on_tparam env _visitors_this.t_tparams in
4038 let _visitors_s3 =
4039 self#on_option self#on_hint env _visitors_this.t_constraint
4041 let _visitors_s4 = self#on_hint env _visitors_this.t_kind in
4042 let _visitors_s5 =
4043 self#on_list self#on_user_attribute env
4044 _visitors_this.t_user_attributes
4046 let _visitors_s6 =
4047 (fun _visitors_this -> self#zero) _visitors_this.t_mode in
4048 let _visitors_s7 =
4049 self#on_typedef_visibility env _visitors_this.t_vis in
4050 self#plus
4051 (self#plus
4052 (self#plus
4053 (self#plus
4054 (self#plus
4055 (self#plus (self#plus _visitors_s0 _visitors_s1)
4056 _visitors_s2) _visitors_s3) _visitors_s4)
4057 _visitors_s5) _visitors_s6) _visitors_s7
4058 method on_gconst env _visitors_this =
4059 let _visitors_s0 =
4060 self#on_env_annotation env _visitors_this.cst_annotation in
4061 let _visitors_s1 =
4062 (fun _visitors_this -> self#zero) _visitors_this.cst_mode
4064 let _visitors_s2 = self#on_sid env _visitors_this.cst_name in
4065 let _visitors_s3 =
4066 self#on_option self#on_hint env _visitors_this.cst_type in
4067 let _visitors_s4 =
4068 self#on_option self#on_expr env _visitors_this.cst_value in
4069 let _visitors_s5 =
4070 self#on_bool env _visitors_this.cst_is_define in
4071 self#plus
4072 (self#plus
4073 (self#plus
4074 (self#plus (self#plus _visitors_s0 _visitors_s1)
4075 _visitors_s2) _visitors_s3) _visitors_s4)
4076 _visitors_s5
4077 method on_Fun env _visitors_c0 =
4078 let _visitors_s0 = self#on_fun_ env _visitors_c0 in
4079 _visitors_s0
4080 method on_Class env _visitors_c0 =
4081 let _visitors_s0 = self#on_class_ env _visitors_c0 in
4082 _visitors_s0
4083 method on_Typedef env _visitors_c0 =
4084 let _visitors_s0 = self#on_typedef env _visitors_c0 in
4085 _visitors_s0
4086 method on_Constant env _visitors_c0 =
4087 let _visitors_s0 = self#on_gconst env _visitors_c0 in
4088 _visitors_s0
4089 method on_def env _visitors_this =
4090 match _visitors_this with
4091 | Fun _visitors_c0 -> self#on_Fun env _visitors_c0
4092 | Class _visitors_c0 -> self#on_Class env _visitors_c0
4093 | Typedef _visitors_c0 -> self#on_Typedef env _visitors_c0
4094 | Constant _visitors_c0 -> self#on_Constant env _visitors_c0
4096 [@@@VISITORS.END ]
4098 include
4099 struct
4100 [@@@ocaml.warning "-4-26-27"]
4101 [@@@VISITORS.BEGIN ]
4102 class virtual ['self] map =
4103 object (self : 'self)
4104 inherit [_] map_defs
4105 method on_program env = self#on_list self#on_def env
4106 method on_expr_annotation env _visitors_this = _visitors_this
4107 method on_env_annotation env _visitors_this = _visitors_this
4108 method on_Fallthrough env = Fallthrough
4109 method on_Expr env _visitors_c0 =
4110 let _visitors_r0 = self#on_expr env _visitors_c0 in
4111 Expr _visitors_r0
4112 method on_Break env _visitors_c0 =
4113 let _visitors_r0 = self#on_pos env _visitors_c0 in
4114 Break _visitors_r0
4115 method on_Continue env _visitors_c0 =
4116 let _visitors_r0 = self#on_pos env _visitors_c0 in
4117 Continue _visitors_r0
4118 method on_Throw env _visitors_c0 _visitors_c1 =
4119 let _visitors_r0 = self#on_is_terminal env _visitors_c0 in
4120 let _visitors_r1 = self#on_expr env _visitors_c1 in
4121 Throw (_visitors_r0, _visitors_r1)
4122 method on_Return env _visitors_c0 _visitors_c1 =
4123 let _visitors_r0 = self#on_pos env _visitors_c0 in
4124 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
4126 Return (_visitors_r0, _visitors_r1)
4127 method on_GotoLabel env _visitors_c0 =
4128 let _visitors_r0 = self#on_pstring env _visitors_c0 in
4129 GotoLabel _visitors_r0
4130 method on_Goto env _visitors_c0 =
4131 let _visitors_r0 = self#on_pstring env _visitors_c0 in
4132 Goto _visitors_r0
4133 method on_Static_var env _visitors_c0 =
4134 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4136 Static_var _visitors_r0
4137 method on_Global_var env _visitors_c0 =
4138 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4140 Global_var _visitors_r0
4141 method on_If env _visitors_c0 _visitors_c1 _visitors_c2 =
4142 let _visitors_r0 = self#on_expr env _visitors_c0 in
4143 let _visitors_r1 = self#on_block env _visitors_c1 in
4144 let _visitors_r2 = self#on_block env _visitors_c2 in
4145 If (_visitors_r0, _visitors_r1, _visitors_r2)
4146 method on_Do env _visitors_c0 _visitors_c1 =
4147 let _visitors_r0 = self#on_block env _visitors_c0 in
4148 let _visitors_r1 = self#on_expr env _visitors_c1 in
4149 Do (_visitors_r0, _visitors_r1)
4150 method on_While env _visitors_c0 _visitors_c1 =
4151 let _visitors_r0 = self#on_expr env _visitors_c0 in
4152 let _visitors_r1 = self#on_block env _visitors_c1 in
4153 While (_visitors_r0, _visitors_r1)
4154 method on_Using env _visitors_c0 _visitors_c1 _visitors_c2 =
4155 let _visitors_r0 = self#on_bool env _visitors_c0 in
4156 let _visitors_r1 = self#on_expr env _visitors_c1 in
4157 let _visitors_r2 = self#on_block env _visitors_c2 in
4158 Using (_visitors_r0, _visitors_r1, _visitors_r2)
4159 method on_For env _visitors_c0 _visitors_c1 _visitors_c2
4160 _visitors_c3 =
4161 let _visitors_r0 = self#on_expr env _visitors_c0 in
4162 let _visitors_r1 = self#on_expr env _visitors_c1 in
4163 let _visitors_r2 = self#on_expr env _visitors_c2 in
4164 let _visitors_r3 = self#on_block env _visitors_c3 in
4165 For (_visitors_r0, _visitors_r1, _visitors_r2, _visitors_r3)
4166 method on_Switch env _visitors_c0 _visitors_c1 =
4167 let _visitors_r0 = self#on_expr env _visitors_c0 in
4168 let _visitors_r1 = self#on_list self#on_case env _visitors_c1
4170 Switch (_visitors_r0, _visitors_r1)
4171 method on_Foreach env _visitors_c0 _visitors_c1 _visitors_c2 =
4172 let _visitors_r0 = self#on_expr env _visitors_c0 in
4173 let _visitors_r1 = self#on_as_expr env _visitors_c1 in
4174 let _visitors_r2 = self#on_block env _visitors_c2 in
4175 Foreach (_visitors_r0, _visitors_r1, _visitors_r2)
4176 method on_Try env _visitors_c0 _visitors_c1 _visitors_c2 =
4177 let _visitors_r0 = self#on_block env _visitors_c0 in
4178 let _visitors_r1 = self#on_list self#on_catch env _visitors_c1
4180 let _visitors_r2 = self#on_block env _visitors_c2 in
4181 Try (_visitors_r0, _visitors_r1, _visitors_r2)
4182 method on_Noop env = Noop
4183 method on_stmt env _visitors_this =
4184 match _visitors_this with
4185 | Fallthrough -> self#on_Fallthrough env
4186 | Expr _visitors_c0 -> self#on_Expr env _visitors_c0
4187 | Break _visitors_c0 -> self#on_Break env _visitors_c0
4188 | Continue _visitors_c0 -> self#on_Continue env _visitors_c0
4189 | Throw (_visitors_c0,_visitors_c1) ->
4190 self#on_Throw env _visitors_c0 _visitors_c1
4191 | Return (_visitors_c0,_visitors_c1) ->
4192 self#on_Return env _visitors_c0 _visitors_c1
4193 | GotoLabel _visitors_c0 -> self#on_GotoLabel env _visitors_c0
4194 | Goto _visitors_c0 -> self#on_Goto env _visitors_c0
4195 | Static_var _visitors_c0 ->
4196 self#on_Static_var env _visitors_c0
4197 | Global_var _visitors_c0 ->
4198 self#on_Global_var env _visitors_c0
4199 | If (_visitors_c0,_visitors_c1,_visitors_c2) ->
4200 self#on_If env _visitors_c0 _visitors_c1 _visitors_c2
4201 | Do (_visitors_c0,_visitors_c1) ->
4202 self#on_Do env _visitors_c0 _visitors_c1
4203 | While (_visitors_c0,_visitors_c1) ->
4204 self#on_While env _visitors_c0 _visitors_c1
4205 | Using (_visitors_c0,_visitors_c1,_visitors_c2) ->
4206 self#on_Using env _visitors_c0 _visitors_c1 _visitors_c2
4207 | For (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3) ->
4208 self#on_For env _visitors_c0 _visitors_c1 _visitors_c2
4209 _visitors_c3
4210 | Switch (_visitors_c0,_visitors_c1) ->
4211 self#on_Switch env _visitors_c0 _visitors_c1
4212 | Foreach (_visitors_c0,_visitors_c1,_visitors_c2) ->
4213 self#on_Foreach env _visitors_c0 _visitors_c1 _visitors_c2
4214 | Try (_visitors_c0,_visitors_c1,_visitors_c2) ->
4215 self#on_Try env _visitors_c0 _visitors_c1 _visitors_c2
4216 | Noop -> self#on_Noop env
4217 method on_As_v env _visitors_c0 =
4218 let _visitors_r0 = self#on_expr env _visitors_c0 in
4219 As_v _visitors_r0
4220 method on_As_kv env _visitors_c0 _visitors_c1 =
4221 let _visitors_r0 = self#on_expr env _visitors_c0 in
4222 let _visitors_r1 = self#on_expr env _visitors_c1 in
4223 As_kv (_visitors_r0, _visitors_r1)
4224 method on_Await_as_v env _visitors_c0 _visitors_c1 =
4225 let _visitors_r0 = self#on_pos env _visitors_c0 in
4226 let _visitors_r1 = self#on_expr env _visitors_c1 in
4227 Await_as_v (_visitors_r0, _visitors_r1)
4228 method on_Await_as_kv env _visitors_c0 _visitors_c1 _visitors_c2
4230 let _visitors_r0 = self#on_pos env _visitors_c0 in
4231 let _visitors_r1 = self#on_expr env _visitors_c1 in
4232 let _visitors_r2 = self#on_expr env _visitors_c2 in
4233 Await_as_kv (_visitors_r0, _visitors_r1, _visitors_r2)
4234 method on_as_expr env _visitors_this =
4235 match _visitors_this with
4236 | As_v _visitors_c0 -> self#on_As_v env _visitors_c0
4237 | As_kv (_visitors_c0,_visitors_c1) ->
4238 self#on_As_kv env _visitors_c0 _visitors_c1
4239 | Await_as_v (_visitors_c0,_visitors_c1) ->
4240 self#on_Await_as_v env _visitors_c0 _visitors_c1
4241 | Await_as_kv (_visitors_c0,_visitors_c1,_visitors_c2) ->
4242 self#on_Await_as_kv env _visitors_c0 _visitors_c1
4243 _visitors_c2
4244 method on_block env = self#on_list self#on_stmt env
4245 method on_CIparent env = CIparent
4246 method on_CIself env = CIself
4247 method on_CIstatic env = CIstatic
4248 method on_CIexpr env _visitors_c0 =
4249 let _visitors_r0 = self#on_expr env _visitors_c0 in
4250 CIexpr _visitors_r0
4251 method on_CI env _visitors_c0 =
4252 let _visitors_r0 = self#on_instantiated_sid env _visitors_c0
4254 CI _visitors_r0
4255 method on_class_id env _visitors_this =
4256 match _visitors_this with
4257 | CIparent -> self#on_CIparent env
4258 | CIself -> self#on_CIself env
4259 | CIstatic -> self#on_CIstatic env
4260 | CIexpr _visitors_c0 -> self#on_CIexpr env _visitors_c0
4261 | CI _visitors_c0 -> self#on_CI env _visitors_c0
4262 method on_expr env (_visitors_c0,_visitors_c1) =
4263 let _visitors_r0 = self#on_expr_annotation env _visitors_c0 in
4264 let _visitors_r1 = self#on_expr_ env _visitors_c1 in
4265 (_visitors_r0, _visitors_r1)
4266 method on_Array env _visitors_c0 =
4267 let _visitors_r0 = self#on_list self#on_afield env _visitors_c0
4269 Array _visitors_r0
4270 method on_Darray env _visitors_c0 =
4271 let _visitors_r0 =
4272 self#on_list
4273 (fun env ->
4274 fun (_visitors_c0,_visitors_c1) ->
4275 let _visitors_r0 = self#on_expr env _visitors_c0 in
4276 let _visitors_r1 = self#on_expr env _visitors_c1 in
4277 (_visitors_r0, _visitors_r1)) env _visitors_c0
4279 Darray _visitors_r0
4280 method on_Varray env _visitors_c0 =
4281 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4283 Varray _visitors_r0
4284 method on_Shape env _visitors_c0 =
4285 let _visitors_r0 =
4286 self#on_shape_map self#on_expr env _visitors_c0 in
4287 Shape _visitors_r0
4288 method on_ValCollection env _visitors_c0 _visitors_c1 =
4289 let _visitors_r0 = self#on_vc_kind env _visitors_c0 in
4290 let _visitors_r1 = self#on_list self#on_expr env _visitors_c1
4292 ValCollection (_visitors_r0, _visitors_r1)
4293 method on_KeyValCollection env _visitors_c0 _visitors_c1 =
4294 let _visitors_r0 = self#on_kvc_kind env _visitors_c0 in
4295 let _visitors_r1 = self#on_list self#on_field env _visitors_c1
4297 KeyValCollection (_visitors_r0, _visitors_r1)
4298 method on_Null env = Null
4299 method on_This env = This
4300 method on_True env = True
4301 method on_False env = False
4302 method on_Id env _visitors_c0 =
4303 let _visitors_r0 = self#on_sid env _visitors_c0 in
4304 Id _visitors_r0
4305 method on_Lvar env _visitors_c0 =
4306 let _visitors_r0 = self#on_lid env _visitors_c0 in
4307 Lvar _visitors_r0
4308 method on_Dollar env _visitors_c0 =
4309 let _visitors_r0 = self#on_expr env _visitors_c0 in
4310 Dollar _visitors_r0
4311 method on_Dollardollar env _visitors_c0 =
4312 let _visitors_r0 = self#on_lid env _visitors_c0 in
4313 Dollardollar _visitors_r0
4314 method on_Clone env _visitors_c0 =
4315 let _visitors_r0 = self#on_expr env _visitors_c0 in
4316 Clone _visitors_r0
4317 method on_Obj_get env _visitors_c0 _visitors_c1 _visitors_c2 =
4318 let _visitors_r0 = self#on_expr env _visitors_c0 in
4319 let _visitors_r1 = self#on_expr env _visitors_c1 in
4320 let _visitors_r2 = self#on_og_null_flavor env _visitors_c2 in
4321 Obj_get (_visitors_r0, _visitors_r1, _visitors_r2)
4322 method on_Array_get env _visitors_c0 _visitors_c1 =
4323 let _visitors_r0 = self#on_expr env _visitors_c0 in
4324 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
4326 Array_get (_visitors_r0, _visitors_r1)
4327 method on_Class_get env _visitors_c0 _visitors_c1 =
4328 let _visitors_r0 = self#on_class_id env _visitors_c0 in
4329 let _visitors_r1 = self#on_pstring env _visitors_c1 in
4330 Class_get (_visitors_r0, _visitors_r1)
4331 method on_Class_const env _visitors_c0 _visitors_c1 =
4332 let _visitors_r0 = self#on_class_id env _visitors_c0 in
4333 let _visitors_r1 = self#on_pstring env _visitors_c1 in
4334 Class_const (_visitors_r0, _visitors_r1)
4335 method on_Call env _visitors_c0 _visitors_c1 _visitors_c2
4336 _visitors_c3 _visitors_c4 =
4337 let _visitors_r0 = self#on_call_type env _visitors_c0 in
4338 let _visitors_r1 = self#on_expr env _visitors_c1 in
4339 let _visitors_r2 = self#on_list self#on_hint env _visitors_c2
4341 let _visitors_r3 = self#on_list self#on_expr env _visitors_c3
4343 let _visitors_r4 = self#on_list self#on_expr env _visitors_c4
4345 Call
4346 (_visitors_r0, _visitors_r1, _visitors_r2, _visitors_r3,
4347 _visitors_r4)
4348 method on_Int env _visitors_c0 =
4349 let _visitors_r0 = self#on_pstring env _visitors_c0 in
4350 Int _visitors_r0
4351 method on_Float env _visitors_c0 =
4352 let _visitors_r0 = self#on_pstring env _visitors_c0 in
4353 Float _visitors_r0
4354 method on_String env _visitors_c0 =
4355 let _visitors_r0 = self#on_pstring env _visitors_c0 in
4356 String _visitors_r0
4357 method on_String2 env _visitors_c0 =
4358 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4360 String2 _visitors_r0
4361 method on_Yield env _visitors_c0 =
4362 let _visitors_r0 = self#on_afield env _visitors_c0 in
4363 Yield _visitors_r0
4364 method on_Yield_break env = Yield_break
4365 method on_Await env _visitors_c0 =
4366 let _visitors_r0 = self#on_expr env _visitors_c0 in
4367 Await _visitors_r0
4368 method on_Suspend env _visitors_c0 =
4369 let _visitors_r0 = self#on_expr env _visitors_c0 in
4370 Suspend _visitors_r0
4371 method on_List env _visitors_c0 =
4372 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4374 List _visitors_r0
4375 method on_Expr_list env _visitors_c0 =
4376 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4378 Expr_list _visitors_r0
4379 method on_Cast env _visitors_c0 _visitors_c1 =
4380 let _visitors_r0 = self#on_hint env _visitors_c0 in
4381 let _visitors_r1 = self#on_expr env _visitors_c1 in
4382 Cast (_visitors_r0, _visitors_r1)
4383 method on_Unop env _visitors_c0 _visitors_c1 =
4384 let _visitors_r0 = self#on_uop env _visitors_c0 in
4385 let _visitors_r1 = self#on_expr env _visitors_c1 in
4386 Unop (_visitors_r0, _visitors_r1)
4387 method on_Binop env _visitors_c0 _visitors_c1 _visitors_c2 =
4388 let _visitors_r0 = self#on_bop env _visitors_c0 in
4389 let _visitors_r1 = self#on_expr env _visitors_c1 in
4390 let _visitors_r2 = self#on_expr env _visitors_c2 in
4391 Binop (_visitors_r0, _visitors_r1, _visitors_r2)
4392 method on_Pipe env _visitors_c0 _visitors_c1 _visitors_c2 =
4393 let _visitors_r0 = self#on_lid env _visitors_c0 in
4394 let _visitors_r1 = self#on_expr env _visitors_c1 in
4395 let _visitors_r2 = self#on_expr env _visitors_c2 in
4396 Pipe (_visitors_r0, _visitors_r1, _visitors_r2)
4397 method on_Eif env _visitors_c0 _visitors_c1 _visitors_c2 =
4398 let _visitors_r0 = self#on_expr env _visitors_c0 in
4399 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
4401 let _visitors_r2 = self#on_expr env _visitors_c2 in
4402 Eif (_visitors_r0, _visitors_r1, _visitors_r2)
4403 method on_NullCoalesce env _visitors_c0 _visitors_c1 =
4404 let _visitors_r0 = self#on_expr env _visitors_c0 in
4405 let _visitors_r1 = self#on_expr env _visitors_c1 in
4406 NullCoalesce (_visitors_r0, _visitors_r1)
4407 method on_InstanceOf env _visitors_c0 _visitors_c1 =
4408 let _visitors_r0 = self#on_expr env _visitors_c0 in
4409 let _visitors_r1 = self#on_class_id env _visitors_c1 in
4410 InstanceOf (_visitors_r0, _visitors_r1)
4411 method on_Is env _visitors_c0 _visitors_c1 =
4412 let _visitors_r0 = self#on_expr env _visitors_c0 in
4413 let _visitors_r1 = self#on_hint env _visitors_c1 in
4414 Is (_visitors_r0, _visitors_r1)
4415 method on_New env _visitors_c0 _visitors_c1 _visitors_c2 =
4416 let _visitors_r0 = self#on_class_id env _visitors_c0 in
4417 let _visitors_r1 = self#on_list self#on_expr env _visitors_c1
4419 let _visitors_r2 = self#on_list self#on_expr env _visitors_c2
4421 New (_visitors_r0, _visitors_r1, _visitors_r2)
4422 method on_Efun env _visitors_c0 _visitors_c1 =
4423 let _visitors_r0 = self#on_fun_ env _visitors_c0 in
4424 let _visitors_r1 = self#on_list self#on_lid env _visitors_c1
4426 Efun (_visitors_r0, _visitors_r1)
4427 method on_Xml env _visitors_c0 _visitors_c1 _visitors_c2 =
4428 let _visitors_r0 = self#on_sid env _visitors_c0 in
4429 let _visitors_r1 =
4430 self#on_list self#on_xhp_attribute env _visitors_c1 in
4431 let _visitors_r2 = self#on_list self#on_expr env _visitors_c2
4433 Xml (_visitors_r0, _visitors_r1, _visitors_r2)
4434 method on_Callconv env _visitors_c0 _visitors_c1 =
4435 let _visitors_r0 = self#on_param_kind env _visitors_c0 in
4436 let _visitors_r1 = self#on_expr env _visitors_c1 in
4437 Callconv (_visitors_r0, _visitors_r1)
4438 method on_Lplaceholder env _visitors_c0 =
4439 let _visitors_r0 = self#on_pos env _visitors_c0 in
4440 Lplaceholder _visitors_r0
4441 method on_Fun_id env _visitors_c0 =
4442 let _visitors_r0 = self#on_sid env _visitors_c0 in
4443 Fun_id _visitors_r0
4444 method on_Method_id env _visitors_c0 _visitors_c1 =
4445 let _visitors_r0 = self#on_expr env _visitors_c0 in
4446 let _visitors_r1 = self#on_pstring env _visitors_c1 in
4447 Method_id (_visitors_r0, _visitors_r1)
4448 method on_Method_caller env _visitors_c0 _visitors_c1 =
4449 let _visitors_r0 = self#on_sid env _visitors_c0 in
4450 let _visitors_r1 = self#on_pstring env _visitors_c1 in
4451 Method_caller (_visitors_r0, _visitors_r1)
4452 method on_Smethod_id env _visitors_c0 _visitors_c1 =
4453 let _visitors_r0 = self#on_sid env _visitors_c0 in
4454 let _visitors_r1 = self#on_pstring env _visitors_c1 in
4455 Smethod_id (_visitors_r0, _visitors_r1)
4456 method on_Special_func env _visitors_c0 =
4457 let _visitors_r0 = self#on_special_func env _visitors_c0 in
4458 Special_func _visitors_r0
4459 method on_Pair env _visitors_c0 _visitors_c1 =
4460 let _visitors_r0 = self#on_expr env _visitors_c0 in
4461 let _visitors_r1 = self#on_expr env _visitors_c1 in
4462 Pair (_visitors_r0, _visitors_r1)
4463 method on_Assert env _visitors_c0 =
4464 let _visitors_r0 = self#on_assert_expr env _visitors_c0 in
4465 Assert _visitors_r0
4466 method on_Typename env _visitors_c0 =
4467 let _visitors_r0 = self#on_sid env _visitors_c0 in
4468 Typename _visitors_r0
4469 method on_Any env = Any
4470 method on_expr_ env _visitors_this =
4471 match _visitors_this with
4472 | Array _visitors_c0 -> self#on_Array env _visitors_c0
4473 | Darray _visitors_c0 -> self#on_Darray env _visitors_c0
4474 | Varray _visitors_c0 -> self#on_Varray env _visitors_c0
4475 | Shape _visitors_c0 -> self#on_Shape env _visitors_c0
4476 | ValCollection (_visitors_c0,_visitors_c1) ->
4477 self#on_ValCollection env _visitors_c0 _visitors_c1
4478 | KeyValCollection (_visitors_c0,_visitors_c1) ->
4479 self#on_KeyValCollection env _visitors_c0 _visitors_c1
4480 | Null -> self#on_Null env
4481 | This -> self#on_This env
4482 | True -> self#on_True env
4483 | False -> self#on_False env
4484 | Id _visitors_c0 -> self#on_Id env _visitors_c0
4485 | Lvar _visitors_c0 -> self#on_Lvar env _visitors_c0
4486 | Dollar _visitors_c0 -> self#on_Dollar env _visitors_c0
4487 | Dollardollar _visitors_c0 ->
4488 self#on_Dollardollar env _visitors_c0
4489 | Clone _visitors_c0 -> self#on_Clone env _visitors_c0
4490 | Obj_get (_visitors_c0,_visitors_c1,_visitors_c2) ->
4491 self#on_Obj_get env _visitors_c0 _visitors_c1 _visitors_c2
4492 | Array_get (_visitors_c0,_visitors_c1) ->
4493 self#on_Array_get env _visitors_c0 _visitors_c1
4494 | Class_get (_visitors_c0,_visitors_c1) ->
4495 self#on_Class_get env _visitors_c0 _visitors_c1
4496 | Class_const (_visitors_c0,_visitors_c1) ->
4497 self#on_Class_const env _visitors_c0 _visitors_c1
4498 | Call
4499 (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3,_visitors_c4)
4501 self#on_Call env _visitors_c0 _visitors_c1 _visitors_c2
4502 _visitors_c3 _visitors_c4
4503 | Int _visitors_c0 -> self#on_Int env _visitors_c0
4504 | Float _visitors_c0 -> self#on_Float env _visitors_c0
4505 | String _visitors_c0 -> self#on_String env _visitors_c0
4506 | String2 _visitors_c0 -> self#on_String2 env _visitors_c0
4507 | Yield _visitors_c0 -> self#on_Yield env _visitors_c0
4508 | Yield_break -> self#on_Yield_break env
4509 | Await _visitors_c0 -> self#on_Await env _visitors_c0
4510 | Suspend _visitors_c0 -> self#on_Suspend env _visitors_c0
4511 | List _visitors_c0 -> self#on_List env _visitors_c0
4512 | Expr_list _visitors_c0 -> self#on_Expr_list env _visitors_c0
4513 | Cast (_visitors_c0,_visitors_c1) ->
4514 self#on_Cast env _visitors_c0 _visitors_c1
4515 | Unop (_visitors_c0,_visitors_c1) ->
4516 self#on_Unop env _visitors_c0 _visitors_c1
4517 | Binop (_visitors_c0,_visitors_c1,_visitors_c2) ->
4518 self#on_Binop env _visitors_c0 _visitors_c1 _visitors_c2
4519 | Pipe (_visitors_c0,_visitors_c1,_visitors_c2) ->
4520 self#on_Pipe env _visitors_c0 _visitors_c1 _visitors_c2
4521 | Eif (_visitors_c0,_visitors_c1,_visitors_c2) ->
4522 self#on_Eif env _visitors_c0 _visitors_c1 _visitors_c2
4523 | NullCoalesce (_visitors_c0,_visitors_c1) ->
4524 self#on_NullCoalesce env _visitors_c0 _visitors_c1
4525 | InstanceOf (_visitors_c0,_visitors_c1) ->
4526 self#on_InstanceOf env _visitors_c0 _visitors_c1
4527 | Is (_visitors_c0,_visitors_c1) ->
4528 self#on_Is env _visitors_c0 _visitors_c1
4529 | New (_visitors_c0,_visitors_c1,_visitors_c2) ->
4530 self#on_New env _visitors_c0 _visitors_c1 _visitors_c2
4531 | Efun (_visitors_c0,_visitors_c1) ->
4532 self#on_Efun env _visitors_c0 _visitors_c1
4533 | Xml (_visitors_c0,_visitors_c1,_visitors_c2) ->
4534 self#on_Xml env _visitors_c0 _visitors_c1 _visitors_c2
4535 | Callconv (_visitors_c0,_visitors_c1) ->
4536 self#on_Callconv env _visitors_c0 _visitors_c1
4537 | Lplaceholder _visitors_c0 ->
4538 self#on_Lplaceholder env _visitors_c0
4539 | Fun_id _visitors_c0 -> self#on_Fun_id env _visitors_c0
4540 | Method_id (_visitors_c0,_visitors_c1) ->
4541 self#on_Method_id env _visitors_c0 _visitors_c1
4542 | Method_caller (_visitors_c0,_visitors_c1) ->
4543 self#on_Method_caller env _visitors_c0 _visitors_c1
4544 | Smethod_id (_visitors_c0,_visitors_c1) ->
4545 self#on_Smethod_id env _visitors_c0 _visitors_c1
4546 | Special_func _visitors_c0 ->
4547 self#on_Special_func env _visitors_c0
4548 | Pair (_visitors_c0,_visitors_c1) ->
4549 self#on_Pair env _visitors_c0 _visitors_c1
4550 | Assert _visitors_c0 -> self#on_Assert env _visitors_c0
4551 | Typename _visitors_c0 -> self#on_Typename env _visitors_c0
4552 | Any -> self#on_Any env
4553 method on_AE_assert env _visitors_c0 =
4554 let _visitors_r0 = self#on_expr env _visitors_c0 in
4555 AE_assert _visitors_r0
4556 method on_assert_expr env _visitors_this =
4557 match _visitors_this with
4558 | AE_assert _visitors_c0 -> self#on_AE_assert env _visitors_c0
4559 method on_Default env _visitors_c0 =
4560 let _visitors_r0 = self#on_block env _visitors_c0 in
4561 Default _visitors_r0
4562 method on_Case env _visitors_c0 _visitors_c1 =
4563 let _visitors_r0 = self#on_expr env _visitors_c0 in
4564 let _visitors_r1 = self#on_block env _visitors_c1 in
4565 Case (_visitors_r0, _visitors_r1)
4566 method on_case env _visitors_this =
4567 match _visitors_this with
4568 | Default _visitors_c0 -> self#on_Default env _visitors_c0
4569 | Case (_visitors_c0,_visitors_c1) ->
4570 self#on_Case env _visitors_c0 _visitors_c1
4571 method on_catch env (_visitors_c0,_visitors_c1,_visitors_c2) =
4572 let _visitors_r0 = self#on_sid env _visitors_c0 in
4573 let _visitors_r1 = self#on_lid env _visitors_c1 in
4574 let _visitors_r2 = self#on_block env _visitors_c2 in
4575 (_visitors_r0, _visitors_r1, _visitors_r2)
4576 method on_field env (_visitors_c0,_visitors_c1) =
4577 let _visitors_r0 = self#on_expr env _visitors_c0 in
4578 let _visitors_r1 = self#on_expr env _visitors_c1 in
4579 (_visitors_r0, _visitors_r1)
4580 method on_AFvalue env _visitors_c0 =
4581 let _visitors_r0 = self#on_expr env _visitors_c0 in
4582 AFvalue _visitors_r0
4583 method on_AFkvalue env _visitors_c0 _visitors_c1 =
4584 let _visitors_r0 = self#on_expr env _visitors_c0 in
4585 let _visitors_r1 = self#on_expr env _visitors_c1 in
4586 AFkvalue (_visitors_r0, _visitors_r1)
4587 method on_afield env _visitors_this =
4588 match _visitors_this with
4589 | AFvalue _visitors_c0 -> self#on_AFvalue env _visitors_c0
4590 | AFkvalue (_visitors_c0,_visitors_c1) ->
4591 self#on_AFkvalue env _visitors_c0 _visitors_c1
4592 method on_Xhp_simple env _visitors_c0 _visitors_c1 =
4593 let _visitors_r0 = self#on_pstring env _visitors_c0 in
4594 let _visitors_r1 = self#on_expr env _visitors_c1 in
4595 Xhp_simple (_visitors_r0, _visitors_r1)
4596 method on_Xhp_spread env _visitors_c0 =
4597 let _visitors_r0 = self#on_expr env _visitors_c0 in
4598 Xhp_spread _visitors_r0
4599 method on_xhp_attribute env _visitors_this =
4600 match _visitors_this with
4601 | Xhp_simple (_visitors_c0,_visitors_c1) ->
4602 self#on_Xhp_simple env _visitors_c0 _visitors_c1
4603 | Xhp_spread _visitors_c0 ->
4604 self#on_Xhp_spread env _visitors_c0
4605 method on_Gena env _visitors_c0 =
4606 let _visitors_r0 = self#on_expr env _visitors_c0 in
4607 Gena _visitors_r0
4608 method on_Genva env _visitors_c0 =
4609 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
4611 Genva _visitors_r0
4612 method on_Gen_array_rec env _visitors_c0 =
4613 let _visitors_r0 = self#on_expr env _visitors_c0 in
4614 Gen_array_rec _visitors_r0
4615 method on_special_func env _visitors_this =
4616 match _visitors_this with
4617 | Gena _visitors_c0 -> self#on_Gena env _visitors_c0
4618 | Genva _visitors_c0 -> self#on_Genva env _visitors_c0
4619 | Gen_array_rec _visitors_c0 ->
4620 self#on_Gen_array_rec env _visitors_c0
4621 method on_is_reference env = self#on_bool env
4622 method on_is_variadic env = self#on_bool env
4623 method on_fun_param env _visitors_this =
4624 let _visitors_r0 =
4625 self#on_option self#on_hint env _visitors_this.param_hint in
4626 let _visitors_r1 =
4627 self#on_is_reference env _visitors_this.param_is_reference
4629 let _visitors_r2 =
4630 self#on_is_variadic env _visitors_this.param_is_variadic in
4631 let _visitors_r3 = self#on_pos env _visitors_this.param_pos in
4632 let _visitors_r4 = self#on_string env _visitors_this.param_name
4634 let _visitors_r5 =
4635 self#on_option self#on_expr env _visitors_this.param_expr in
4636 let _visitors_r6 =
4637 self#on_option self#on_param_kind env
4638 _visitors_this.param_callconv
4640 let _visitors_r7 =
4641 self#on_list self#on_user_attribute env
4642 _visitors_this.param_user_attributes
4645 param_hint = _visitors_r0;
4646 param_is_reference = _visitors_r1;
4647 param_is_variadic = _visitors_r2;
4648 param_pos = _visitors_r3;
4649 param_name = _visitors_r4;
4650 param_expr = _visitors_r5;
4651 param_callconv = _visitors_r6;
4652 param_user_attributes = _visitors_r7
4654 method on_FVvariadicArg env _visitors_c0 =
4655 let _visitors_r0 = self#on_fun_param env _visitors_c0 in
4656 FVvariadicArg _visitors_r0
4657 method on_FVellipsis env = FVellipsis
4658 method on_FVnonVariadic env = FVnonVariadic
4659 method on_fun_variadicity env _visitors_this =
4660 match _visitors_this with
4661 | FVvariadicArg _visitors_c0 ->
4662 self#on_FVvariadicArg env _visitors_c0
4663 | FVellipsis -> self#on_FVellipsis env
4664 | FVnonVariadic -> self#on_FVnonVariadic env
4665 method on_fun_ env _visitors_this =
4666 let _visitors_r0 =
4667 self#on_env_annotation env _visitors_this.f_annotation in
4668 let _visitors_r1 =
4669 (fun _visitors_this -> _visitors_this) _visitors_this.f_mode
4671 let _visitors_r2 =
4672 self#on_option self#on_hint env _visitors_this.f_ret in
4673 let _visitors_r3 = self#on_sid env _visitors_this.f_name in
4674 let _visitors_r4 =
4675 self#on_list self#on_tparam env _visitors_this.f_tparams in
4676 let _visitors_r5 =
4677 self#on_list self#on_where_constraint env
4678 _visitors_this.f_where_constraints
4680 let _visitors_r6 =
4681 self#on_fun_variadicity env _visitors_this.f_variadic in
4682 let _visitors_r7 =
4683 self#on_list self#on_fun_param env _visitors_this.f_params
4685 let _visitors_r8 = self#on_func_body env _visitors_this.f_body
4687 let _visitors_r9 =
4688 self#on_fun_kind env _visitors_this.f_fun_kind in
4689 let _visitors_r10 =
4690 self#on_list self#on_user_attribute env
4691 _visitors_this.f_user_attributes
4693 let _visitors_r11 =
4694 self#on_bool env _visitors_this.f_ret_by_ref in
4696 f_annotation = _visitors_r0;
4697 f_mode = _visitors_r1;
4698 f_ret = _visitors_r2;
4699 f_name = _visitors_r3;
4700 f_tparams = _visitors_r4;
4701 f_where_constraints = _visitors_r5;
4702 f_variadic = _visitors_r6;
4703 f_params = _visitors_r7;
4704 f_body = _visitors_r8;
4705 f_fun_kind = _visitors_r9;
4706 f_user_attributes = _visitors_r10;
4707 f_ret_by_ref = _visitors_r11
4709 method on_UnnamedBody env _visitors_c0 =
4710 let _visitors_r0 = self#on_func_unnamed_body env _visitors_c0
4712 UnnamedBody _visitors_r0
4713 method on_NamedBody env _visitors_c0 =
4714 let _visitors_r0 = self#on_func_named_body env _visitors_c0 in
4715 NamedBody _visitors_r0
4716 method on_func_body env _visitors_this =
4717 match _visitors_this with
4718 | UnnamedBody _visitors_c0 ->
4719 self#on_UnnamedBody env _visitors_c0
4720 | NamedBody _visitors_c0 -> self#on_NamedBody env _visitors_c0
4721 method on_func_unnamed_body env _visitors_this =
4722 let _visitors_r0 =
4723 (fun _visitors_this -> _visitors_this)
4724 _visitors_this.fub_ast
4726 let _visitors_r1 =
4727 (fun _visitors_this -> _visitors_this)
4728 _visitors_this.fub_tparams
4730 let _visitors_r2 =
4731 (fun _visitors_this -> _visitors_this)
4732 _visitors_this.fub_namespace
4735 fub_ast = _visitors_r0;
4736 fub_tparams = _visitors_r1;
4737 fub_namespace = _visitors_r2
4739 method on_func_named_body env _visitors_this =
4740 let _visitors_r0 = self#on_block env _visitors_this.fnb_nast
4742 let _visitors_r1 = self#on_bool env _visitors_this.fnb_unsafe
4744 { fnb_nast = _visitors_r0; fnb_unsafe = _visitors_r1 }
4745 method on_user_attribute env _visitors_this =
4746 let _visitors_r0 = self#on_sid env _visitors_this.ua_name in
4747 let _visitors_r1 =
4748 self#on_list self#on_expr env _visitors_this.ua_params in
4749 { ua_name = _visitors_r0; ua_params = _visitors_r1 }
4750 method on_class_ env _visitors_this =
4751 let _visitors_r0 =
4752 self#on_env_annotation env _visitors_this.c_annotation in
4753 let _visitors_r1 =
4754 (fun _visitors_this -> _visitors_this) _visitors_this.c_mode
4756 let _visitors_r2 = self#on_bool env _visitors_this.c_final in
4757 let _visitors_r3 = self#on_bool env _visitors_this.c_is_xhp in
4758 let _visitors_r4 = self#on_class_kind env _visitors_this.c_kind
4760 let _visitors_r5 = self#on_sid env _visitors_this.c_name in
4761 let _visitors_r6 =
4762 (fun _visitors_this -> _visitors_this)
4763 _visitors_this.c_tparams
4765 let _visitors_r7 =
4766 self#on_list self#on_hint env _visitors_this.c_extends in
4767 let _visitors_r8 =
4768 self#on_list self#on_hint env _visitors_this.c_uses in
4769 let _visitors_r9 =
4770 self#on_list self#on_hint env _visitors_this.c_xhp_attr_uses
4772 let _visitors_r10 =
4773 self#on_list self#on_pstring env
4774 _visitors_this.c_xhp_category
4776 let _visitors_r11 =
4777 self#on_list self#on_hint env _visitors_this.c_req_extends
4779 let _visitors_r12 =
4780 self#on_list self#on_hint env _visitors_this.c_req_implements
4782 let _visitors_r13 =
4783 self#on_list self#on_hint env _visitors_this.c_implements in
4784 let _visitors_r14 =
4785 self#on_list self#on_class_const env _visitors_this.c_consts
4787 let _visitors_r15 =
4788 self#on_list self#on_class_typeconst env
4789 _visitors_this.c_typeconsts
4791 let _visitors_r16 =
4792 self#on_list self#on_class_var env
4793 _visitors_this.c_static_vars
4795 let _visitors_r17 =
4796 self#on_list self#on_class_var env _visitors_this.c_vars in
4797 let _visitors_r18 =
4798 self#on_option self#on_method_ env
4799 _visitors_this.c_constructor
4801 let _visitors_r19 =
4802 self#on_list self#on_method_ env
4803 _visitors_this.c_static_methods
4805 let _visitors_r20 =
4806 self#on_list self#on_method_ env _visitors_this.c_methods in
4807 let _visitors_r21 =
4808 self#on_list self#on_user_attribute env
4809 _visitors_this.c_user_attributes
4811 let _visitors_r22 =
4812 self#on_option self#on_enum_ env _visitors_this.c_enum in
4814 c_annotation = _visitors_r0;
4815 c_mode = _visitors_r1;
4816 c_final = _visitors_r2;
4817 c_is_xhp = _visitors_r3;
4818 c_kind = _visitors_r4;
4819 c_name = _visitors_r5;
4820 c_tparams = _visitors_r6;
4821 c_extends = _visitors_r7;
4822 c_uses = _visitors_r8;
4823 c_xhp_attr_uses = _visitors_r9;
4824 c_xhp_category = _visitors_r10;
4825 c_req_extends = _visitors_r11;
4826 c_req_implements = _visitors_r12;
4827 c_implements = _visitors_r13;
4828 c_consts = _visitors_r14;
4829 c_typeconsts = _visitors_r15;
4830 c_static_vars = _visitors_r16;
4831 c_vars = _visitors_r17;
4832 c_constructor = _visitors_r18;
4833 c_static_methods = _visitors_r19;
4834 c_methods = _visitors_r20;
4835 c_user_attributes = _visitors_r21;
4836 c_enum = _visitors_r22
4838 method on_class_const env
4839 (_visitors_c0,_visitors_c1,_visitors_c2) =
4840 let _visitors_r0 = self#on_option self#on_hint env _visitors_c0
4842 let _visitors_r1 = self#on_sid env _visitors_c1 in
4843 let _visitors_r2 = self#on_option self#on_expr env _visitors_c2
4845 (_visitors_r0, _visitors_r1, _visitors_r2)
4846 method on_class_typeconst env _visitors_this =
4847 let _visitors_r0 = self#on_sid env _visitors_this.c_tconst_name
4849 let _visitors_r1 =
4850 self#on_option self#on_hint env
4851 _visitors_this.c_tconst_constraint
4853 let _visitors_r2 =
4854 self#on_option self#on_hint env _visitors_this.c_tconst_type
4857 c_tconst_name = _visitors_r0;
4858 c_tconst_constraint = _visitors_r1;
4859 c_tconst_type = _visitors_r2
4861 method on_class_var env _visitors_this =
4862 let _visitors_r0 = self#on_bool env _visitors_this.cv_final in
4863 let _visitors_r1 = self#on_bool env _visitors_this.cv_is_xhp
4865 let _visitors_r2 =
4866 self#on_visibility env _visitors_this.cv_visibility in
4867 let _visitors_r3 =
4868 self#on_option self#on_hint env _visitors_this.cv_type in
4869 let _visitors_r4 = self#on_sid env _visitors_this.cv_id in
4870 let _visitors_r5 =
4871 self#on_option self#on_expr env _visitors_this.cv_expr in
4872 let _visitors_r6 =
4873 self#on_list self#on_user_attribute env
4874 _visitors_this.cv_user_attributes
4877 cv_final = _visitors_r0;
4878 cv_is_xhp = _visitors_r1;
4879 cv_visibility = _visitors_r2;
4880 cv_type = _visitors_r3;
4881 cv_id = _visitors_r4;
4882 cv_expr = _visitors_r5;
4883 cv_user_attributes = _visitors_r6
4885 method on_method_ env _visitors_this =
4886 let _visitors_r0 =
4887 self#on_env_annotation env _visitors_this.m_annotation in
4888 let _visitors_r1 = self#on_bool env _visitors_this.m_final in
4889 let _visitors_r2 = self#on_bool env _visitors_this.m_abstract
4891 let _visitors_r3 =
4892 self#on_visibility env _visitors_this.m_visibility in
4893 let _visitors_r4 = self#on_sid env _visitors_this.m_name in
4894 let _visitors_r5 =
4895 self#on_list self#on_tparam env _visitors_this.m_tparams in
4896 let _visitors_r6 =
4897 self#on_list self#on_where_constraint env
4898 _visitors_this.m_where_constraints
4900 let _visitors_r7 =
4901 self#on_fun_variadicity env _visitors_this.m_variadic in
4902 let _visitors_r8 =
4903 self#on_list self#on_fun_param env _visitors_this.m_params
4905 let _visitors_r9 = self#on_func_body env _visitors_this.m_body
4907 let _visitors_r10 =
4908 self#on_fun_kind env _visitors_this.m_fun_kind in
4909 let _visitors_r11 =
4910 self#on_list self#on_user_attribute env
4911 _visitors_this.m_user_attributes
4913 let _visitors_r12 =
4914 self#on_option self#on_hint env _visitors_this.m_ret in
4915 let _visitors_r13 =
4916 self#on_bool env _visitors_this.m_ret_by_ref in
4918 m_annotation = _visitors_r0;
4919 m_final = _visitors_r1;
4920 m_abstract = _visitors_r2;
4921 m_visibility = _visitors_r3;
4922 m_name = _visitors_r4;
4923 m_tparams = _visitors_r5;
4924 m_where_constraints = _visitors_r6;
4925 m_variadic = _visitors_r7;
4926 m_params = _visitors_r8;
4927 m_body = _visitors_r9;
4928 m_fun_kind = _visitors_r10;
4929 m_user_attributes = _visitors_r11;
4930 m_ret = _visitors_r12;
4931 m_ret_by_ref = _visitors_r13
4933 method on_typedef env _visitors_this =
4934 let _visitors_r0 =
4935 self#on_env_annotation env _visitors_this.t_annotation in
4936 let _visitors_r1 = self#on_sid env _visitors_this.t_name in
4937 let _visitors_r2 =
4938 self#on_list self#on_tparam env _visitors_this.t_tparams in
4939 let _visitors_r3 =
4940 self#on_option self#on_hint env _visitors_this.t_constraint
4942 let _visitors_r4 = self#on_hint env _visitors_this.t_kind in
4943 let _visitors_r5 =
4944 self#on_list self#on_user_attribute env
4945 _visitors_this.t_user_attributes
4947 let _visitors_r6 =
4948 (fun _visitors_this -> _visitors_this) _visitors_this.t_mode
4950 let _visitors_r7 =
4951 self#on_typedef_visibility env _visitors_this.t_vis in
4953 t_annotation = _visitors_r0;
4954 t_name = _visitors_r1;
4955 t_tparams = _visitors_r2;
4956 t_constraint = _visitors_r3;
4957 t_kind = _visitors_r4;
4958 t_user_attributes = _visitors_r5;
4959 t_mode = _visitors_r6;
4960 t_vis = _visitors_r7
4962 method on_gconst env _visitors_this =
4963 let _visitors_r0 =
4964 self#on_env_annotation env _visitors_this.cst_annotation in
4965 let _visitors_r1 =
4966 (fun _visitors_this -> _visitors_this)
4967 _visitors_this.cst_mode
4969 let _visitors_r2 = self#on_sid env _visitors_this.cst_name in
4970 let _visitors_r3 =
4971 self#on_option self#on_hint env _visitors_this.cst_type in
4972 let _visitors_r4 =
4973 self#on_option self#on_expr env _visitors_this.cst_value in
4974 let _visitors_r5 =
4975 self#on_bool env _visitors_this.cst_is_define in
4977 cst_annotation = _visitors_r0;
4978 cst_mode = _visitors_r1;
4979 cst_name = _visitors_r2;
4980 cst_type = _visitors_r3;
4981 cst_value = _visitors_r4;
4982 cst_is_define = _visitors_r5
4984 method on_Fun env _visitors_c0 =
4985 let _visitors_r0 = self#on_fun_ env _visitors_c0 in
4986 Fun _visitors_r0
4987 method on_Class env _visitors_c0 =
4988 let _visitors_r0 = self#on_class_ env _visitors_c0 in
4989 Class _visitors_r0
4990 method on_Typedef env _visitors_c0 =
4991 let _visitors_r0 = self#on_typedef env _visitors_c0 in
4992 Typedef _visitors_r0
4993 method on_Constant env _visitors_c0 =
4994 let _visitors_r0 = self#on_gconst env _visitors_c0 in
4995 Constant _visitors_r0
4996 method on_def env _visitors_this =
4997 match _visitors_this with
4998 | Fun _visitors_c0 -> self#on_Fun env _visitors_c0
4999 | Class _visitors_c0 -> self#on_Class env _visitors_c0
5000 | Typedef _visitors_c0 -> self#on_Typedef env _visitors_c0
5001 | Constant _visitors_c0 -> self#on_Constant env _visitors_c0
5003 [@@@VISITORS.END ]
5005 include
5006 struct
5007 [@@@ocaml.warning "-4-26-27"]
5008 [@@@VISITORS.BEGIN ]
5009 class virtual ['self] endo =
5010 object (self : 'self)
5011 inherit [_] endo_defs
5012 method on_program env = self#on_list self#on_def env
5013 method on_expr_annotation env _visitors_this = _visitors_this
5014 method on_env_annotation env _visitors_this = _visitors_this
5015 method on_Fallthrough env _visitors_this =
5016 if true then _visitors_this else Fallthrough
5017 method on_Expr env _visitors_this _visitors_c0 =
5018 let _visitors_r0 = self#on_expr env _visitors_c0 in
5019 if Pervasives.(==) _visitors_c0 _visitors_r0
5020 then _visitors_this
5021 else Expr _visitors_r0
5022 method on_Break env _visitors_this _visitors_c0 =
5023 let _visitors_r0 = self#on_pos env _visitors_c0 in
5024 if Pervasives.(==) _visitors_c0 _visitors_r0
5025 then _visitors_this
5026 else Break _visitors_r0
5027 method on_Continue env _visitors_this _visitors_c0 =
5028 let _visitors_r0 = self#on_pos env _visitors_c0 in
5029 if Pervasives.(==) _visitors_c0 _visitors_r0
5030 then _visitors_this
5031 else Continue _visitors_r0
5032 method on_Throw env _visitors_this _visitors_c0 _visitors_c1 =
5033 let _visitors_r0 = self#on_is_terminal env _visitors_c0 in
5034 let _visitors_r1 = self#on_expr env _visitors_c1 in
5036 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5037 (Pervasives.(==) _visitors_c1 _visitors_r1)
5038 then _visitors_this
5039 else Throw (_visitors_r0, _visitors_r1)
5040 method on_Return env _visitors_this _visitors_c0 _visitors_c1 =
5041 let _visitors_r0 = self#on_pos env _visitors_c0 in
5042 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
5045 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5046 (Pervasives.(==) _visitors_c1 _visitors_r1)
5047 then _visitors_this
5048 else Return (_visitors_r0, _visitors_r1)
5049 method on_GotoLabel env _visitors_this _visitors_c0 =
5050 let _visitors_r0 = self#on_pstring env _visitors_c0 in
5051 if Pervasives.(==) _visitors_c0 _visitors_r0
5052 then _visitors_this
5053 else GotoLabel _visitors_r0
5054 method on_Goto env _visitors_this _visitors_c0 =
5055 let _visitors_r0 = self#on_pstring env _visitors_c0 in
5056 if Pervasives.(==) _visitors_c0 _visitors_r0
5057 then _visitors_this
5058 else Goto _visitors_r0
5059 method on_Static_var env _visitors_this _visitors_c0 =
5060 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5062 if Pervasives.(==) _visitors_c0 _visitors_r0
5063 then _visitors_this
5064 else Static_var _visitors_r0
5065 method on_Global_var env _visitors_this _visitors_c0 =
5066 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5068 if Pervasives.(==) _visitors_c0 _visitors_r0
5069 then _visitors_this
5070 else Global_var _visitors_r0
5071 method on_If env _visitors_this _visitors_c0 _visitors_c1
5072 _visitors_c2 =
5073 let _visitors_r0 = self#on_expr env _visitors_c0 in
5074 let _visitors_r1 = self#on_block env _visitors_c1 in
5075 let _visitors_r2 = self#on_block env _visitors_c2 in
5077 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5078 (Pervasives.(&&)
5079 (Pervasives.(==) _visitors_c1 _visitors_r1)
5080 (Pervasives.(==) _visitors_c2 _visitors_r2))
5081 then _visitors_this
5082 else If (_visitors_r0, _visitors_r1, _visitors_r2)
5083 method on_Do env _visitors_this _visitors_c0 _visitors_c1 =
5084 let _visitors_r0 = self#on_block env _visitors_c0 in
5085 let _visitors_r1 = self#on_expr env _visitors_c1 in
5087 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5088 (Pervasives.(==) _visitors_c1 _visitors_r1)
5089 then _visitors_this
5090 else Do (_visitors_r0, _visitors_r1)
5091 method on_While env _visitors_this _visitors_c0 _visitors_c1 =
5092 let _visitors_r0 = self#on_expr env _visitors_c0 in
5093 let _visitors_r1 = self#on_block env _visitors_c1 in
5095 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5096 (Pervasives.(==) _visitors_c1 _visitors_r1)
5097 then _visitors_this
5098 else While (_visitors_r0, _visitors_r1)
5099 method on_Using env _visitors_this _visitors_c0 _visitors_c1
5100 _visitors_c2 =
5101 let _visitors_r0 = self#on_bool env _visitors_c0 in
5102 let _visitors_r1 = self#on_expr env _visitors_c1 in
5103 let _visitors_r2 = self#on_block env _visitors_c2 in
5105 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5106 (Pervasives.(&&)
5107 (Pervasives.(==) _visitors_c1 _visitors_r1)
5108 (Pervasives.(==) _visitors_c2 _visitors_r2))
5109 then _visitors_this
5110 else Using (_visitors_r0, _visitors_r1, _visitors_r2)
5111 method on_For env _visitors_this _visitors_c0 _visitors_c1
5112 _visitors_c2 _visitors_c3 =
5113 let _visitors_r0 = self#on_expr env _visitors_c0 in
5114 let _visitors_r1 = self#on_expr env _visitors_c1 in
5115 let _visitors_r2 = self#on_expr env _visitors_c2 in
5116 let _visitors_r3 = self#on_block env _visitors_c3 in
5118 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5119 (Pervasives.(&&)
5120 (Pervasives.(==) _visitors_c1 _visitors_r1)
5121 (Pervasives.(&&)
5122 (Pervasives.(==) _visitors_c2 _visitors_r2)
5123 (Pervasives.(==) _visitors_c3 _visitors_r3)))
5124 then _visitors_this
5125 else
5126 For (_visitors_r0, _visitors_r1, _visitors_r2, _visitors_r3)
5127 method on_Switch env _visitors_this _visitors_c0 _visitors_c1 =
5128 let _visitors_r0 = self#on_expr env _visitors_c0 in
5129 let _visitors_r1 = self#on_list self#on_case env _visitors_c1
5132 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5133 (Pervasives.(==) _visitors_c1 _visitors_r1)
5134 then _visitors_this
5135 else Switch (_visitors_r0, _visitors_r1)
5136 method on_Foreach env _visitors_this _visitors_c0 _visitors_c1
5137 _visitors_c2 =
5138 let _visitors_r0 = self#on_expr env _visitors_c0 in
5139 let _visitors_r1 = self#on_as_expr env _visitors_c1 in
5140 let _visitors_r2 = self#on_block env _visitors_c2 in
5142 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5143 (Pervasives.(&&)
5144 (Pervasives.(==) _visitors_c1 _visitors_r1)
5145 (Pervasives.(==) _visitors_c2 _visitors_r2))
5146 then _visitors_this
5147 else Foreach (_visitors_r0, _visitors_r1, _visitors_r2)
5148 method on_Try env _visitors_this _visitors_c0 _visitors_c1
5149 _visitors_c2 =
5150 let _visitors_r0 = self#on_block env _visitors_c0 in
5151 let _visitors_r1 = self#on_list self#on_catch env _visitors_c1
5153 let _visitors_r2 = self#on_block env _visitors_c2 in
5155 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5156 (Pervasives.(&&)
5157 (Pervasives.(==) _visitors_c1 _visitors_r1)
5158 (Pervasives.(==) _visitors_c2 _visitors_r2))
5159 then _visitors_this
5160 else Try (_visitors_r0, _visitors_r1, _visitors_r2)
5161 method on_Noop env _visitors_this =
5162 if true then _visitors_this else Noop
5163 method on_stmt env _visitors_this =
5164 match _visitors_this with
5165 | Fallthrough as _visitors_this ->
5166 self#on_Fallthrough env _visitors_this
5167 | Expr _visitors_c0 as _visitors_this ->
5168 self#on_Expr env _visitors_this _visitors_c0
5169 | Break _visitors_c0 as _visitors_this ->
5170 self#on_Break env _visitors_this _visitors_c0
5171 | Continue _visitors_c0 as _visitors_this ->
5172 self#on_Continue env _visitors_this _visitors_c0
5173 | Throw (_visitors_c0,_visitors_c1) as _visitors_this ->
5174 self#on_Throw env _visitors_this _visitors_c0 _visitors_c1
5175 | Return (_visitors_c0,_visitors_c1) as _visitors_this ->
5176 self#on_Return env _visitors_this _visitors_c0 _visitors_c1
5177 | GotoLabel _visitors_c0 as _visitors_this ->
5178 self#on_GotoLabel env _visitors_this _visitors_c0
5179 | Goto _visitors_c0 as _visitors_this ->
5180 self#on_Goto env _visitors_this _visitors_c0
5181 | Static_var _visitors_c0 as _visitors_this ->
5182 self#on_Static_var env _visitors_this _visitors_c0
5183 | Global_var _visitors_c0 as _visitors_this ->
5184 self#on_Global_var env _visitors_this _visitors_c0
5185 | If (_visitors_c0,_visitors_c1,_visitors_c2) as _visitors_this
5187 self#on_If env _visitors_this _visitors_c0 _visitors_c1
5188 _visitors_c2
5189 | Do (_visitors_c0,_visitors_c1) as _visitors_this ->
5190 self#on_Do env _visitors_this _visitors_c0 _visitors_c1
5191 | While (_visitors_c0,_visitors_c1) as _visitors_this ->
5192 self#on_While env _visitors_this _visitors_c0 _visitors_c1
5193 | Using (_visitors_c0,_visitors_c1,_visitors_c2) as
5194 _visitors_this ->
5195 self#on_Using env _visitors_this _visitors_c0 _visitors_c1
5196 _visitors_c2
5197 | For (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3) as
5198 _visitors_this ->
5199 self#on_For env _visitors_this _visitors_c0 _visitors_c1
5200 _visitors_c2 _visitors_c3
5201 | Switch (_visitors_c0,_visitors_c1) as _visitors_this ->
5202 self#on_Switch env _visitors_this _visitors_c0 _visitors_c1
5203 | Foreach (_visitors_c0,_visitors_c1,_visitors_c2) as
5204 _visitors_this ->
5205 self#on_Foreach env _visitors_this _visitors_c0
5206 _visitors_c1 _visitors_c2
5207 | Try (_visitors_c0,_visitors_c1,_visitors_c2) as
5208 _visitors_this ->
5209 self#on_Try env _visitors_this _visitors_c0 _visitors_c1
5210 _visitors_c2
5211 | Noop as _visitors_this -> self#on_Noop env _visitors_this
5212 method on_As_v env _visitors_this _visitors_c0 =
5213 let _visitors_r0 = self#on_expr env _visitors_c0 in
5214 if Pervasives.(==) _visitors_c0 _visitors_r0
5215 then _visitors_this
5216 else As_v _visitors_r0
5217 method on_As_kv env _visitors_this _visitors_c0 _visitors_c1 =
5218 let _visitors_r0 = self#on_expr env _visitors_c0 in
5219 let _visitors_r1 = self#on_expr env _visitors_c1 in
5221 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5222 (Pervasives.(==) _visitors_c1 _visitors_r1)
5223 then _visitors_this
5224 else As_kv (_visitors_r0, _visitors_r1)
5225 method on_Await_as_v env _visitors_this _visitors_c0 _visitors_c1
5227 let _visitors_r0 = self#on_pos env _visitors_c0 in
5228 let _visitors_r1 = self#on_expr env _visitors_c1 in
5230 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5231 (Pervasives.(==) _visitors_c1 _visitors_r1)
5232 then _visitors_this
5233 else Await_as_v (_visitors_r0, _visitors_r1)
5234 method on_Await_as_kv env _visitors_this _visitors_c0
5235 _visitors_c1 _visitors_c2 =
5236 let _visitors_r0 = self#on_pos env _visitors_c0 in
5237 let _visitors_r1 = self#on_expr env _visitors_c1 in
5238 let _visitors_r2 = self#on_expr env _visitors_c2 in
5240 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5241 (Pervasives.(&&)
5242 (Pervasives.(==) _visitors_c1 _visitors_r1)
5243 (Pervasives.(==) _visitors_c2 _visitors_r2))
5244 then _visitors_this
5245 else Await_as_kv (_visitors_r0, _visitors_r1, _visitors_r2)
5246 method on_as_expr env _visitors_this =
5247 match _visitors_this with
5248 | As_v _visitors_c0 as _visitors_this ->
5249 self#on_As_v env _visitors_this _visitors_c0
5250 | As_kv (_visitors_c0,_visitors_c1) as _visitors_this ->
5251 self#on_As_kv env _visitors_this _visitors_c0 _visitors_c1
5252 | Await_as_v (_visitors_c0,_visitors_c1) as _visitors_this ->
5253 self#on_Await_as_v env _visitors_this _visitors_c0
5254 _visitors_c1
5255 | Await_as_kv (_visitors_c0,_visitors_c1,_visitors_c2) as
5256 _visitors_this ->
5257 self#on_Await_as_kv env _visitors_this _visitors_c0
5258 _visitors_c1 _visitors_c2
5259 method on_block env = self#on_list self#on_stmt env
5260 method on_CIparent env _visitors_this =
5261 if true then _visitors_this else CIparent
5262 method on_CIself env _visitors_this =
5263 if true then _visitors_this else CIself
5264 method on_CIstatic env _visitors_this =
5265 if true then _visitors_this else CIstatic
5266 method on_CIexpr env _visitors_this _visitors_c0 =
5267 let _visitors_r0 = self#on_expr env _visitors_c0 in
5268 if Pervasives.(==) _visitors_c0 _visitors_r0
5269 then _visitors_this
5270 else CIexpr _visitors_r0
5271 method on_CI env _visitors_this _visitors_c0 =
5272 let _visitors_r0 = self#on_instantiated_sid env _visitors_c0
5274 if Pervasives.(==) _visitors_c0 _visitors_r0
5275 then _visitors_this
5276 else CI _visitors_r0
5277 method on_class_id env _visitors_this =
5278 match _visitors_this with
5279 | CIparent as _visitors_this ->
5280 self#on_CIparent env _visitors_this
5281 | CIself as _visitors_this ->
5282 self#on_CIself env _visitors_this
5283 | CIstatic as _visitors_this ->
5284 self#on_CIstatic env _visitors_this
5285 | CIexpr _visitors_c0 as _visitors_this ->
5286 self#on_CIexpr env _visitors_this _visitors_c0
5287 | CI _visitors_c0 as _visitors_this ->
5288 self#on_CI env _visitors_this _visitors_c0
5289 method on_expr env
5290 ((_visitors_c0,_visitors_c1) as _visitors_this) =
5291 let _visitors_r0 = self#on_expr_annotation env _visitors_c0 in
5292 let _visitors_r1 = self#on_expr_ env _visitors_c1 in
5294 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5295 (Pervasives.(==) _visitors_c1 _visitors_r1)
5296 then _visitors_this
5297 else (_visitors_r0, _visitors_r1)
5298 method on_Array env _visitors_this _visitors_c0 =
5299 let _visitors_r0 = self#on_list self#on_afield env _visitors_c0
5301 if Pervasives.(==) _visitors_c0 _visitors_r0
5302 then _visitors_this
5303 else Array _visitors_r0
5304 method on_Darray env _visitors_this _visitors_c0 =
5305 let _visitors_r0 =
5306 self#on_list
5307 (fun env ->
5308 fun ((_visitors_c0,_visitors_c1) as _visitors_this) ->
5309 let _visitors_r0 = self#on_expr env _visitors_c0 in
5310 let _visitors_r1 = self#on_expr env _visitors_c1 in
5312 Pervasives.(&&)
5313 (Pervasives.(==) _visitors_c0 _visitors_r0)
5314 (Pervasives.(==) _visitors_c1 _visitors_r1)
5315 then _visitors_this
5316 else (_visitors_r0, _visitors_r1)) env _visitors_c0
5318 if Pervasives.(==) _visitors_c0 _visitors_r0
5319 then _visitors_this
5320 else Darray _visitors_r0
5321 method on_Varray env _visitors_this _visitors_c0 =
5322 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5324 if Pervasives.(==) _visitors_c0 _visitors_r0
5325 then _visitors_this
5326 else Varray _visitors_r0
5327 method on_Shape env _visitors_this _visitors_c0 =
5328 let _visitors_r0 =
5329 self#on_shape_map self#on_expr env _visitors_c0 in
5330 if Pervasives.(==) _visitors_c0 _visitors_r0
5331 then _visitors_this
5332 else Shape _visitors_r0
5333 method on_ValCollection env _visitors_this _visitors_c0
5334 _visitors_c1 =
5335 let _visitors_r0 = self#on_vc_kind env _visitors_c0 in
5336 let _visitors_r1 = self#on_list self#on_expr env _visitors_c1
5339 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5340 (Pervasives.(==) _visitors_c1 _visitors_r1)
5341 then _visitors_this
5342 else ValCollection (_visitors_r0, _visitors_r1)
5343 method on_KeyValCollection env _visitors_this _visitors_c0
5344 _visitors_c1 =
5345 let _visitors_r0 = self#on_kvc_kind env _visitors_c0 in
5346 let _visitors_r1 = self#on_list self#on_field env _visitors_c1
5349 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5350 (Pervasives.(==) _visitors_c1 _visitors_r1)
5351 then _visitors_this
5352 else KeyValCollection (_visitors_r0, _visitors_r1)
5353 method on_Null env _visitors_this =
5354 if true then _visitors_this else Null
5355 method on_This env _visitors_this =
5356 if true then _visitors_this else This
5357 method on_True env _visitors_this =
5358 if true then _visitors_this else True
5359 method on_False env _visitors_this =
5360 if true then _visitors_this else False
5361 method on_Id env _visitors_this _visitors_c0 =
5362 let _visitors_r0 = self#on_sid env _visitors_c0 in
5363 if Pervasives.(==) _visitors_c0 _visitors_r0
5364 then _visitors_this
5365 else Id _visitors_r0
5366 method on_Lvar env _visitors_this _visitors_c0 =
5367 let _visitors_r0 = self#on_lid env _visitors_c0 in
5368 if Pervasives.(==) _visitors_c0 _visitors_r0
5369 then _visitors_this
5370 else Lvar _visitors_r0
5371 method on_Dollar env _visitors_this _visitors_c0 =
5372 let _visitors_r0 = self#on_expr env _visitors_c0 in
5373 if Pervasives.(==) _visitors_c0 _visitors_r0
5374 then _visitors_this
5375 else Dollar _visitors_r0
5376 method on_Dollardollar env _visitors_this _visitors_c0 =
5377 let _visitors_r0 = self#on_lid env _visitors_c0 in
5378 if Pervasives.(==) _visitors_c0 _visitors_r0
5379 then _visitors_this
5380 else Dollardollar _visitors_r0
5381 method on_Clone env _visitors_this _visitors_c0 =
5382 let _visitors_r0 = self#on_expr env _visitors_c0 in
5383 if Pervasives.(==) _visitors_c0 _visitors_r0
5384 then _visitors_this
5385 else Clone _visitors_r0
5386 method on_Obj_get env _visitors_this _visitors_c0 _visitors_c1
5387 _visitors_c2 =
5388 let _visitors_r0 = self#on_expr env _visitors_c0 in
5389 let _visitors_r1 = self#on_expr env _visitors_c1 in
5390 let _visitors_r2 = self#on_og_null_flavor env _visitors_c2 in
5392 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5393 (Pervasives.(&&)
5394 (Pervasives.(==) _visitors_c1 _visitors_r1)
5395 (Pervasives.(==) _visitors_c2 _visitors_r2))
5396 then _visitors_this
5397 else Obj_get (_visitors_r0, _visitors_r1, _visitors_r2)
5398 method on_Array_get env _visitors_this _visitors_c0 _visitors_c1
5400 let _visitors_r0 = self#on_expr env _visitors_c0 in
5401 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
5404 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5405 (Pervasives.(==) _visitors_c1 _visitors_r1)
5406 then _visitors_this
5407 else Array_get (_visitors_r0, _visitors_r1)
5408 method on_Class_get env _visitors_this _visitors_c0 _visitors_c1
5410 let _visitors_r0 = self#on_class_id env _visitors_c0 in
5411 let _visitors_r1 = self#on_pstring env _visitors_c1 in
5413 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5414 (Pervasives.(==) _visitors_c1 _visitors_r1)
5415 then _visitors_this
5416 else Class_get (_visitors_r0, _visitors_r1)
5417 method on_Class_const env _visitors_this _visitors_c0
5418 _visitors_c1 =
5419 let _visitors_r0 = self#on_class_id env _visitors_c0 in
5420 let _visitors_r1 = self#on_pstring env _visitors_c1 in
5422 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5423 (Pervasives.(==) _visitors_c1 _visitors_r1)
5424 then _visitors_this
5425 else Class_const (_visitors_r0, _visitors_r1)
5426 method on_Call env _visitors_this _visitors_c0 _visitors_c1
5427 _visitors_c2 _visitors_c3 _visitors_c4 =
5428 let _visitors_r0 = self#on_call_type env _visitors_c0 in
5429 let _visitors_r1 = self#on_expr env _visitors_c1 in
5430 let _visitors_r2 = self#on_list self#on_hint env _visitors_c2
5432 let _visitors_r3 = self#on_list self#on_expr env _visitors_c3
5434 let _visitors_r4 = self#on_list self#on_expr env _visitors_c4
5437 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5438 (Pervasives.(&&)
5439 (Pervasives.(==) _visitors_c1 _visitors_r1)
5440 (Pervasives.(&&)
5441 (Pervasives.(==) _visitors_c2 _visitors_r2)
5442 (Pervasives.(&&)
5443 (Pervasives.(==) _visitors_c3 _visitors_r3)
5444 (Pervasives.(==) _visitors_c4 _visitors_r4))))
5445 then _visitors_this
5446 else
5447 Call
5448 (_visitors_r0, _visitors_r1, _visitors_r2, _visitors_r3,
5449 _visitors_r4)
5450 method on_Int env _visitors_this _visitors_c0 =
5451 let _visitors_r0 = self#on_pstring env _visitors_c0 in
5452 if Pervasives.(==) _visitors_c0 _visitors_r0
5453 then _visitors_this
5454 else Int _visitors_r0
5455 method on_Float env _visitors_this _visitors_c0 =
5456 let _visitors_r0 = self#on_pstring env _visitors_c0 in
5457 if Pervasives.(==) _visitors_c0 _visitors_r0
5458 then _visitors_this
5459 else Float _visitors_r0
5460 method on_String env _visitors_this _visitors_c0 =
5461 let _visitors_r0 = self#on_pstring env _visitors_c0 in
5462 if Pervasives.(==) _visitors_c0 _visitors_r0
5463 then _visitors_this
5464 else String _visitors_r0
5465 method on_String2 env _visitors_this _visitors_c0 =
5466 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5468 if Pervasives.(==) _visitors_c0 _visitors_r0
5469 then _visitors_this
5470 else String2 _visitors_r0
5471 method on_Yield env _visitors_this _visitors_c0 =
5472 let _visitors_r0 = self#on_afield env _visitors_c0 in
5473 if Pervasives.(==) _visitors_c0 _visitors_r0
5474 then _visitors_this
5475 else Yield _visitors_r0
5476 method on_Yield_break env _visitors_this =
5477 if true then _visitors_this else Yield_break
5478 method on_Await env _visitors_this _visitors_c0 =
5479 let _visitors_r0 = self#on_expr env _visitors_c0 in
5480 if Pervasives.(==) _visitors_c0 _visitors_r0
5481 then _visitors_this
5482 else Await _visitors_r0
5483 method on_Suspend env _visitors_this _visitors_c0 =
5484 let _visitors_r0 = self#on_expr env _visitors_c0 in
5485 if Pervasives.(==) _visitors_c0 _visitors_r0
5486 then _visitors_this
5487 else Suspend _visitors_r0
5488 method on_List env _visitors_this _visitors_c0 =
5489 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5491 if Pervasives.(==) _visitors_c0 _visitors_r0
5492 then _visitors_this
5493 else List _visitors_r0
5494 method on_Expr_list env _visitors_this _visitors_c0 =
5495 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5497 if Pervasives.(==) _visitors_c0 _visitors_r0
5498 then _visitors_this
5499 else Expr_list _visitors_r0
5500 method on_Cast env _visitors_this _visitors_c0 _visitors_c1 =
5501 let _visitors_r0 = self#on_hint env _visitors_c0 in
5502 let _visitors_r1 = self#on_expr env _visitors_c1 in
5504 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5505 (Pervasives.(==) _visitors_c1 _visitors_r1)
5506 then _visitors_this
5507 else Cast (_visitors_r0, _visitors_r1)
5508 method on_Unop env _visitors_this _visitors_c0 _visitors_c1 =
5509 let _visitors_r0 = self#on_uop env _visitors_c0 in
5510 let _visitors_r1 = self#on_expr env _visitors_c1 in
5512 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5513 (Pervasives.(==) _visitors_c1 _visitors_r1)
5514 then _visitors_this
5515 else Unop (_visitors_r0, _visitors_r1)
5516 method on_Binop env _visitors_this _visitors_c0 _visitors_c1
5517 _visitors_c2 =
5518 let _visitors_r0 = self#on_bop env _visitors_c0 in
5519 let _visitors_r1 = self#on_expr env _visitors_c1 in
5520 let _visitors_r2 = self#on_expr env _visitors_c2 in
5522 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5523 (Pervasives.(&&)
5524 (Pervasives.(==) _visitors_c1 _visitors_r1)
5525 (Pervasives.(==) _visitors_c2 _visitors_r2))
5526 then _visitors_this
5527 else Binop (_visitors_r0, _visitors_r1, _visitors_r2)
5528 method on_Pipe env _visitors_this _visitors_c0 _visitors_c1
5529 _visitors_c2 =
5530 let _visitors_r0 = self#on_lid env _visitors_c0 in
5531 let _visitors_r1 = self#on_expr env _visitors_c1 in
5532 let _visitors_r2 = self#on_expr env _visitors_c2 in
5534 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5535 (Pervasives.(&&)
5536 (Pervasives.(==) _visitors_c1 _visitors_r1)
5537 (Pervasives.(==) _visitors_c2 _visitors_r2))
5538 then _visitors_this
5539 else Pipe (_visitors_r0, _visitors_r1, _visitors_r2)
5540 method on_Eif env _visitors_this _visitors_c0 _visitors_c1
5541 _visitors_c2 =
5542 let _visitors_r0 = self#on_expr env _visitors_c0 in
5543 let _visitors_r1 = self#on_option self#on_expr env _visitors_c1
5545 let _visitors_r2 = self#on_expr env _visitors_c2 in
5547 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5548 (Pervasives.(&&)
5549 (Pervasives.(==) _visitors_c1 _visitors_r1)
5550 (Pervasives.(==) _visitors_c2 _visitors_r2))
5551 then _visitors_this
5552 else Eif (_visitors_r0, _visitors_r1, _visitors_r2)
5553 method on_NullCoalesce env _visitors_this _visitors_c0
5554 _visitors_c1 =
5555 let _visitors_r0 = self#on_expr env _visitors_c0 in
5556 let _visitors_r1 = self#on_expr env _visitors_c1 in
5558 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5559 (Pervasives.(==) _visitors_c1 _visitors_r1)
5560 then _visitors_this
5561 else NullCoalesce (_visitors_r0, _visitors_r1)
5562 method on_InstanceOf env _visitors_this _visitors_c0 _visitors_c1
5564 let _visitors_r0 = self#on_expr env _visitors_c0 in
5565 let _visitors_r1 = self#on_class_id env _visitors_c1 in
5567 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5568 (Pervasives.(==) _visitors_c1 _visitors_r1)
5569 then _visitors_this
5570 else InstanceOf (_visitors_r0, _visitors_r1)
5571 method on_Is env _visitors_this _visitors_c0 _visitors_c1 =
5572 let _visitors_r0 = self#on_expr env _visitors_c0 in
5573 let _visitors_r1 = self#on_hint env _visitors_c1 in
5575 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5576 (Pervasives.(==) _visitors_c1 _visitors_r1)
5577 then _visitors_this
5578 else Is (_visitors_r0, _visitors_r1)
5579 method on_New env _visitors_this _visitors_c0 _visitors_c1
5580 _visitors_c2 =
5581 let _visitors_r0 = self#on_class_id env _visitors_c0 in
5582 let _visitors_r1 = self#on_list self#on_expr env _visitors_c1
5584 let _visitors_r2 = self#on_list self#on_expr env _visitors_c2
5587 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5588 (Pervasives.(&&)
5589 (Pervasives.(==) _visitors_c1 _visitors_r1)
5590 (Pervasives.(==) _visitors_c2 _visitors_r2))
5591 then _visitors_this
5592 else New (_visitors_r0, _visitors_r1, _visitors_r2)
5593 method on_Efun env _visitors_this _visitors_c0 _visitors_c1 =
5594 let _visitors_r0 = self#on_fun_ env _visitors_c0 in
5595 let _visitors_r1 = self#on_list self#on_lid env _visitors_c1
5598 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5599 (Pervasives.(==) _visitors_c1 _visitors_r1)
5600 then _visitors_this
5601 else Efun (_visitors_r0, _visitors_r1)
5602 method on_Xml env _visitors_this _visitors_c0 _visitors_c1
5603 _visitors_c2 =
5604 let _visitors_r0 = self#on_sid env _visitors_c0 in
5605 let _visitors_r1 =
5606 self#on_list self#on_xhp_attribute env _visitors_c1 in
5607 let _visitors_r2 = self#on_list self#on_expr env _visitors_c2
5610 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5611 (Pervasives.(&&)
5612 (Pervasives.(==) _visitors_c1 _visitors_r1)
5613 (Pervasives.(==) _visitors_c2 _visitors_r2))
5614 then _visitors_this
5615 else Xml (_visitors_r0, _visitors_r1, _visitors_r2)
5616 method on_Callconv env _visitors_this _visitors_c0 _visitors_c1 =
5617 let _visitors_r0 = self#on_param_kind env _visitors_c0 in
5618 let _visitors_r1 = self#on_expr env _visitors_c1 in
5620 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5621 (Pervasives.(==) _visitors_c1 _visitors_r1)
5622 then _visitors_this
5623 else Callconv (_visitors_r0, _visitors_r1)
5624 method on_Lplaceholder env _visitors_this _visitors_c0 =
5625 let _visitors_r0 = self#on_pos env _visitors_c0 in
5626 if Pervasives.(==) _visitors_c0 _visitors_r0
5627 then _visitors_this
5628 else Lplaceholder _visitors_r0
5629 method on_Fun_id env _visitors_this _visitors_c0 =
5630 let _visitors_r0 = self#on_sid env _visitors_c0 in
5631 if Pervasives.(==) _visitors_c0 _visitors_r0
5632 then _visitors_this
5633 else Fun_id _visitors_r0
5634 method on_Method_id env _visitors_this _visitors_c0 _visitors_c1
5636 let _visitors_r0 = self#on_expr env _visitors_c0 in
5637 let _visitors_r1 = self#on_pstring env _visitors_c1 in
5639 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5640 (Pervasives.(==) _visitors_c1 _visitors_r1)
5641 then _visitors_this
5642 else Method_id (_visitors_r0, _visitors_r1)
5643 method on_Method_caller env _visitors_this _visitors_c0
5644 _visitors_c1 =
5645 let _visitors_r0 = self#on_sid env _visitors_c0 in
5646 let _visitors_r1 = self#on_pstring env _visitors_c1 in
5648 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5649 (Pervasives.(==) _visitors_c1 _visitors_r1)
5650 then _visitors_this
5651 else Method_caller (_visitors_r0, _visitors_r1)
5652 method on_Smethod_id env _visitors_this _visitors_c0 _visitors_c1
5654 let _visitors_r0 = self#on_sid env _visitors_c0 in
5655 let _visitors_r1 = self#on_pstring env _visitors_c1 in
5657 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5658 (Pervasives.(==) _visitors_c1 _visitors_r1)
5659 then _visitors_this
5660 else Smethod_id (_visitors_r0, _visitors_r1)
5661 method on_Special_func env _visitors_this _visitors_c0 =
5662 let _visitors_r0 = self#on_special_func env _visitors_c0 in
5663 if Pervasives.(==) _visitors_c0 _visitors_r0
5664 then _visitors_this
5665 else Special_func _visitors_r0
5666 method on_Pair env _visitors_this _visitors_c0 _visitors_c1 =
5667 let _visitors_r0 = self#on_expr env _visitors_c0 in
5668 let _visitors_r1 = self#on_expr env _visitors_c1 in
5670 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5671 (Pervasives.(==) _visitors_c1 _visitors_r1)
5672 then _visitors_this
5673 else Pair (_visitors_r0, _visitors_r1)
5674 method on_Assert env _visitors_this _visitors_c0 =
5675 let _visitors_r0 = self#on_assert_expr env _visitors_c0 in
5676 if Pervasives.(==) _visitors_c0 _visitors_r0
5677 then _visitors_this
5678 else Assert _visitors_r0
5679 method on_Typename env _visitors_this _visitors_c0 =
5680 let _visitors_r0 = self#on_sid env _visitors_c0 in
5681 if Pervasives.(==) _visitors_c0 _visitors_r0
5682 then _visitors_this
5683 else Typename _visitors_r0
5684 method on_Any env _visitors_this =
5685 if true then _visitors_this else Any
5686 method on_expr_ env _visitors_this =
5687 match _visitors_this with
5688 | Array _visitors_c0 as _visitors_this ->
5689 self#on_Array env _visitors_this _visitors_c0
5690 | Darray _visitors_c0 as _visitors_this ->
5691 self#on_Darray env _visitors_this _visitors_c0
5692 | Varray _visitors_c0 as _visitors_this ->
5693 self#on_Varray env _visitors_this _visitors_c0
5694 | Shape _visitors_c0 as _visitors_this ->
5695 self#on_Shape env _visitors_this _visitors_c0
5696 | ValCollection (_visitors_c0,_visitors_c1) as _visitors_this
5698 self#on_ValCollection env _visitors_this _visitors_c0
5699 _visitors_c1
5700 | KeyValCollection (_visitors_c0,_visitors_c1) as
5701 _visitors_this ->
5702 self#on_KeyValCollection env _visitors_this _visitors_c0
5703 _visitors_c1
5704 | Null as _visitors_this -> self#on_Null env _visitors_this
5705 | This as _visitors_this -> self#on_This env _visitors_this
5706 | True as _visitors_this -> self#on_True env _visitors_this
5707 | False as _visitors_this -> self#on_False env _visitors_this
5708 | Id _visitors_c0 as _visitors_this ->
5709 self#on_Id env _visitors_this _visitors_c0
5710 | Lvar _visitors_c0 as _visitors_this ->
5711 self#on_Lvar env _visitors_this _visitors_c0
5712 | Dollar _visitors_c0 as _visitors_this ->
5713 self#on_Dollar env _visitors_this _visitors_c0
5714 | Dollardollar _visitors_c0 as _visitors_this ->
5715 self#on_Dollardollar env _visitors_this _visitors_c0
5716 | Clone _visitors_c0 as _visitors_this ->
5717 self#on_Clone env _visitors_this _visitors_c0
5718 | Obj_get (_visitors_c0,_visitors_c1,_visitors_c2) as
5719 _visitors_this ->
5720 self#on_Obj_get env _visitors_this _visitors_c0
5721 _visitors_c1 _visitors_c2
5722 | Array_get (_visitors_c0,_visitors_c1) as _visitors_this ->
5723 self#on_Array_get env _visitors_this _visitors_c0
5724 _visitors_c1
5725 | Class_get (_visitors_c0,_visitors_c1) as _visitors_this ->
5726 self#on_Class_get env _visitors_this _visitors_c0
5727 _visitors_c1
5728 | Class_const (_visitors_c0,_visitors_c1) as _visitors_this ->
5729 self#on_Class_const env _visitors_this _visitors_c0
5730 _visitors_c1
5731 | Call
5732 (_visitors_c0,_visitors_c1,_visitors_c2,_visitors_c3,_visitors_c4)
5733 as _visitors_this ->
5734 self#on_Call env _visitors_this _visitors_c0 _visitors_c1
5735 _visitors_c2 _visitors_c3 _visitors_c4
5736 | Int _visitors_c0 as _visitors_this ->
5737 self#on_Int env _visitors_this _visitors_c0
5738 | Float _visitors_c0 as _visitors_this ->
5739 self#on_Float env _visitors_this _visitors_c0
5740 | String _visitors_c0 as _visitors_this ->
5741 self#on_String env _visitors_this _visitors_c0
5742 | String2 _visitors_c0 as _visitors_this ->
5743 self#on_String2 env _visitors_this _visitors_c0
5744 | Yield _visitors_c0 as _visitors_this ->
5745 self#on_Yield env _visitors_this _visitors_c0
5746 | Yield_break as _visitors_this ->
5747 self#on_Yield_break env _visitors_this
5748 | Await _visitors_c0 as _visitors_this ->
5749 self#on_Await env _visitors_this _visitors_c0
5750 | Suspend _visitors_c0 as _visitors_this ->
5751 self#on_Suspend env _visitors_this _visitors_c0
5752 | List _visitors_c0 as _visitors_this ->
5753 self#on_List env _visitors_this _visitors_c0
5754 | Expr_list _visitors_c0 as _visitors_this ->
5755 self#on_Expr_list env _visitors_this _visitors_c0
5756 | Cast (_visitors_c0,_visitors_c1) as _visitors_this ->
5757 self#on_Cast env _visitors_this _visitors_c0 _visitors_c1
5758 | Unop (_visitors_c0,_visitors_c1) as _visitors_this ->
5759 self#on_Unop env _visitors_this _visitors_c0 _visitors_c1
5760 | Binop (_visitors_c0,_visitors_c1,_visitors_c2) as
5761 _visitors_this ->
5762 self#on_Binop env _visitors_this _visitors_c0 _visitors_c1
5763 _visitors_c2
5764 | Pipe (_visitors_c0,_visitors_c1,_visitors_c2) as
5765 _visitors_this ->
5766 self#on_Pipe env _visitors_this _visitors_c0 _visitors_c1
5767 _visitors_c2
5768 | Eif (_visitors_c0,_visitors_c1,_visitors_c2) as
5769 _visitors_this ->
5770 self#on_Eif env _visitors_this _visitors_c0 _visitors_c1
5771 _visitors_c2
5772 | NullCoalesce (_visitors_c0,_visitors_c1) as _visitors_this ->
5773 self#on_NullCoalesce env _visitors_this _visitors_c0
5774 _visitors_c1
5775 | InstanceOf (_visitors_c0,_visitors_c1) as _visitors_this ->
5776 self#on_InstanceOf env _visitors_this _visitors_c0
5777 _visitors_c1
5778 | Is (_visitors_c0,_visitors_c1) as _visitors_this ->
5779 self#on_Is env _visitors_this _visitors_c0 _visitors_c1
5780 | New (_visitors_c0,_visitors_c1,_visitors_c2) as
5781 _visitors_this ->
5782 self#on_New env _visitors_this _visitors_c0 _visitors_c1
5783 _visitors_c2
5784 | Efun (_visitors_c0,_visitors_c1) as _visitors_this ->
5785 self#on_Efun env _visitors_this _visitors_c0 _visitors_c1
5786 | Xml (_visitors_c0,_visitors_c1,_visitors_c2) as
5787 _visitors_this ->
5788 self#on_Xml env _visitors_this _visitors_c0 _visitors_c1
5789 _visitors_c2
5790 | Callconv (_visitors_c0,_visitors_c1) as _visitors_this ->
5791 self#on_Callconv env _visitors_this _visitors_c0
5792 _visitors_c1
5793 | Lplaceholder _visitors_c0 as _visitors_this ->
5794 self#on_Lplaceholder env _visitors_this _visitors_c0
5795 | Fun_id _visitors_c0 as _visitors_this ->
5796 self#on_Fun_id env _visitors_this _visitors_c0
5797 | Method_id (_visitors_c0,_visitors_c1) as _visitors_this ->
5798 self#on_Method_id env _visitors_this _visitors_c0
5799 _visitors_c1
5800 | Method_caller (_visitors_c0,_visitors_c1) as _visitors_this
5802 self#on_Method_caller env _visitors_this _visitors_c0
5803 _visitors_c1
5804 | Smethod_id (_visitors_c0,_visitors_c1) as _visitors_this ->
5805 self#on_Smethod_id env _visitors_this _visitors_c0
5806 _visitors_c1
5807 | Special_func _visitors_c0 as _visitors_this ->
5808 self#on_Special_func env _visitors_this _visitors_c0
5809 | Pair (_visitors_c0,_visitors_c1) as _visitors_this ->
5810 self#on_Pair env _visitors_this _visitors_c0 _visitors_c1
5811 | Assert _visitors_c0 as _visitors_this ->
5812 self#on_Assert env _visitors_this _visitors_c0
5813 | Typename _visitors_c0 as _visitors_this ->
5814 self#on_Typename env _visitors_this _visitors_c0
5815 | Any as _visitors_this -> self#on_Any env _visitors_this
5816 method on_AE_assert env _visitors_this _visitors_c0 =
5817 let _visitors_r0 = self#on_expr env _visitors_c0 in
5818 if Pervasives.(==) _visitors_c0 _visitors_r0
5819 then _visitors_this
5820 else AE_assert _visitors_r0
5821 method on_assert_expr env _visitors_this =
5822 match _visitors_this with
5823 | AE_assert _visitors_c0 as _visitors_this ->
5824 self#on_AE_assert env _visitors_this _visitors_c0
5825 method on_Default env _visitors_this _visitors_c0 =
5826 let _visitors_r0 = self#on_block env _visitors_c0 in
5827 if Pervasives.(==) _visitors_c0 _visitors_r0
5828 then _visitors_this
5829 else Default _visitors_r0
5830 method on_Case env _visitors_this _visitors_c0 _visitors_c1 =
5831 let _visitors_r0 = self#on_expr env _visitors_c0 in
5832 let _visitors_r1 = self#on_block env _visitors_c1 in
5834 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5835 (Pervasives.(==) _visitors_c1 _visitors_r1)
5836 then _visitors_this
5837 else Case (_visitors_r0, _visitors_r1)
5838 method on_case env _visitors_this =
5839 match _visitors_this with
5840 | Default _visitors_c0 as _visitors_this ->
5841 self#on_Default env _visitors_this _visitors_c0
5842 | Case (_visitors_c0,_visitors_c1) as _visitors_this ->
5843 self#on_Case env _visitors_this _visitors_c0 _visitors_c1
5844 method on_catch env
5845 ((_visitors_c0,_visitors_c1,_visitors_c2) as _visitors_this) =
5846 let _visitors_r0 = self#on_sid env _visitors_c0 in
5847 let _visitors_r1 = self#on_lid env _visitors_c1 in
5848 let _visitors_r2 = self#on_block env _visitors_c2 in
5850 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5851 (Pervasives.(&&)
5852 (Pervasives.(==) _visitors_c1 _visitors_r1)
5853 (Pervasives.(==) _visitors_c2 _visitors_r2))
5854 then _visitors_this
5855 else (_visitors_r0, _visitors_r1, _visitors_r2)
5856 method on_field env
5857 ((_visitors_c0,_visitors_c1) as _visitors_this) =
5858 let _visitors_r0 = self#on_expr env _visitors_c0 in
5859 let _visitors_r1 = self#on_expr env _visitors_c1 in
5861 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5862 (Pervasives.(==) _visitors_c1 _visitors_r1)
5863 then _visitors_this
5864 else (_visitors_r0, _visitors_r1)
5865 method on_AFvalue env _visitors_this _visitors_c0 =
5866 let _visitors_r0 = self#on_expr env _visitors_c0 in
5867 if Pervasives.(==) _visitors_c0 _visitors_r0
5868 then _visitors_this
5869 else AFvalue _visitors_r0
5870 method on_AFkvalue env _visitors_this _visitors_c0 _visitors_c1 =
5871 let _visitors_r0 = self#on_expr env _visitors_c0 in
5872 let _visitors_r1 = self#on_expr env _visitors_c1 in
5874 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5875 (Pervasives.(==) _visitors_c1 _visitors_r1)
5876 then _visitors_this
5877 else AFkvalue (_visitors_r0, _visitors_r1)
5878 method on_afield env _visitors_this =
5879 match _visitors_this with
5880 | AFvalue _visitors_c0 as _visitors_this ->
5881 self#on_AFvalue env _visitors_this _visitors_c0
5882 | AFkvalue (_visitors_c0,_visitors_c1) as _visitors_this ->
5883 self#on_AFkvalue env _visitors_this _visitors_c0
5884 _visitors_c1
5885 method on_Xhp_simple env _visitors_this _visitors_c0 _visitors_c1
5887 let _visitors_r0 = self#on_pstring env _visitors_c0 in
5888 let _visitors_r1 = self#on_expr env _visitors_c1 in
5890 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
5891 (Pervasives.(==) _visitors_c1 _visitors_r1)
5892 then _visitors_this
5893 else Xhp_simple (_visitors_r0, _visitors_r1)
5894 method on_Xhp_spread env _visitors_this _visitors_c0 =
5895 let _visitors_r0 = self#on_expr env _visitors_c0 in
5896 if Pervasives.(==) _visitors_c0 _visitors_r0
5897 then _visitors_this
5898 else Xhp_spread _visitors_r0
5899 method on_xhp_attribute env _visitors_this =
5900 match _visitors_this with
5901 | Xhp_simple (_visitors_c0,_visitors_c1) as _visitors_this ->
5902 self#on_Xhp_simple env _visitors_this _visitors_c0
5903 _visitors_c1
5904 | Xhp_spread _visitors_c0 as _visitors_this ->
5905 self#on_Xhp_spread env _visitors_this _visitors_c0
5906 method on_Gena env _visitors_this _visitors_c0 =
5907 let _visitors_r0 = self#on_expr env _visitors_c0 in
5908 if Pervasives.(==) _visitors_c0 _visitors_r0
5909 then _visitors_this
5910 else Gena _visitors_r0
5911 method on_Genva env _visitors_this _visitors_c0 =
5912 let _visitors_r0 = self#on_list self#on_expr env _visitors_c0
5914 if Pervasives.(==) _visitors_c0 _visitors_r0
5915 then _visitors_this
5916 else Genva _visitors_r0
5917 method on_Gen_array_rec env _visitors_this _visitors_c0 =
5918 let _visitors_r0 = self#on_expr env _visitors_c0 in
5919 if Pervasives.(==) _visitors_c0 _visitors_r0
5920 then _visitors_this
5921 else Gen_array_rec _visitors_r0
5922 method on_special_func env _visitors_this =
5923 match _visitors_this with
5924 | Gena _visitors_c0 as _visitors_this ->
5925 self#on_Gena env _visitors_this _visitors_c0
5926 | Genva _visitors_c0 as _visitors_this ->
5927 self#on_Genva env _visitors_this _visitors_c0
5928 | Gen_array_rec _visitors_c0 as _visitors_this ->
5929 self#on_Gen_array_rec env _visitors_this _visitors_c0
5930 method on_is_reference env = self#on_bool env
5931 method on_is_variadic env = self#on_bool env
5932 method on_fun_param env _visitors_this =
5933 let _visitors_r0 =
5934 self#on_option self#on_hint env _visitors_this.param_hint in
5935 let _visitors_r1 =
5936 self#on_is_reference env _visitors_this.param_is_reference
5938 let _visitors_r2 =
5939 self#on_is_variadic env _visitors_this.param_is_variadic in
5940 let _visitors_r3 = self#on_pos env _visitors_this.param_pos in
5941 let _visitors_r4 = self#on_string env _visitors_this.param_name
5943 let _visitors_r5 =
5944 self#on_option self#on_expr env _visitors_this.param_expr in
5945 let _visitors_r6 =
5946 self#on_option self#on_param_kind env
5947 _visitors_this.param_callconv
5949 let _visitors_r7 =
5950 self#on_list self#on_user_attribute env
5951 _visitors_this.param_user_attributes
5954 Pervasives.(&&)
5955 (Pervasives.(==) _visitors_this.param_hint _visitors_r0)
5956 (Pervasives.(&&)
5957 (Pervasives.(==) _visitors_this.param_is_reference
5958 _visitors_r1)
5959 (Pervasives.(&&)
5960 (Pervasives.(==) _visitors_this.param_is_variadic
5961 _visitors_r2)
5962 (Pervasives.(&&)
5963 (Pervasives.(==) _visitors_this.param_pos
5964 _visitors_r3)
5965 (Pervasives.(&&)
5966 (Pervasives.(==) _visitors_this.param_name
5967 _visitors_r4)
5968 (Pervasives.(&&)
5969 (Pervasives.(==) _visitors_this.param_expr
5970 _visitors_r5)
5971 (Pervasives.(&&)
5972 (Pervasives.(==)
5973 _visitors_this.param_callconv
5974 _visitors_r6)
5975 (Pervasives.(==)
5976 _visitors_this.param_user_attributes
5977 _visitors_r7)))))))
5978 then _visitors_this
5979 else
5981 param_hint = _visitors_r0;
5982 param_is_reference = _visitors_r1;
5983 param_is_variadic = _visitors_r2;
5984 param_pos = _visitors_r3;
5985 param_name = _visitors_r4;
5986 param_expr = _visitors_r5;
5987 param_callconv = _visitors_r6;
5988 param_user_attributes = _visitors_r7
5990 method on_FVvariadicArg env _visitors_this _visitors_c0 =
5991 let _visitors_r0 = self#on_fun_param env _visitors_c0 in
5992 if Pervasives.(==) _visitors_c0 _visitors_r0
5993 then _visitors_this
5994 else FVvariadicArg _visitors_r0
5995 method on_FVellipsis env _visitors_this =
5996 if true then _visitors_this else FVellipsis
5997 method on_FVnonVariadic env _visitors_this =
5998 if true then _visitors_this else FVnonVariadic
5999 method on_fun_variadicity env _visitors_this =
6000 match _visitors_this with
6001 | FVvariadicArg _visitors_c0 as _visitors_this ->
6002 self#on_FVvariadicArg env _visitors_this _visitors_c0
6003 | FVellipsis as _visitors_this ->
6004 self#on_FVellipsis env _visitors_this
6005 | FVnonVariadic as _visitors_this ->
6006 self#on_FVnonVariadic env _visitors_this
6007 method on_fun_ env _visitors_this =
6008 let _visitors_r0 =
6009 self#on_env_annotation env _visitors_this.f_annotation in
6010 let _visitors_r1 =
6011 (fun _visitors_this -> _visitors_this) _visitors_this.f_mode
6013 let _visitors_r2 =
6014 self#on_option self#on_hint env _visitors_this.f_ret in
6015 let _visitors_r3 = self#on_sid env _visitors_this.f_name in
6016 let _visitors_r4 =
6017 self#on_list self#on_tparam env _visitors_this.f_tparams in
6018 let _visitors_r5 =
6019 self#on_list self#on_where_constraint env
6020 _visitors_this.f_where_constraints
6022 let _visitors_r6 =
6023 self#on_fun_variadicity env _visitors_this.f_variadic in
6024 let _visitors_r7 =
6025 self#on_list self#on_fun_param env _visitors_this.f_params
6027 let _visitors_r8 = self#on_func_body env _visitors_this.f_body
6029 let _visitors_r9 =
6030 self#on_fun_kind env _visitors_this.f_fun_kind in
6031 let _visitors_r10 =
6032 self#on_list self#on_user_attribute env
6033 _visitors_this.f_user_attributes
6035 let _visitors_r11 =
6036 self#on_bool env _visitors_this.f_ret_by_ref in
6038 Pervasives.(&&)
6039 (Pervasives.(==) _visitors_this.f_annotation _visitors_r0)
6040 (Pervasives.(&&)
6041 (Pervasives.(==) _visitors_this.f_mode _visitors_r1)
6042 (Pervasives.(&&)
6043 (Pervasives.(==) _visitors_this.f_ret _visitors_r2)
6044 (Pervasives.(&&)
6045 (Pervasives.(==) _visitors_this.f_name
6046 _visitors_r3)
6047 (Pervasives.(&&)
6048 (Pervasives.(==) _visitors_this.f_tparams
6049 _visitors_r4)
6050 (Pervasives.(&&)
6051 (Pervasives.(==)
6052 _visitors_this.f_where_constraints
6053 _visitors_r5)
6054 (Pervasives.(&&)
6055 (Pervasives.(==)
6056 _visitors_this.f_variadic _visitors_r6)
6057 (Pervasives.(&&)
6058 (Pervasives.(==)
6059 _visitors_this.f_params
6060 _visitors_r7)
6061 (Pervasives.(&&)
6062 (Pervasives.(==)
6063 _visitors_this.f_body
6064 _visitors_r8)
6065 (Pervasives.(&&)
6066 (Pervasives.(==)
6067 _visitors_this.f_fun_kind
6068 _visitors_r9)
6069 (Pervasives.(&&)
6070 (Pervasives.(==)
6071 _visitors_this.f_user_attributes
6072 _visitors_r10)
6073 (Pervasives.(==)
6074 _visitors_this.f_ret_by_ref
6075 _visitors_r11)))))))))))
6076 then _visitors_this
6077 else
6079 f_annotation = _visitors_r0;
6080 f_mode = _visitors_r1;
6081 f_ret = _visitors_r2;
6082 f_name = _visitors_r3;
6083 f_tparams = _visitors_r4;
6084 f_where_constraints = _visitors_r5;
6085 f_variadic = _visitors_r6;
6086 f_params = _visitors_r7;
6087 f_body = _visitors_r8;
6088 f_fun_kind = _visitors_r9;
6089 f_user_attributes = _visitors_r10;
6090 f_ret_by_ref = _visitors_r11
6092 method on_UnnamedBody env _visitors_this _visitors_c0 =
6093 let _visitors_r0 = self#on_func_unnamed_body env _visitors_c0
6095 if Pervasives.(==) _visitors_c0 _visitors_r0
6096 then _visitors_this
6097 else UnnamedBody _visitors_r0
6098 method on_NamedBody env _visitors_this _visitors_c0 =
6099 let _visitors_r0 = self#on_func_named_body env _visitors_c0 in
6100 if Pervasives.(==) _visitors_c0 _visitors_r0
6101 then _visitors_this
6102 else NamedBody _visitors_r0
6103 method on_func_body env _visitors_this =
6104 match _visitors_this with
6105 | UnnamedBody _visitors_c0 as _visitors_this ->
6106 self#on_UnnamedBody env _visitors_this _visitors_c0
6107 | NamedBody _visitors_c0 as _visitors_this ->
6108 self#on_NamedBody env _visitors_this _visitors_c0
6109 method on_func_unnamed_body env _visitors_this =
6110 let _visitors_r0 =
6111 (fun _visitors_this -> _visitors_this)
6112 _visitors_this.fub_ast
6114 let _visitors_r1 =
6115 (fun _visitors_this -> _visitors_this)
6116 _visitors_this.fub_tparams
6118 let _visitors_r2 =
6119 (fun _visitors_this -> _visitors_this)
6120 _visitors_this.fub_namespace
6123 Pervasives.(&&)
6124 (Pervasives.(==) _visitors_this.fub_ast _visitors_r0)
6125 (Pervasives.(&&)
6126 (Pervasives.(==) _visitors_this.fub_tparams _visitors_r1)
6127 (Pervasives.(==) _visitors_this.fub_namespace
6128 _visitors_r2))
6129 then _visitors_this
6130 else
6132 fub_ast = _visitors_r0;
6133 fub_tparams = _visitors_r1;
6134 fub_namespace = _visitors_r2
6136 method on_func_named_body env _visitors_this =
6137 let _visitors_r0 = self#on_block env _visitors_this.fnb_nast
6139 let _visitors_r1 = self#on_bool env _visitors_this.fnb_unsafe
6142 Pervasives.(&&)
6143 (Pervasives.(==) _visitors_this.fnb_nast _visitors_r0)
6144 (Pervasives.(==) _visitors_this.fnb_unsafe _visitors_r1)
6145 then _visitors_this
6146 else { fnb_nast = _visitors_r0; fnb_unsafe = _visitors_r1 }
6147 method on_user_attribute env _visitors_this =
6148 let _visitors_r0 = self#on_sid env _visitors_this.ua_name in
6149 let _visitors_r1 =
6150 self#on_list self#on_expr env _visitors_this.ua_params in
6152 Pervasives.(&&)
6153 (Pervasives.(==) _visitors_this.ua_name _visitors_r0)
6154 (Pervasives.(==) _visitors_this.ua_params _visitors_r1)
6155 then _visitors_this
6156 else { ua_name = _visitors_r0; ua_params = _visitors_r1 }
6157 method on_class_ env _visitors_this =
6158 let _visitors_r0 =
6159 self#on_env_annotation env _visitors_this.c_annotation in
6160 let _visitors_r1 =
6161 (fun _visitors_this -> _visitors_this) _visitors_this.c_mode
6163 let _visitors_r2 = self#on_bool env _visitors_this.c_final in
6164 let _visitors_r3 = self#on_bool env _visitors_this.c_is_xhp in
6165 let _visitors_r4 = self#on_class_kind env _visitors_this.c_kind
6167 let _visitors_r5 = self#on_sid env _visitors_this.c_name in
6168 let _visitors_r6 =
6169 (fun _visitors_this -> _visitors_this)
6170 _visitors_this.c_tparams
6172 let _visitors_r7 =
6173 self#on_list self#on_hint env _visitors_this.c_extends in
6174 let _visitors_r8 =
6175 self#on_list self#on_hint env _visitors_this.c_uses in
6176 let _visitors_r9 =
6177 self#on_list self#on_hint env _visitors_this.c_xhp_attr_uses
6179 let _visitors_r10 =
6180 self#on_list self#on_pstring env
6181 _visitors_this.c_xhp_category
6183 let _visitors_r11 =
6184 self#on_list self#on_hint env _visitors_this.c_req_extends
6186 let _visitors_r12 =
6187 self#on_list self#on_hint env _visitors_this.c_req_implements
6189 let _visitors_r13 =
6190 self#on_list self#on_hint env _visitors_this.c_implements in
6191 let _visitors_r14 =
6192 self#on_list self#on_class_const env _visitors_this.c_consts
6194 let _visitors_r15 =
6195 self#on_list self#on_class_typeconst env
6196 _visitors_this.c_typeconsts
6198 let _visitors_r16 =
6199 self#on_list self#on_class_var env
6200 _visitors_this.c_static_vars
6202 let _visitors_r17 =
6203 self#on_list self#on_class_var env _visitors_this.c_vars in
6204 let _visitors_r18 =
6205 self#on_option self#on_method_ env
6206 _visitors_this.c_constructor
6208 let _visitors_r19 =
6209 self#on_list self#on_method_ env
6210 _visitors_this.c_static_methods
6212 let _visitors_r20 =
6213 self#on_list self#on_method_ env _visitors_this.c_methods in
6214 let _visitors_r21 =
6215 self#on_list self#on_user_attribute env
6216 _visitors_this.c_user_attributes
6218 let _visitors_r22 =
6219 self#on_option self#on_enum_ env _visitors_this.c_enum in
6221 Pervasives.(&&)
6222 (Pervasives.(==) _visitors_this.c_annotation _visitors_r0)
6223 (Pervasives.(&&)
6224 (Pervasives.(==) _visitors_this.c_mode _visitors_r1)
6225 (Pervasives.(&&)
6226 (Pervasives.(==) _visitors_this.c_final _visitors_r2)
6227 (Pervasives.(&&)
6228 (Pervasives.(==) _visitors_this.c_is_xhp
6229 _visitors_r3)
6230 (Pervasives.(&&)
6231 (Pervasives.(==) _visitors_this.c_kind
6232 _visitors_r4)
6233 (Pervasives.(&&)
6234 (Pervasives.(==) _visitors_this.c_name
6235 _visitors_r5)
6236 (Pervasives.(&&)
6237 (Pervasives.(==) _visitors_this.c_tparams
6238 _visitors_r6)
6239 (Pervasives.(&&)
6240 (Pervasives.(==)
6241 _visitors_this.c_extends
6242 _visitors_r7)
6243 (Pervasives.(&&)
6244 (Pervasives.(==)
6245 _visitors_this.c_uses
6246 _visitors_r8)
6247 (Pervasives.(&&)
6248 (Pervasives.(==)
6249 _visitors_this.c_xhp_attr_uses
6250 _visitors_r9)
6251 (Pervasives.(&&)
6252 (Pervasives.(==)
6253 _visitors_this.c_xhp_category
6254 _visitors_r10)
6255 (Pervasives.(&&)
6256 (Pervasives.(==)
6257 _visitors_this.c_req_extends
6258 _visitors_r11)
6259 (Pervasives.(&&)
6260 (Pervasives.(==)
6261 _visitors_this.c_req_implements
6262 _visitors_r12)
6263 (Pervasives.(&&)
6264 (Pervasives.(==)
6265 _visitors_this.c_implements
6266 _visitors_r13)
6267 (Pervasives.(&&)
6268 (Pervasives.(==)
6269 _visitors_this.c_consts
6270 _visitors_r14)
6271 (Pervasives.(&&)
6272 (Pervasives.(==)
6273 _visitors_this.c_typeconsts
6274 _visitors_r15)
6275 (Pervasives.(&&)
6276 (Pervasives.(==)
6277 _visitors_this.c_static_vars
6278 _visitors_r16)
6279 (Pervasives.(&&)
6280 (Pervasives.(==)
6281 _visitors_this.c_vars
6282 _visitors_r17)
6283 (Pervasives.(&&)
6284 (Pervasives.(==)
6285 _visitors_this.c_constructor
6286 _visitors_r18)
6287 (Pervasives.(&&)
6288 (Pervasives.(==)
6289 _visitors_this.c_static_methods
6290 _visitors_r19)
6291 (Pervasives.(&&)
6292 (Pervasives.(==)
6293 _visitors_this.c_methods
6294 _visitors_r20)
6295 (Pervasives.(&&)
6296 (Pervasives.(==)
6297 _visitors_this.c_user_attributes
6298 _visitors_r21)
6299 (Pervasives.(==)
6300 _visitors_this.c_enum
6301 _visitors_r22))))))))))))))))))))))
6302 then _visitors_this
6303 else
6305 c_annotation = _visitors_r0;
6306 c_mode = _visitors_r1;
6307 c_final = _visitors_r2;
6308 c_is_xhp = _visitors_r3;
6309 c_kind = _visitors_r4;
6310 c_name = _visitors_r5;
6311 c_tparams = _visitors_r6;
6312 c_extends = _visitors_r7;
6313 c_uses = _visitors_r8;
6314 c_xhp_attr_uses = _visitors_r9;
6315 c_xhp_category = _visitors_r10;
6316 c_req_extends = _visitors_r11;
6317 c_req_implements = _visitors_r12;
6318 c_implements = _visitors_r13;
6319 c_consts = _visitors_r14;
6320 c_typeconsts = _visitors_r15;
6321 c_static_vars = _visitors_r16;
6322 c_vars = _visitors_r17;
6323 c_constructor = _visitors_r18;
6324 c_static_methods = _visitors_r19;
6325 c_methods = _visitors_r20;
6326 c_user_attributes = _visitors_r21;
6327 c_enum = _visitors_r22
6329 method on_class_const env
6330 ((_visitors_c0,_visitors_c1,_visitors_c2) as _visitors_this) =
6331 let _visitors_r0 = self#on_option self#on_hint env _visitors_c0
6333 let _visitors_r1 = self#on_sid env _visitors_c1 in
6334 let _visitors_r2 = self#on_option self#on_expr env _visitors_c2
6337 Pervasives.(&&) (Pervasives.(==) _visitors_c0 _visitors_r0)
6338 (Pervasives.(&&)
6339 (Pervasives.(==) _visitors_c1 _visitors_r1)
6340 (Pervasives.(==) _visitors_c2 _visitors_r2))
6341 then _visitors_this
6342 else (_visitors_r0, _visitors_r1, _visitors_r2)
6343 method on_class_typeconst env _visitors_this =
6344 let _visitors_r0 = self#on_sid env _visitors_this.c_tconst_name
6346 let _visitors_r1 =
6347 self#on_option self#on_hint env
6348 _visitors_this.c_tconst_constraint
6350 let _visitors_r2 =
6351 self#on_option self#on_hint env _visitors_this.c_tconst_type
6354 Pervasives.(&&)
6355 (Pervasives.(==) _visitors_this.c_tconst_name _visitors_r0)
6356 (Pervasives.(&&)
6357 (Pervasives.(==) _visitors_this.c_tconst_constraint
6358 _visitors_r1)
6359 (Pervasives.(==) _visitors_this.c_tconst_type
6360 _visitors_r2))
6361 then _visitors_this
6362 else
6364 c_tconst_name = _visitors_r0;
6365 c_tconst_constraint = _visitors_r1;
6366 c_tconst_type = _visitors_r2
6368 method on_class_var env _visitors_this =
6369 let _visitors_r0 = self#on_bool env _visitors_this.cv_final in
6370 let _visitors_r1 = self#on_bool env _visitors_this.cv_is_xhp
6372 let _visitors_r2 =
6373 self#on_visibility env _visitors_this.cv_visibility in
6374 let _visitors_r3 =
6375 self#on_option self#on_hint env _visitors_this.cv_type in
6376 let _visitors_r4 = self#on_sid env _visitors_this.cv_id in
6377 let _visitors_r5 =
6378 self#on_option self#on_expr env _visitors_this.cv_expr in
6379 let _visitors_r6 =
6380 self#on_list self#on_user_attribute env
6381 _visitors_this.cv_user_attributes
6384 Pervasives.(&&)
6385 (Pervasives.(==) _visitors_this.cv_final _visitors_r0)
6386 (Pervasives.(&&)
6387 (Pervasives.(==) _visitors_this.cv_is_xhp _visitors_r1)
6388 (Pervasives.(&&)
6389 (Pervasives.(==) _visitors_this.cv_visibility
6390 _visitors_r2)
6391 (Pervasives.(&&)
6392 (Pervasives.(==) _visitors_this.cv_type
6393 _visitors_r3)
6394 (Pervasives.(&&)
6395 (Pervasives.(==) _visitors_this.cv_id
6396 _visitors_r4)
6397 (Pervasives.(&&)
6398 (Pervasives.(==) _visitors_this.cv_expr
6399 _visitors_r5)
6400 (Pervasives.(==)
6401 _visitors_this.cv_user_attributes
6402 _visitors_r6))))))
6403 then _visitors_this
6404 else
6406 cv_final = _visitors_r0;
6407 cv_is_xhp = _visitors_r1;
6408 cv_visibility = _visitors_r2;
6409 cv_type = _visitors_r3;
6410 cv_id = _visitors_r4;
6411 cv_expr = _visitors_r5;
6412 cv_user_attributes = _visitors_r6
6414 method on_method_ env _visitors_this =
6415 let _visitors_r0 =
6416 self#on_env_annotation env _visitors_this.m_annotation in
6417 let _visitors_r1 = self#on_bool env _visitors_this.m_final in
6418 let _visitors_r2 = self#on_bool env _visitors_this.m_abstract
6420 let _visitors_r3 =
6421 self#on_visibility env _visitors_this.m_visibility in
6422 let _visitors_r4 = self#on_sid env _visitors_this.m_name in
6423 let _visitors_r5 =
6424 self#on_list self#on_tparam env _visitors_this.m_tparams in
6425 let _visitors_r6 =
6426 self#on_list self#on_where_constraint env
6427 _visitors_this.m_where_constraints
6429 let _visitors_r7 =
6430 self#on_fun_variadicity env _visitors_this.m_variadic in
6431 let _visitors_r8 =
6432 self#on_list self#on_fun_param env _visitors_this.m_params
6434 let _visitors_r9 = self#on_func_body env _visitors_this.m_body
6436 let _visitors_r10 =
6437 self#on_fun_kind env _visitors_this.m_fun_kind in
6438 let _visitors_r11 =
6439 self#on_list self#on_user_attribute env
6440 _visitors_this.m_user_attributes
6442 let _visitors_r12 =
6443 self#on_option self#on_hint env _visitors_this.m_ret in
6444 let _visitors_r13 =
6445 self#on_bool env _visitors_this.m_ret_by_ref in
6447 Pervasives.(&&)
6448 (Pervasives.(==) _visitors_this.m_annotation _visitors_r0)
6449 (Pervasives.(&&)
6450 (Pervasives.(==) _visitors_this.m_final _visitors_r1)
6451 (Pervasives.(&&)
6452 (Pervasives.(==) _visitors_this.m_abstract
6453 _visitors_r2)
6454 (Pervasives.(&&)
6455 (Pervasives.(==) _visitors_this.m_visibility
6456 _visitors_r3)
6457 (Pervasives.(&&)
6458 (Pervasives.(==) _visitors_this.m_name
6459 _visitors_r4)
6460 (Pervasives.(&&)
6461 (Pervasives.(==) _visitors_this.m_tparams
6462 _visitors_r5)
6463 (Pervasives.(&&)
6464 (Pervasives.(==)
6465 _visitors_this.m_where_constraints
6466 _visitors_r6)
6467 (Pervasives.(&&)
6468 (Pervasives.(==)
6469 _visitors_this.m_variadic
6470 _visitors_r7)
6471 (Pervasives.(&&)
6472 (Pervasives.(==)
6473 _visitors_this.m_params
6474 _visitors_r8)
6475 (Pervasives.(&&)
6476 (Pervasives.(==)
6477 _visitors_this.m_body
6478 _visitors_r9)
6479 (Pervasives.(&&)
6480 (Pervasives.(==)
6481 _visitors_this.m_fun_kind
6482 _visitors_r10)
6483 (Pervasives.(&&)
6484 (Pervasives.(==)
6485 _visitors_this.m_user_attributes
6486 _visitors_r11)
6487 (Pervasives.(&&)
6488 (Pervasives.(==)
6489 _visitors_this.m_ret
6490 _visitors_r12)
6491 (Pervasives.(==)
6492 _visitors_this.m_ret_by_ref
6493 _visitors_r13)))))))))))))
6494 then _visitors_this
6495 else
6497 m_annotation = _visitors_r0;
6498 m_final = _visitors_r1;
6499 m_abstract = _visitors_r2;
6500 m_visibility = _visitors_r3;
6501 m_name = _visitors_r4;
6502 m_tparams = _visitors_r5;
6503 m_where_constraints = _visitors_r6;
6504 m_variadic = _visitors_r7;
6505 m_params = _visitors_r8;
6506 m_body = _visitors_r9;
6507 m_fun_kind = _visitors_r10;
6508 m_user_attributes = _visitors_r11;
6509 m_ret = _visitors_r12;
6510 m_ret_by_ref = _visitors_r13
6512 method on_typedef env _visitors_this =
6513 let _visitors_r0 =
6514 self#on_env_annotation env _visitors_this.t_annotation in
6515 let _visitors_r1 = self#on_sid env _visitors_this.t_name in
6516 let _visitors_r2 =
6517 self#on_list self#on_tparam env _visitors_this.t_tparams in
6518 let _visitors_r3 =
6519 self#on_option self#on_hint env _visitors_this.t_constraint
6521 let _visitors_r4 = self#on_hint env _visitors_this.t_kind in
6522 let _visitors_r5 =
6523 self#on_list self#on_user_attribute env
6524 _visitors_this.t_user_attributes
6526 let _visitors_r6 =
6527 (fun _visitors_this -> _visitors_this) _visitors_this.t_mode
6529 let _visitors_r7 =
6530 self#on_typedef_visibility env _visitors_this.t_vis in
6532 Pervasives.(&&)
6533 (Pervasives.(==) _visitors_this.t_annotation _visitors_r0)
6534 (Pervasives.(&&)
6535 (Pervasives.(==) _visitors_this.t_name _visitors_r1)
6536 (Pervasives.(&&)
6537 (Pervasives.(==) _visitors_this.t_tparams
6538 _visitors_r2)
6539 (Pervasives.(&&)
6540 (Pervasives.(==) _visitors_this.t_constraint
6541 _visitors_r3)
6542 (Pervasives.(&&)
6543 (Pervasives.(==) _visitors_this.t_kind
6544 _visitors_r4)
6545 (Pervasives.(&&)
6546 (Pervasives.(==)
6547 _visitors_this.t_user_attributes
6548 _visitors_r5)
6549 (Pervasives.(&&)
6550 (Pervasives.(==) _visitors_this.t_mode
6551 _visitors_r6)
6552 (Pervasives.(==) _visitors_this.t_vis
6553 _visitors_r7)))))))
6554 then _visitors_this
6555 else
6557 t_annotation = _visitors_r0;
6558 t_name = _visitors_r1;
6559 t_tparams = _visitors_r2;
6560 t_constraint = _visitors_r3;
6561 t_kind = _visitors_r4;
6562 t_user_attributes = _visitors_r5;
6563 t_mode = _visitors_r6;
6564 t_vis = _visitors_r7
6566 method on_gconst env _visitors_this =
6567 let _visitors_r0 =
6568 self#on_env_annotation env _visitors_this.cst_annotation in
6569 let _visitors_r1 =
6570 (fun _visitors_this -> _visitors_this)
6571 _visitors_this.cst_mode
6573 let _visitors_r2 = self#on_sid env _visitors_this.cst_name in
6574 let _visitors_r3 =
6575 self#on_option self#on_hint env _visitors_this.cst_type in
6576 let _visitors_r4 =
6577 self#on_option self#on_expr env _visitors_this.cst_value in
6578 let _visitors_r5 =
6579 self#on_bool env _visitors_this.cst_is_define in
6581 Pervasives.(&&)
6582 (Pervasives.(==) _visitors_this.cst_annotation _visitors_r0)
6583 (Pervasives.(&&)
6584 (Pervasives.(==) _visitors_this.cst_mode _visitors_r1)
6585 (Pervasives.(&&)
6586 (Pervasives.(==) _visitors_this.cst_name _visitors_r2)
6587 (Pervasives.(&&)
6588 (Pervasives.(==) _visitors_this.cst_type
6589 _visitors_r3)
6590 (Pervasives.(&&)
6591 (Pervasives.(==) _visitors_this.cst_value
6592 _visitors_r4)
6593 (Pervasives.(==) _visitors_this.cst_is_define
6594 _visitors_r5)))))
6595 then _visitors_this
6596 else
6598 cst_annotation = _visitors_r0;
6599 cst_mode = _visitors_r1;
6600 cst_name = _visitors_r2;
6601 cst_type = _visitors_r3;
6602 cst_value = _visitors_r4;
6603 cst_is_define = _visitors_r5
6605 method on_Fun env _visitors_this _visitors_c0 =
6606 let _visitors_r0 = self#on_fun_ env _visitors_c0 in
6607 if Pervasives.(==) _visitors_c0 _visitors_r0
6608 then _visitors_this
6609 else Fun _visitors_r0
6610 method on_Class env _visitors_this _visitors_c0 =
6611 let _visitors_r0 = self#on_class_ env _visitors_c0 in
6612 if Pervasives.(==) _visitors_c0 _visitors_r0
6613 then _visitors_this
6614 else Class _visitors_r0
6615 method on_Typedef env _visitors_this _visitors_c0 =
6616 let _visitors_r0 = self#on_typedef env _visitors_c0 in
6617 if Pervasives.(==) _visitors_c0 _visitors_r0
6618 then _visitors_this
6619 else Typedef _visitors_r0
6620 method on_Constant env _visitors_this _visitors_c0 =
6621 let _visitors_r0 = self#on_gconst env _visitors_c0 in
6622 if Pervasives.(==) _visitors_c0 _visitors_r0
6623 then _visitors_this
6624 else Constant _visitors_r0
6625 method on_def env _visitors_this =
6626 match _visitors_this with
6627 | Fun _visitors_c0 as _visitors_this ->
6628 self#on_Fun env _visitors_this _visitors_c0
6629 | Class _visitors_c0 as _visitors_this ->
6630 self#on_Class env _visitors_this _visitors_c0
6631 | Typedef _visitors_c0 as _visitors_this ->
6632 self#on_Typedef env _visitors_this _visitors_c0
6633 | Constant _visitors_c0 as _visitors_this ->
6634 self#on_Constant env _visitors_this _visitors_c0
6636 [@@@VISITORS.END ]
6638 let expr_to_string expr =
6639 match expr with
6640 | Any -> "Any"
6641 | Array _ -> "Array"
6642 | Darray _ -> "Darray"
6643 | Varray _ -> "Varray"
6644 | Shape _ -> "Shape"
6645 | ValCollection _ -> "ValCollection"
6646 | KeyValCollection _ -> "KeyValCollection"
6647 | This -> "This"
6648 | Id _ -> "Id"
6649 | Lvar _ -> "Lvar"
6650 | Dollar _ -> "Dollar"
6651 | Lplaceholder _ -> "Lplaceholder"
6652 | Dollardollar _ -> "Dollardollar"
6653 | Fun_id _ -> "Fun_id"
6654 | Method_id _ -> "Method_id"
6655 | Method_caller _ -> "Method_caller"
6656 | Smethod_id _ -> "Smethod_id"
6657 | Obj_get _ -> "Obj_get"
6658 | Array_get _ -> "Array_get"
6659 | Class_get _ -> "Class_get"
6660 | Class_const _ -> "Class_const"
6661 | Call _ -> "Call"
6662 | True -> "True"
6663 | False -> "False"
6664 | Int _ -> "Int"
6665 | Float _ -> "Float"
6666 | Null -> "Null"
6667 | String _ -> "String"
6668 | String2 _ -> "String2"
6669 | Special_func _ -> "Special_func"
6670 | Yield_break -> "Yield_break"
6671 | Yield _ -> "Yield"
6672 | Await _ -> "Await"
6673 | Suspend _ -> "Suspend"
6674 | List _ -> "List"
6675 | Pair _ -> "Pair"
6676 | Expr_list _ -> "Expr_list"
6677 | Cast _ -> "Cast"
6678 | Unop _ -> "Unop"
6679 | Binop _ -> "Binop"
6680 | Pipe _ -> "Pipe"
6681 | Eif _ -> "Eif"
6682 | NullCoalesce _ -> "NullCoalesce"
6683 | InstanceOf _ -> "InstanceOf"
6684 | Is _ -> "Is"
6685 | New _ -> "New"
6686 | Efun _ -> "Efun"
6687 | Xml _ -> "Xml"
6688 | Callconv _ -> "Callconv"
6689 | Assert _ -> "Assert"
6690 | Clone _ -> "Clone"
6691 | Typename _ -> "Typename"
6692 module Visitor =
6693 struct
6694 class type ['a] visitor_type =
6695 object
6696 method on_block : 'a -> block -> 'a
6697 method on_break : 'a -> Pos.t -> 'a
6698 method on_case : 'a -> case -> 'a
6699 method on_catch : 'a -> catch -> 'a
6700 method on_continue : 'a -> Pos.t -> 'a
6701 method on_do : 'a -> block -> expr -> 'a
6702 method on_expr : 'a -> expr -> 'a
6703 method on_expr_ : 'a -> expr_ -> 'a
6704 method on_for : 'a -> expr -> expr -> expr -> block -> 'a
6705 method on_foreach : 'a -> expr -> as_expr -> block -> 'a
6706 method on_if : 'a -> expr -> block -> block -> 'a
6707 method on_noop : 'a -> 'a
6708 method on_fallthrough : 'a -> 'a
6709 method on_return : 'a -> Pos.t -> expr option -> 'a
6710 method on_goto_label : 'a -> pstring -> 'a
6711 method on_goto : 'a -> pstring -> 'a
6712 method on_static_var : 'a -> expr list -> 'a
6713 method on_global_var : 'a -> expr list -> 'a
6714 method on_stmt : 'a -> stmt -> 'a
6715 method on_switch : 'a -> expr -> case list -> 'a
6716 method on_throw : 'a -> is_terminal -> expr -> 'a
6717 method on_try : 'a -> block -> catch list -> block -> 'a
6718 method on_while : 'a -> expr -> block -> 'a
6719 method on_using : 'a -> bool -> expr -> block -> 'a
6720 method on_as_expr : 'a -> as_expr -> 'a
6721 method on_array : 'a -> afield list -> 'a
6722 method on_shape : 'a -> expr ShapeMap.t -> 'a
6723 method on_valCollection : 'a -> vc_kind -> expr list -> 'a
6724 method on_keyValCollection : 'a -> kvc_kind -> field list -> 'a
6725 method on_this : 'a -> 'a
6726 method on_id : 'a -> sid -> 'a
6727 method on_lvar : 'a -> id -> 'a
6728 method on_dollar : 'a -> expr -> 'a
6729 method on_dollardollar : 'a -> id -> 'a
6730 method on_fun_id : 'a -> sid -> 'a
6731 method on_method_id : 'a -> expr -> pstring -> 'a
6732 method on_smethod_id : 'a -> sid -> pstring -> 'a
6733 method on_method_caller : 'a -> sid -> pstring -> 'a
6734 method on_obj_get : 'a -> expr -> expr -> 'a
6735 method on_array_get : 'a -> expr -> expr option -> 'a
6736 method on_class_get : 'a -> class_id -> pstring -> 'a
6737 method on_class_const : 'a -> class_id -> pstring -> 'a
6738 method on_call :
6739 'a -> call_type -> expr -> expr list -> expr list -> 'a
6740 method on_true : 'a -> 'a
6741 method on_false : 'a -> 'a
6742 method on_int : 'a -> pstring -> 'a
6743 method on_float : 'a -> pstring -> 'a
6744 method on_null : 'a -> 'a
6745 method on_string : 'a -> pstring -> 'a
6746 method on_string2 : 'a -> expr list -> 'a
6747 method on_special_func : 'a -> special_func -> 'a
6748 method on_yield_break : 'a -> 'a
6749 method on_yield : 'a -> afield -> 'a
6750 method on_await : 'a -> expr -> 'a
6751 method on_suspend : 'a -> expr -> 'a
6752 method on_list : 'a -> expr list -> 'a
6753 method on_pair : 'a -> expr -> expr -> 'a
6754 method on_expr_list : 'a -> expr list -> 'a
6755 method on_cast : 'a -> hint -> expr -> 'a
6756 method on_unop : 'a -> Ast.uop -> expr -> 'a
6757 method on_binop : 'a -> Ast.bop -> expr -> expr -> 'a
6758 method on_pipe : 'a -> id -> expr -> expr -> 'a
6759 method on_eif : 'a -> expr -> expr option -> expr -> 'a
6760 method on_nullCoalesce : 'a -> expr -> expr -> 'a
6761 method on_typename : 'a -> sid -> 'a
6762 method on_instanceOf : 'a -> expr -> class_id -> 'a
6763 method on_is : 'a -> expr -> hint -> 'a
6764 method on_class_id : 'a -> class_id -> 'a
6765 method on_new : 'a -> class_id -> expr list -> expr list -> 'a
6766 method on_efun : 'a -> fun_ -> id list -> 'a
6767 method on_xml :
6768 'a -> sid -> xhp_attribute list -> expr list -> 'a
6769 method on_param_kind : 'a -> Ast.param_kind -> 'a
6770 method on_callconv : 'a -> Ast.param_kind -> expr -> 'a
6771 method on_assert : 'a -> assert_expr -> 'a
6772 method on_clone : 'a -> expr -> 'a
6773 method on_field : 'a -> field -> 'a
6774 method on_afield : 'a -> afield -> 'a
6775 method on_func_named_body : 'a -> func_named_body -> 'a
6776 method on_func_unnamed_body : 'a -> func_unnamed_body -> 'a
6777 method on_func_body : 'a -> func_body -> 'a
6778 method on_method_ : 'a -> method_ -> 'a
6779 method on_fun_ : 'a -> fun_ -> 'a
6780 method on_class_ : 'a -> class_ -> 'a
6781 method on_gconst : 'a -> gconst -> 'a
6782 method on_typedef : 'a -> typedef -> 'a
6783 method on_hint : 'a -> hint -> 'a
6784 method on_def : 'a -> def -> 'a
6785 method on_program : 'a -> program -> 'a
6787 class virtual ['a] visitor : ['a] visitor_type =
6788 object (this)
6789 method on_break acc _ = acc
6790 method on_continue acc _ = acc
6791 method on_noop acc = acc
6792 method on_fallthrough acc = acc
6793 method on_goto_label acc _ = acc
6794 method on_goto acc _ = acc
6795 method on_throw acc _ e = let acc = this#on_expr acc e in acc
6796 method on_return acc _ eopt =
6797 match eopt with | None -> acc | Some e -> this#on_expr acc e
6798 method on_static_var acc el = List.fold_left this#on_expr acc el
6799 method on_global_var acc el = List.fold_left this#on_expr acc el
6800 method on_if acc e b1 b2 =
6801 let acc = this#on_expr acc e in
6802 let acc = this#on_block acc b1 in
6803 let acc = this#on_block acc b2 in acc
6804 method on_do acc b e =
6805 let acc = this#on_block acc b in
6806 let acc = this#on_expr acc e in acc
6807 method on_while acc e b =
6808 let acc = this#on_expr acc e in
6809 let acc = this#on_block acc b in acc
6810 method on_using acc _has_await e b =
6811 let acc = this#on_expr acc e in
6812 let acc = this#on_block acc b in acc
6813 method on_for acc e1 e2 e3 b =
6814 let acc = this#on_expr acc e1 in
6815 let acc = this#on_expr acc e2 in
6816 let acc = this#on_expr acc e3 in
6817 let acc = this#on_block acc b in acc
6818 method on_switch acc e cl =
6819 let acc = this#on_expr acc e in
6820 let acc = List.fold_left this#on_case acc cl in acc
6821 method on_foreach acc e ae b =
6822 let acc = this#on_expr acc e in
6823 let acc = this#on_as_expr acc ae in
6824 let acc = this#on_block acc b in acc
6825 method on_try acc b cl fb =
6826 let acc = this#on_block acc b in
6827 let acc = List.fold_left this#on_catch acc cl in
6828 let acc = this#on_block acc fb in acc
6829 method on_block acc b = List.fold_left this#on_stmt acc b
6830 method on_case acc =
6831 function
6832 | Default b -> let acc = this#on_block acc b in acc
6833 | Case (e,b) ->
6834 let acc = this#on_expr acc e in
6835 let acc = this#on_block acc b in acc
6836 method on_as_expr acc =
6837 function
6838 | As_v e|Await_as_v (_,e) ->
6839 let acc = this#on_expr acc e in acc
6840 | As_kv (e1,e2)|Await_as_kv (_,e1,e2) ->
6841 let acc = this#on_expr acc e1 in
6842 let acc = this#on_expr acc e2 in acc
6843 method on_catch acc (_,_,b) = this#on_block acc b
6844 method on_stmt acc =
6845 function
6846 | Expr e -> this#on_expr acc e
6847 | Break p -> this#on_break acc p
6848 | Continue p -> this#on_continue acc p
6849 | Throw (is_term,e) -> this#on_throw acc is_term e
6850 | Return (p,eopt) -> this#on_return acc p eopt
6851 | GotoLabel label -> this#on_goto_label acc label
6852 | Goto label -> this#on_goto acc label
6853 | If (e,b1,b2) -> this#on_if acc e b1 b2
6854 | Do (b,e) -> this#on_do acc b e
6855 | While (e,b) -> this#on_while acc e b
6856 | Using (has_await,e,b) -> this#on_using acc has_await e b
6857 | For (e1,e2,e3,b) -> this#on_for acc e1 e2 e3 b
6858 | Switch (e,cl) -> this#on_switch acc e cl
6859 | Foreach (e,ae,b) -> this#on_foreach acc e ae b
6860 | Try (b,cl,fb) -> this#on_try acc b cl fb
6861 | Noop -> this#on_noop acc
6862 | Fallthrough -> this#on_fallthrough acc
6863 | Static_var el -> this#on_static_var acc el
6864 | Global_var el -> this#on_global_var acc el
6865 method on_expr acc (_,e) = this#on_expr_ acc e
6866 method on_expr_ acc e =
6867 match e with
6868 | Any -> acc
6869 | Array afl -> this#on_array acc afl
6870 | Darray fieldl -> List.fold_left this#on_field acc fieldl
6871 | Varray el -> List.fold_left this#on_expr acc el
6872 | Shape sh -> this#on_shape acc sh
6873 | True -> this#on_true acc
6874 | False -> this#on_false acc
6875 | Int n -> this#on_int acc n
6876 | Float n -> this#on_float acc n
6877 | Null -> this#on_null acc
6878 | String s -> this#on_string acc s
6879 | This -> this#on_this acc
6880 | Id sid -> this#on_id acc sid
6881 | Lplaceholder _pos -> acc
6882 | Dollardollar id -> this#on_dollardollar acc id
6883 | Lvar id -> this#on_lvar acc id
6884 | Dollar e -> this#on_dollar acc e
6885 | Fun_id sid -> this#on_fun_id acc sid
6886 | Method_id (expr,pstr) -> this#on_method_id acc expr pstr
6887 | Method_caller (sid,pstr) ->
6888 this#on_method_caller acc sid pstr
6889 | Smethod_id (sid,pstr) -> this#on_smethod_id acc sid pstr
6890 | Yield_break -> this#on_yield_break acc
6891 | Yield e -> this#on_yield acc e
6892 | Await e -> this#on_await acc e
6893 | Suspend e -> this#on_suspend acc e
6894 | List el -> this#on_list acc el
6895 | Assert ae -> this#on_assert acc ae
6896 | Clone e -> this#on_clone acc e
6897 | Expr_list el -> this#on_expr_list acc el
6898 | Special_func sf -> this#on_special_func acc sf
6899 | Obj_get (e1,e2,_) -> this#on_obj_get acc e1 e2
6900 | Array_get (e1,e2) -> this#on_array_get acc e1 e2
6901 | Class_get (cid,id) -> this#on_class_get acc cid id
6902 | Class_const (cid,id) -> this#on_class_const acc cid id
6903 | Call (ct,e,_,el,uel) -> this#on_call acc ct e el uel
6904 | String2 el -> this#on_string2 acc el
6905 | Pair (e1,e2) -> this#on_pair acc e1 e2
6906 | Cast (hint,e) -> this#on_cast acc hint e
6907 | Unop (uop,e) -> this#on_unop acc uop e
6908 | Binop (bop,e1,e2) -> this#on_binop acc bop e1 e2
6909 | Pipe (id,e1,e2) -> this#on_pipe acc id e1 e2
6910 | Eif (e1,e2,e3) -> this#on_eif acc e1 e2 e3
6911 | NullCoalesce (e1,e2) -> this#on_nullCoalesce acc e1 e2
6912 | InstanceOf (e1,e2) -> this#on_instanceOf acc e1 e2
6913 | Is (e,h) -> this#on_is acc e h
6914 | Typename n -> this#on_typename acc n
6915 | New (cid,el,uel) -> this#on_new acc cid el uel
6916 | Efun (f,idl) -> this#on_efun acc f idl
6917 | Xml (sid,attrl,el) -> this#on_xml acc sid attrl el
6918 | Callconv (kind,e) -> this#on_callconv acc kind e
6919 | ValCollection (s,el) -> this#on_valCollection acc s el
6920 | KeyValCollection (s,fl) -> this#on_keyValCollection acc s fl
6921 method on_array acc afl = List.fold_left this#on_afield acc afl
6922 method on_shape acc sm =
6923 ShapeMap.fold
6924 (fun _ ->
6925 fun e -> fun acc -> let acc = this#on_expr acc e in acc)
6926 sm acc
6927 method on_valCollection acc _ el =
6928 List.fold_left this#on_expr acc el
6929 method on_keyValCollection acc _ fieldl =
6930 List.fold_left this#on_field acc fieldl
6931 method on_this acc = acc
6932 method on_id acc _ = acc
6933 method on_lvar acc _ = acc
6934 method on_dollardollar acc id = this#on_lvar acc id
6935 method on_fun_id acc _ = acc
6936 method on_method_id acc _ _ = acc
6937 method on_smethod_id acc _ _ = acc
6938 method on_method_caller acc _ _ = acc
6939 method on_typename acc _ = acc
6940 method on_obj_get acc e1 e2 =
6941 let acc = this#on_expr acc e1 in
6942 let acc = this#on_expr acc e2 in acc
6943 method on_array_get acc e e_opt =
6944 let acc = this#on_expr acc e in
6945 let acc =
6946 match e_opt with
6947 | None -> acc
6948 | Some e -> this#on_expr acc e in
6950 method on_class_get acc cid _ = this#on_class_id acc cid
6951 method on_class_const acc cid _ = this#on_class_id acc cid
6952 method on_call acc _ e el uel =
6953 let acc = this#on_expr acc e in
6954 let acc = List.fold_left this#on_expr acc el in
6955 let acc = List.fold_left this#on_expr acc uel in acc
6956 method on_true acc = acc
6957 method on_false acc = acc
6958 method on_int acc _ = acc
6959 method on_float acc _ = acc
6960 method on_null acc = acc
6961 method on_string acc _ = acc
6962 method on_string2 acc el =
6963 let acc = List.fold_left this#on_expr acc el in acc
6964 method on_special_func acc =
6965 function
6966 | Gena e|Gen_array_rec e -> this#on_expr acc e
6967 | Genva el -> List.fold_left this#on_expr acc el
6968 method on_yield_break acc = acc
6969 method on_yield acc e = this#on_afield acc e
6970 method on_await acc e = this#on_expr acc e
6971 method on_dollar acc e = this#on_expr acc e
6972 method on_suspend acc e = this#on_expr acc e
6973 method on_list acc el = List.fold_left this#on_expr acc el
6974 method on_pair acc e1 e2 =
6975 let acc = this#on_expr acc e1 in
6976 let acc = this#on_expr acc e2 in acc
6977 method on_expr_list acc el =
6978 let acc = List.fold_left this#on_expr acc el in acc
6979 method on_cast acc _ e = this#on_expr acc e
6980 method on_unop acc _ e = this#on_expr acc e
6981 method on_binop acc _ e1 e2 =
6982 let acc = this#on_expr acc e1 in
6983 let acc = this#on_expr acc e2 in acc
6984 method on_pipe acc _id e1 e2 =
6985 let acc = this#on_expr acc e1 in
6986 let acc = this#on_expr acc e2 in acc
6987 method on_eif acc e1 e2 e3 =
6988 let acc = this#on_expr acc e1 in
6989 let acc =
6990 match e2 with | None -> acc | Some e -> this#on_expr acc e
6992 let acc = this#on_expr acc e3 in acc
6993 method on_nullCoalesce acc e1 e2 =
6994 let acc = this#on_expr acc e1 in
6995 let acc = this#on_expr acc e2 in acc
6996 method on_instanceOf acc e1 e2 =
6997 let acc = this#on_expr acc e1 in
6998 let acc = this#on_class_id acc e2 in acc
6999 method on_is acc e _ = this#on_expr acc e
7000 method on_class_id acc =
7001 function | CIexpr e -> this#on_expr acc e | _ -> acc
7002 method on_new acc cid el uel =
7003 let acc = this#on_class_id acc cid in
7004 let acc = List.fold_left this#on_expr acc el in
7005 let acc = List.fold_left this#on_expr acc uel in acc
7006 method on_efun acc f _ =
7007 match f.f_body with
7008 | UnnamedBody _ ->
7009 failwith
7010 "lambdas expected to be named in the context of the surrounding function"
7011 | NamedBody { fnb_nast = n;_} -> this#on_block acc n
7012 method on_xml acc _ attrl el =
7013 let acc =
7014 List.fold_left
7015 (fun acc ->
7016 fun attr ->
7017 match attr with
7018 | Xhp_simple (_,e)|Xhp_spread e -> this#on_expr acc e)
7019 acc attrl
7021 let acc = List.fold_left this#on_expr acc el in acc
7022 method on_param_kind acc _ = acc
7023 method on_callconv acc kind e =
7024 let acc = this#on_param_kind acc kind in
7025 let acc = this#on_expr acc e in acc
7026 method on_assert acc =
7027 function | AE_assert e -> this#on_expr acc e
7028 method on_clone acc e = this#on_expr acc e
7029 method on_field acc (e1,e2) =
7030 let acc = this#on_expr acc e1 in
7031 let acc = this#on_expr acc e2 in acc
7032 method on_afield acc =
7033 function
7034 | AFvalue e -> this#on_expr acc e
7035 | AFkvalue (e1,e2) ->
7036 let acc = this#on_expr acc e1 in
7037 let acc = this#on_expr acc e2 in acc
7038 method on_hint acc _ = acc
7039 method on_fun_ acc f =
7040 let acc = this#on_id acc f.f_name in
7041 let acc = this#on_func_body acc f.f_body in
7042 let acc =
7043 match f.f_ret with
7044 | Some h -> this#on_hint acc h
7045 | None -> acc in
7047 method on_func_named_body acc fnb =
7048 this#on_block acc fnb.fnb_nast
7049 method on_func_unnamed_body acc _ = acc
7050 method on_func_body acc =
7051 function
7052 | UnnamedBody unb -> this#on_func_unnamed_body acc unb
7053 | NamedBody nb -> this#on_func_named_body acc nb
7054 method on_method_ acc m =
7055 let acc = this#on_id acc m.m_name in
7056 let acc = this#on_func_body acc m.m_body in acc
7057 method on_class_ acc c =
7058 let acc = this#on_id acc c.c_name in
7059 let acc = List.fold_left this#on_hint acc c.c_extends in
7060 let acc = List.fold_left this#on_hint acc c.c_uses in
7061 let acc = List.fold_left this#on_hint acc c.c_implements in
7062 let acc =
7063 match c.c_constructor with
7064 | Some ctor -> this#on_method_ acc ctor
7065 | None -> acc in
7066 let acc = List.fold_left this#on_method_ acc c.c_methods in
7067 let acc = List.fold_left this#on_method_ acc c.c_static_methods
7070 method on_gconst acc g =
7071 let acc = this#on_id acc g.cst_name in
7072 let acc =
7073 match g.cst_value with
7074 | Some e -> this#on_expr acc e
7075 | None -> acc in
7076 let acc =
7077 match g.cst_type with
7078 | Some h -> this#on_hint acc h
7079 | None -> acc in
7081 method on_typedef acc t =
7082 let acc = this#on_id acc t.t_name in
7083 let acc = this#on_hint acc t.t_kind in
7084 let acc =
7085 match t.t_constraint with
7086 | Some c -> this#on_hint acc c
7087 | None -> acc in
7089 method on_def acc =
7090 function
7091 | Fun f -> this#on_fun_ acc f
7092 | Class c -> this#on_class_ acc c
7093 | Typedef t -> this#on_typedef acc t
7094 | Constant g -> this#on_gconst acc g
7095 method on_program acc p =
7096 let acc =
7097 List.fold_left (fun acc -> fun d -> this#on_def acc d) acc
7102 module HasReturn : sig val block : block -> bool end =
7103 struct
7104 let visitor =
7105 object
7106 inherit [bool] visitor
7107 method! on_expr acc _ = acc
7108 method! on_return _ _ _ = true
7109 end
7110 let block b = visitor#on_block false b
7111 end
7112 class loop_visitor =
7113 object
7114 inherit [bool] visitor
7115 method! on_expr acc _ = acc
7116 method! on_for acc _ _ _ _ = acc
7117 method! on_foreach acc _ _ _ = acc
7118 method! on_do acc _ _ = acc
7119 method! on_while acc _ _ = acc
7120 method! on_switch acc _ _ = acc
7122 module HasContinue : sig val block : block -> bool end =
7123 struct
7124 let visitor =
7125 object inherit loop_visitor method! on_continue _ _ = true end
7126 let block b = visitor#on_block false b
7127 end
7128 module HasBreak : sig val block : block -> bool end =
7129 struct
7130 let visitor =
7131 object inherit loop_visitor method! on_break _ _ = true end
7132 let block b = visitor#on_block false b
7133 end