08eb1c10bea2397f4355772f0145a519dbaf0e36
[nit.git] / src / parser / parser_prod.nit
1 # Production AST nodes full definition.
2 # This file was generated by SableCC (http://www.sablecc.org/).
3 package parser_prod
4
5 import lexer
6 intrude import parser_nodes
7
8 redef class ANode
9 # Parent of the node in the AST
10 readable writable var _parent: nullable ANode
11
12 # Remove a child from the AST
13 fun remove_child(child: ANode)
14 do
15 replace_child(child, null)
16 end
17
18 # Replace a child with an other node in the AST
19 fun replace_child(old_child: ANode, new_child: nullable ANode) is abstract
20
21 # Replace itself with an other node in the AST
22 fun replace_with(node: ANode)
23 do
24 if (_parent != null) then
25 _parent.replace_child(self, node)
26 end
27 end
28
29 # Visit all nodes in order.
30 # Thus, call "v.visit(e)" for each node e
31 fun visit_all(v: Visitor) is abstract
32
33 # Visit all nodes in reverse order.
34 # Thus, call "v.visit(e)" for each node e starting from the last child
35 fun visit_all_reverse(v: Visitor) is abstract
36 end
37
38 redef class Token
39 redef fun visit_all(v: Visitor) do end
40 redef fun visit_all_reverse(v: Visitor) do end
41 redef fun replace_child(old_child: ANode, new_child: nullable ANode) do end
42 end
43
44 redef class Prod
45 redef fun replace_with(n: ANode)
46 do
47 super
48 assert n isa Prod
49 n.location = location
50 end
51 end
52
53 # Abstract standard visitor
54 class Visitor
55 # What the visitor do when a node is visited
56 # Concrete visitors should redefine this method.
57 protected fun visit(e: nullable ANode) is abstract
58
59 # Ask the visitor to visit a given node.
60 # Usually automatically called by visit_all* methods.
61 # This methos should not be redefined
62 fun enter_visit(e: nullable ANode)
63 do
64 var old = _current_node
65 _current_node = e
66 visit(e)
67 _current_node = old
68 end
69
70 # The current visited node
71 readable var _current_node: nullable ANode = null
72 end
73
74 redef class AModule
75 redef fun n_packagedecl=(n)
76 do
77 _n_packagedecl = n
78 if n != null then
79 n.parent = self
80 end
81 end
82
83 private init empty_init do end
84
85 init init_amodule (
86 n_packagedecl: nullable APackagedecl,
87 n_imports: Collection[Object], # Should be Collection[AImport]
88 n_classdefs: Collection[Object] # Should be Collection[AClassdef]
89 )
90 do
91 empty_init
92 _n_packagedecl = n_packagedecl
93 if n_packagedecl != null then
94 n_packagedecl.parent = self
95 end
96 for n in n_imports do
97 assert n isa AImport
98 _n_imports.add(n)
99 n.parent = self
100 end
101 for n in n_classdefs do
102 assert n isa AClassdef
103 _n_classdefs.add(n)
104 n.parent = self
105 end
106 end
107
108 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
109 do
110 if _n_packagedecl == old_child then
111 if new_child != null then
112 new_child.parent = self
113 assert new_child isa APackagedecl
114 _n_packagedecl = new_child
115 else
116 _n_packagedecl = null
117 end
118 return
119 end
120 for i in [0.._n_imports.length[ do
121 if _n_imports[i] == old_child then
122 if new_child != null then
123 assert new_child isa AImport
124 _n_imports[i] = new_child
125 new_child.parent = self
126 else
127 _n_imports.remove_at(i)
128 end
129 return
130 end
131 end
132 for i in [0.._n_classdefs.length[ do
133 if _n_classdefs[i] == old_child then
134 if new_child != null then
135 assert new_child isa AClassdef
136 _n_classdefs[i] = new_child
137 new_child.parent = self
138 else
139 _n_classdefs.remove_at(i)
140 end
141 return
142 end
143 end
144 end
145
146 redef fun visit_all(v: Visitor)
147 do
148 if _n_packagedecl != null then
149 v.enter_visit(_n_packagedecl.as(not null))
150 end
151 for n in _n_imports do
152 v.enter_visit(n)
153 end
154 for n in _n_classdefs do
155 v.enter_visit(n)
156 end
157 end
158
159 redef fun visit_all_reverse(v: Visitor)
160 do
161 if _n_packagedecl != null then
162 v.enter_visit(_n_packagedecl.as(not null))
163 end
164 do
165 var i = _n_imports.length
166 while i >= 0 do
167 v.enter_visit(_n_imports[i])
168 i = i - 1
169 end
170 end
171 do
172 var i = _n_classdefs.length
173 while i >= 0 do
174 v.enter_visit(_n_classdefs[i])
175 i = i - 1
176 end
177 end
178 end
179 end
180 redef class APackagedecl
181 redef fun n_doc=(n)
182 do
183 _n_doc = n
184 if n != null then
185 n.parent = self
186 end
187 end
188 redef fun n_kwpackage=(n)
189 do
190 _n_kwpackage = n
191 n.parent = self
192 end
193 redef fun n_id=(n)
194 do
195 _n_id = n
196 n.parent = self
197 end
198
199 private init empty_init do end
200
201 init init_apackagedecl (
202 n_doc: nullable ADoc,
203 n_kwpackage: nullable TKwpackage,
204 n_id: nullable TId
205 )
206 do
207 empty_init
208 _n_doc = n_doc
209 if n_doc != null then
210 n_doc.parent = self
211 end
212 _n_kwpackage = n_kwpackage.as(not null)
213 n_kwpackage.parent = self
214 _n_id = n_id.as(not null)
215 n_id.parent = self
216 end
217
218 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
219 do
220 if _n_doc == old_child then
221 if new_child != null then
222 new_child.parent = self
223 assert new_child isa ADoc
224 _n_doc = new_child
225 else
226 _n_doc = null
227 end
228 return
229 end
230 if _n_kwpackage == old_child then
231 if new_child != null then
232 new_child.parent = self
233 assert new_child isa TKwpackage
234 _n_kwpackage = new_child
235 else
236 abort
237 end
238 return
239 end
240 if _n_id == old_child then
241 if new_child != null then
242 new_child.parent = self
243 assert new_child isa TId
244 _n_id = new_child
245 else
246 abort
247 end
248 return
249 end
250 end
251
252 redef fun visit_all(v: Visitor)
253 do
254 if _n_doc != null then
255 v.enter_visit(_n_doc.as(not null))
256 end
257 v.enter_visit(_n_kwpackage)
258 v.enter_visit(_n_id)
259 end
260
261 redef fun visit_all_reverse(v: Visitor)
262 do
263 if _n_doc != null then
264 v.enter_visit(_n_doc.as(not null))
265 end
266 v.enter_visit(_n_kwpackage)
267 v.enter_visit(_n_id)
268 end
269 end
270 redef class AStdImport
271 redef fun n_visibility=(n)
272 do
273 _n_visibility = n
274 n.parent = self
275 end
276 redef fun n_kwimport=(n)
277 do
278 _n_kwimport = n
279 n.parent = self
280 end
281 redef fun n_id=(n)
282 do
283 _n_id = n
284 n.parent = self
285 end
286
287 private init empty_init do end
288
289 init init_astdimport (
290 n_visibility: nullable AVisibility,
291 n_kwimport: nullable TKwimport,
292 n_id: nullable TId
293 )
294 do
295 empty_init
296 _n_visibility = n_visibility.as(not null)
297 n_visibility.parent = self
298 _n_kwimport = n_kwimport.as(not null)
299 n_kwimport.parent = self
300 _n_id = n_id.as(not null)
301 n_id.parent = self
302 end
303
304 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
305 do
306 if _n_visibility == old_child then
307 if new_child != null then
308 new_child.parent = self
309 assert new_child isa AVisibility
310 _n_visibility = new_child
311 else
312 abort
313 end
314 return
315 end
316 if _n_kwimport == old_child then
317 if new_child != null then
318 new_child.parent = self
319 assert new_child isa TKwimport
320 _n_kwimport = new_child
321 else
322 abort
323 end
324 return
325 end
326 if _n_id == old_child then
327 if new_child != null then
328 new_child.parent = self
329 assert new_child isa TId
330 _n_id = new_child
331 else
332 abort
333 end
334 return
335 end
336 end
337
338 redef fun visit_all(v: Visitor)
339 do
340 v.enter_visit(_n_visibility)
341 v.enter_visit(_n_kwimport)
342 v.enter_visit(_n_id)
343 end
344
345 redef fun visit_all_reverse(v: Visitor)
346 do
347 v.enter_visit(_n_visibility)
348 v.enter_visit(_n_kwimport)
349 v.enter_visit(_n_id)
350 end
351 end
352 redef class ANoImport
353 redef fun n_visibility=(n)
354 do
355 _n_visibility = n
356 n.parent = self
357 end
358 redef fun n_kwimport=(n)
359 do
360 _n_kwimport = n
361 n.parent = self
362 end
363 redef fun n_kwend=(n)
364 do
365 _n_kwend = n
366 n.parent = self
367 end
368
369 private init empty_init do end
370
371 init init_anoimport (
372 n_visibility: nullable AVisibility,
373 n_kwimport: nullable TKwimport,
374 n_kwend: nullable TKwend
375 )
376 do
377 empty_init
378 _n_visibility = n_visibility.as(not null)
379 n_visibility.parent = self
380 _n_kwimport = n_kwimport.as(not null)
381 n_kwimport.parent = self
382 _n_kwend = n_kwend.as(not null)
383 n_kwend.parent = self
384 end
385
386 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
387 do
388 if _n_visibility == old_child then
389 if new_child != null then
390 new_child.parent = self
391 assert new_child isa AVisibility
392 _n_visibility = new_child
393 else
394 abort
395 end
396 return
397 end
398 if _n_kwimport == old_child then
399 if new_child != null then
400 new_child.parent = self
401 assert new_child isa TKwimport
402 _n_kwimport = new_child
403 else
404 abort
405 end
406 return
407 end
408 if _n_kwend == old_child then
409 if new_child != null then
410 new_child.parent = self
411 assert new_child isa TKwend
412 _n_kwend = new_child
413 else
414 abort
415 end
416 return
417 end
418 end
419
420 redef fun visit_all(v: Visitor)
421 do
422 v.enter_visit(_n_visibility)
423 v.enter_visit(_n_kwimport)
424 v.enter_visit(_n_kwend)
425 end
426
427 redef fun visit_all_reverse(v: Visitor)
428 do
429 v.enter_visit(_n_visibility)
430 v.enter_visit(_n_kwimport)
431 v.enter_visit(_n_kwend)
432 end
433 end
434 redef class APublicVisibility
435
436 private init empty_init do end
437
438 init init_apublicvisibility
439 do
440 empty_init
441 end
442
443 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
444 do
445 end
446
447 redef fun visit_all(v: Visitor)
448 do
449 end
450
451 redef fun visit_all_reverse(v: Visitor)
452 do
453 end
454 end
455 redef class APrivateVisibility
456 redef fun n_kwprivate=(n)
457 do
458 _n_kwprivate = n
459 n.parent = self
460 end
461
462 private init empty_init do end
463
464 init init_aprivatevisibility (
465 n_kwprivate: nullable TKwprivate
466 )
467 do
468 empty_init
469 _n_kwprivate = n_kwprivate.as(not null)
470 n_kwprivate.parent = self
471 end
472
473 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
474 do
475 if _n_kwprivate == old_child then
476 if new_child != null then
477 new_child.parent = self
478 assert new_child isa TKwprivate
479 _n_kwprivate = new_child
480 else
481 abort
482 end
483 return
484 end
485 end
486
487 redef fun visit_all(v: Visitor)
488 do
489 v.enter_visit(_n_kwprivate)
490 end
491
492 redef fun visit_all_reverse(v: Visitor)
493 do
494 v.enter_visit(_n_kwprivate)
495 end
496 end
497 redef class AProtectedVisibility
498 redef fun n_kwprotected=(n)
499 do
500 _n_kwprotected = n
501 n.parent = self
502 end
503
504 private init empty_init do end
505
506 init init_aprotectedvisibility (
507 n_kwprotected: nullable TKwprotected
508 )
509 do
510 empty_init
511 _n_kwprotected = n_kwprotected.as(not null)
512 n_kwprotected.parent = self
513 end
514
515 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
516 do
517 if _n_kwprotected == old_child then
518 if new_child != null then
519 new_child.parent = self
520 assert new_child isa TKwprotected
521 _n_kwprotected = new_child
522 else
523 abort
524 end
525 return
526 end
527 end
528
529 redef fun visit_all(v: Visitor)
530 do
531 v.enter_visit(_n_kwprotected)
532 end
533
534 redef fun visit_all_reverse(v: Visitor)
535 do
536 v.enter_visit(_n_kwprotected)
537 end
538 end
539 redef class AIntrudeVisibility
540 redef fun n_kwintrude=(n)
541 do
542 _n_kwintrude = n
543 n.parent = self
544 end
545
546 private init empty_init do end
547
548 init init_aintrudevisibility (
549 n_kwintrude: nullable TKwintrude
550 )
551 do
552 empty_init
553 _n_kwintrude = n_kwintrude.as(not null)
554 n_kwintrude.parent = self
555 end
556
557 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
558 do
559 if _n_kwintrude == old_child then
560 if new_child != null then
561 new_child.parent = self
562 assert new_child isa TKwintrude
563 _n_kwintrude = new_child
564 else
565 abort
566 end
567 return
568 end
569 end
570
571 redef fun visit_all(v: Visitor)
572 do
573 v.enter_visit(_n_kwintrude)
574 end
575
576 redef fun visit_all_reverse(v: Visitor)
577 do
578 v.enter_visit(_n_kwintrude)
579 end
580 end
581 redef class AStdClassdef
582 redef fun n_doc=(n)
583 do
584 _n_doc = n
585 if n != null then
586 n.parent = self
587 end
588 end
589 redef fun n_kwredef=(n)
590 do
591 _n_kwredef = n
592 if n != null then
593 n.parent = self
594 end
595 end
596 redef fun n_visibility=(n)
597 do
598 _n_visibility = n
599 n.parent = self
600 end
601 redef fun n_classkind=(n)
602 do
603 _n_classkind = n
604 n.parent = self
605 end
606 redef fun n_id=(n)
607 do
608 _n_id = n
609 if n != null then
610 n.parent = self
611 end
612 end
613
614 private init empty_init do end
615
616 init init_astdclassdef (
617 n_doc: nullable ADoc,
618 n_kwredef: nullable TKwredef,
619 n_visibility: nullable AVisibility,
620 n_classkind: nullable AClasskind,
621 n_id: nullable TClassid,
622 n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
623 n_superclasses: Collection[Object], # Should be Collection[ASuperclass]
624 n_propdefs: Collection[Object] # Should be Collection[APropdef]
625 )
626 do
627 empty_init
628 _n_doc = n_doc
629 if n_doc != null then
630 n_doc.parent = self
631 end
632 _n_kwredef = n_kwredef
633 if n_kwredef != null then
634 n_kwredef.parent = self
635 end
636 _n_visibility = n_visibility.as(not null)
637 n_visibility.parent = self
638 _n_classkind = n_classkind.as(not null)
639 n_classkind.parent = self
640 _n_id = n_id
641 if n_id != null then
642 n_id.parent = self
643 end
644 for n in n_formaldefs do
645 assert n isa AFormaldef
646 _n_formaldefs.add(n)
647 n.parent = self
648 end
649 for n in n_superclasses do
650 assert n isa ASuperclass
651 _n_superclasses.add(n)
652 n.parent = self
653 end
654 for n in n_propdefs do
655 assert n isa APropdef
656 _n_propdefs.add(n)
657 n.parent = self
658 end
659 end
660
661 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
662 do
663 if _n_doc == old_child then
664 if new_child != null then
665 new_child.parent = self
666 assert new_child isa ADoc
667 _n_doc = new_child
668 else
669 _n_doc = null
670 end
671 return
672 end
673 if _n_kwredef == old_child then
674 if new_child != null then
675 new_child.parent = self
676 assert new_child isa TKwredef
677 _n_kwredef = new_child
678 else
679 _n_kwredef = null
680 end
681 return
682 end
683 if _n_visibility == old_child then
684 if new_child != null then
685 new_child.parent = self
686 assert new_child isa AVisibility
687 _n_visibility = new_child
688 else
689 abort
690 end
691 return
692 end
693 if _n_classkind == old_child then
694 if new_child != null then
695 new_child.parent = self
696 assert new_child isa AClasskind
697 _n_classkind = new_child
698 else
699 abort
700 end
701 return
702 end
703 if _n_id == old_child then
704 if new_child != null then
705 new_child.parent = self
706 assert new_child isa TClassid
707 _n_id = new_child
708 else
709 _n_id = null
710 end
711 return
712 end
713 for i in [0.._n_formaldefs.length[ do
714 if _n_formaldefs[i] == old_child then
715 if new_child != null then
716 assert new_child isa AFormaldef
717 _n_formaldefs[i] = new_child
718 new_child.parent = self
719 else
720 _n_formaldefs.remove_at(i)
721 end
722 return
723 end
724 end
725 for i in [0.._n_superclasses.length[ do
726 if _n_superclasses[i] == old_child then
727 if new_child != null then
728 assert new_child isa ASuperclass
729 _n_superclasses[i] = new_child
730 new_child.parent = self
731 else
732 _n_superclasses.remove_at(i)
733 end
734 return
735 end
736 end
737 for i in [0.._n_propdefs.length[ do
738 if _n_propdefs[i] == old_child then
739 if new_child != null then
740 assert new_child isa APropdef
741 _n_propdefs[i] = new_child
742 new_child.parent = self
743 else
744 _n_propdefs.remove_at(i)
745 end
746 return
747 end
748 end
749 end
750
751 redef fun visit_all(v: Visitor)
752 do
753 if _n_doc != null then
754 v.enter_visit(_n_doc.as(not null))
755 end
756 if _n_kwredef != null then
757 v.enter_visit(_n_kwredef.as(not null))
758 end
759 v.enter_visit(_n_visibility)
760 v.enter_visit(_n_classkind)
761 if _n_id != null then
762 v.enter_visit(_n_id.as(not null))
763 end
764 for n in _n_formaldefs do
765 v.enter_visit(n)
766 end
767 for n in _n_superclasses do
768 v.enter_visit(n)
769 end
770 for n in _n_propdefs do
771 v.enter_visit(n)
772 end
773 end
774
775 redef fun visit_all_reverse(v: Visitor)
776 do
777 if _n_doc != null then
778 v.enter_visit(_n_doc.as(not null))
779 end
780 if _n_kwredef != null then
781 v.enter_visit(_n_kwredef.as(not null))
782 end
783 v.enter_visit(_n_visibility)
784 v.enter_visit(_n_classkind)
785 if _n_id != null then
786 v.enter_visit(_n_id.as(not null))
787 end
788 do
789 var i = _n_formaldefs.length
790 while i >= 0 do
791 v.enter_visit(_n_formaldefs[i])
792 i = i - 1
793 end
794 end
795 do
796 var i = _n_superclasses.length
797 while i >= 0 do
798 v.enter_visit(_n_superclasses[i])
799 i = i - 1
800 end
801 end
802 do
803 var i = _n_propdefs.length
804 while i >= 0 do
805 v.enter_visit(_n_propdefs[i])
806 i = i - 1
807 end
808 end
809 end
810 end
811 redef class ATopClassdef
812
813 private init empty_init do end
814
815 init init_atopclassdef (
816 n_propdefs: Collection[Object] # Should be Collection[APropdef]
817 )
818 do
819 empty_init
820 for n in n_propdefs do
821 assert n isa APropdef
822 _n_propdefs.add(n)
823 n.parent = self
824 end
825 end
826
827 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
828 do
829 for i in [0.._n_propdefs.length[ do
830 if _n_propdefs[i] == old_child then
831 if new_child != null then
832 assert new_child isa APropdef
833 _n_propdefs[i] = new_child
834 new_child.parent = self
835 else
836 _n_propdefs.remove_at(i)
837 end
838 return
839 end
840 end
841 end
842
843 redef fun visit_all(v: Visitor)
844 do
845 for n in _n_propdefs do
846 v.enter_visit(n)
847 end
848 end
849
850 redef fun visit_all_reverse(v: Visitor)
851 do
852 do
853 var i = _n_propdefs.length
854 while i >= 0 do
855 v.enter_visit(_n_propdefs[i])
856 i = i - 1
857 end
858 end
859 end
860 end
861 redef class AMainClassdef
862
863 private init empty_init do end
864
865 init init_amainclassdef (
866 n_propdefs: Collection[Object] # Should be Collection[APropdef]
867 )
868 do
869 empty_init
870 for n in n_propdefs do
871 assert n isa APropdef
872 _n_propdefs.add(n)
873 n.parent = self
874 end
875 end
876
877 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
878 do
879 for i in [0.._n_propdefs.length[ do
880 if _n_propdefs[i] == old_child then
881 if new_child != null then
882 assert new_child isa APropdef
883 _n_propdefs[i] = new_child
884 new_child.parent = self
885 else
886 _n_propdefs.remove_at(i)
887 end
888 return
889 end
890 end
891 end
892
893 redef fun visit_all(v: Visitor)
894 do
895 for n in _n_propdefs do
896 v.enter_visit(n)
897 end
898 end
899
900 redef fun visit_all_reverse(v: Visitor)
901 do
902 do
903 var i = _n_propdefs.length
904 while i >= 0 do
905 v.enter_visit(_n_propdefs[i])
906 i = i - 1
907 end
908 end
909 end
910 end
911 redef class AConcreteClasskind
912 redef fun n_kwclass=(n)
913 do
914 _n_kwclass = n
915 n.parent = self
916 end
917
918 private init empty_init do end
919
920 init init_aconcreteclasskind (
921 n_kwclass: nullable TKwclass
922 )
923 do
924 empty_init
925 _n_kwclass = n_kwclass.as(not null)
926 n_kwclass.parent = self
927 end
928
929 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
930 do
931 if _n_kwclass == old_child then
932 if new_child != null then
933 new_child.parent = self
934 assert new_child isa TKwclass
935 _n_kwclass = new_child
936 else
937 abort
938 end
939 return
940 end
941 end
942
943 redef fun visit_all(v: Visitor)
944 do
945 v.enter_visit(_n_kwclass)
946 end
947
948 redef fun visit_all_reverse(v: Visitor)
949 do
950 v.enter_visit(_n_kwclass)
951 end
952 end
953 redef class AAbstractClasskind
954 redef fun n_kwabstract=(n)
955 do
956 _n_kwabstract = n
957 n.parent = self
958 end
959 redef fun n_kwclass=(n)
960 do
961 _n_kwclass = n
962 n.parent = self
963 end
964
965 private init empty_init do end
966
967 init init_aabstractclasskind (
968 n_kwabstract: nullable TKwabstract,
969 n_kwclass: nullable TKwclass
970 )
971 do
972 empty_init
973 _n_kwabstract = n_kwabstract.as(not null)
974 n_kwabstract.parent = self
975 _n_kwclass = n_kwclass.as(not null)
976 n_kwclass.parent = self
977 end
978
979 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
980 do
981 if _n_kwabstract == old_child then
982 if new_child != null then
983 new_child.parent = self
984 assert new_child isa TKwabstract
985 _n_kwabstract = new_child
986 else
987 abort
988 end
989 return
990 end
991 if _n_kwclass == old_child then
992 if new_child != null then
993 new_child.parent = self
994 assert new_child isa TKwclass
995 _n_kwclass = new_child
996 else
997 abort
998 end
999 return
1000 end
1001 end
1002
1003 redef fun visit_all(v: Visitor)
1004 do
1005 v.enter_visit(_n_kwabstract)
1006 v.enter_visit(_n_kwclass)
1007 end
1008
1009 redef fun visit_all_reverse(v: Visitor)
1010 do
1011 v.enter_visit(_n_kwabstract)
1012 v.enter_visit(_n_kwclass)
1013 end
1014 end
1015 redef class AInterfaceClasskind
1016 redef fun n_kwinterface=(n)
1017 do
1018 _n_kwinterface = n
1019 n.parent = self
1020 end
1021
1022 private init empty_init do end
1023
1024 init init_ainterfaceclasskind (
1025 n_kwinterface: nullable TKwinterface
1026 )
1027 do
1028 empty_init
1029 _n_kwinterface = n_kwinterface.as(not null)
1030 n_kwinterface.parent = self
1031 end
1032
1033 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1034 do
1035 if _n_kwinterface == old_child then
1036 if new_child != null then
1037 new_child.parent = self
1038 assert new_child isa TKwinterface
1039 _n_kwinterface = new_child
1040 else
1041 abort
1042 end
1043 return
1044 end
1045 end
1046
1047 redef fun visit_all(v: Visitor)
1048 do
1049 v.enter_visit(_n_kwinterface)
1050 end
1051
1052 redef fun visit_all_reverse(v: Visitor)
1053 do
1054 v.enter_visit(_n_kwinterface)
1055 end
1056 end
1057 redef class AUniversalClasskind
1058 redef fun n_kwuniversal=(n)
1059 do
1060 _n_kwuniversal = n
1061 n.parent = self
1062 end
1063
1064 private init empty_init do end
1065
1066 init init_auniversalclasskind (
1067 n_kwuniversal: nullable TKwuniversal
1068 )
1069 do
1070 empty_init
1071 _n_kwuniversal = n_kwuniversal.as(not null)
1072 n_kwuniversal.parent = self
1073 end
1074
1075 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1076 do
1077 if _n_kwuniversal == old_child then
1078 if new_child != null then
1079 new_child.parent = self
1080 assert new_child isa TKwuniversal
1081 _n_kwuniversal = new_child
1082 else
1083 abort
1084 end
1085 return
1086 end
1087 end
1088
1089 redef fun visit_all(v: Visitor)
1090 do
1091 v.enter_visit(_n_kwuniversal)
1092 end
1093
1094 redef fun visit_all_reverse(v: Visitor)
1095 do
1096 v.enter_visit(_n_kwuniversal)
1097 end
1098 end
1099 redef class AFormaldef
1100 redef fun n_id=(n)
1101 do
1102 _n_id = n
1103 n.parent = self
1104 end
1105 redef fun n_type=(n)
1106 do
1107 _n_type = n
1108 if n != null then
1109 n.parent = self
1110 end
1111 end
1112
1113 private init empty_init do end
1114
1115 init init_aformaldef (
1116 n_id: nullable TClassid,
1117 n_type: nullable AType
1118 )
1119 do
1120 empty_init
1121 _n_id = n_id.as(not null)
1122 n_id.parent = self
1123 _n_type = n_type
1124 if n_type != null then
1125 n_type.parent = self
1126 end
1127 end
1128
1129 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1130 do
1131 if _n_id == old_child then
1132 if new_child != null then
1133 new_child.parent = self
1134 assert new_child isa TClassid
1135 _n_id = new_child
1136 else
1137 abort
1138 end
1139 return
1140 end
1141 if _n_type == old_child then
1142 if new_child != null then
1143 new_child.parent = self
1144 assert new_child isa AType
1145 _n_type = new_child
1146 else
1147 _n_type = null
1148 end
1149 return
1150 end
1151 end
1152
1153 redef fun visit_all(v: Visitor)
1154 do
1155 v.enter_visit(_n_id)
1156 if _n_type != null then
1157 v.enter_visit(_n_type.as(not null))
1158 end
1159 end
1160
1161 redef fun visit_all_reverse(v: Visitor)
1162 do
1163 v.enter_visit(_n_id)
1164 if _n_type != null then
1165 v.enter_visit(_n_type.as(not null))
1166 end
1167 end
1168 end
1169 redef class ASuperclass
1170 redef fun n_kwspecial=(n)
1171 do
1172 _n_kwspecial = n
1173 n.parent = self
1174 end
1175 redef fun n_type=(n)
1176 do
1177 _n_type = n
1178 n.parent = self
1179 end
1180
1181 private init empty_init do end
1182
1183 init init_asuperclass (
1184 n_kwspecial: nullable TKwspecial,
1185 n_type: nullable AType
1186 )
1187 do
1188 empty_init
1189 _n_kwspecial = n_kwspecial.as(not null)
1190 n_kwspecial.parent = self
1191 _n_type = n_type.as(not null)
1192 n_type.parent = self
1193 end
1194
1195 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1196 do
1197 if _n_kwspecial == old_child then
1198 if new_child != null then
1199 new_child.parent = self
1200 assert new_child isa TKwspecial
1201 _n_kwspecial = new_child
1202 else
1203 abort
1204 end
1205 return
1206 end
1207 if _n_type == old_child then
1208 if new_child != null then
1209 new_child.parent = self
1210 assert new_child isa AType
1211 _n_type = new_child
1212 else
1213 abort
1214 end
1215 return
1216 end
1217 end
1218
1219 redef fun visit_all(v: Visitor)
1220 do
1221 v.enter_visit(_n_kwspecial)
1222 v.enter_visit(_n_type)
1223 end
1224
1225 redef fun visit_all_reverse(v: Visitor)
1226 do
1227 v.enter_visit(_n_kwspecial)
1228 v.enter_visit(_n_type)
1229 end
1230 end
1231 redef class AAttrPropdef
1232 redef fun n_doc=(n)
1233 do
1234 _n_doc = n
1235 if n != null then
1236 n.parent = self
1237 end
1238 end
1239 redef fun n_readable=(n)
1240 do
1241 _n_readable = n
1242 if n != null then
1243 n.parent = self
1244 end
1245 end
1246 redef fun n_writable=(n)
1247 do
1248 _n_writable = n
1249 if n != null then
1250 n.parent = self
1251 end
1252 end
1253 redef fun n_kwredef=(n)
1254 do
1255 _n_kwredef = n
1256 if n != null then
1257 n.parent = self
1258 end
1259 end
1260 redef fun n_visibility=(n)
1261 do
1262 _n_visibility = n
1263 n.parent = self
1264 end
1265 redef fun n_kwvar=(n)
1266 do
1267 _n_kwvar = n
1268 n.parent = self
1269 end
1270 redef fun n_id=(n)
1271 do
1272 _n_id = n
1273 n.parent = self
1274 end
1275 redef fun n_type=(n)
1276 do
1277 _n_type = n
1278 if n != null then
1279 n.parent = self
1280 end
1281 end
1282 redef fun n_expr=(n)
1283 do
1284 _n_expr = n
1285 if n != null then
1286 n.parent = self
1287 end
1288 end
1289
1290 private init empty_init do end
1291
1292 init init_aattrpropdef (
1293 n_doc: nullable ADoc,
1294 n_readable: nullable AAble,
1295 n_writable: nullable AAble,
1296 n_kwredef: nullable TKwredef,
1297 n_visibility: nullable AVisibility,
1298 n_kwvar: nullable TKwvar,
1299 n_id: nullable TAttrid,
1300 n_type: nullable AType,
1301 n_expr: nullable AExpr
1302 )
1303 do
1304 empty_init
1305 _n_doc = n_doc
1306 if n_doc != null then
1307 n_doc.parent = self
1308 end
1309 _n_readable = n_readable
1310 if n_readable != null then
1311 n_readable.parent = self
1312 end
1313 _n_writable = n_writable
1314 if n_writable != null then
1315 n_writable.parent = self
1316 end
1317 _n_kwredef = n_kwredef
1318 if n_kwredef != null then
1319 n_kwredef.parent = self
1320 end
1321 _n_visibility = n_visibility.as(not null)
1322 n_visibility.parent = self
1323 _n_kwvar = n_kwvar.as(not null)
1324 n_kwvar.parent = self
1325 _n_id = n_id.as(not null)
1326 n_id.parent = self
1327 _n_type = n_type
1328 if n_type != null then
1329 n_type.parent = self
1330 end
1331 _n_expr = n_expr
1332 if n_expr != null then
1333 n_expr.parent = self
1334 end
1335 end
1336
1337 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1338 do
1339 if _n_doc == old_child then
1340 if new_child != null then
1341 new_child.parent = self
1342 assert new_child isa ADoc
1343 _n_doc = new_child
1344 else
1345 _n_doc = null
1346 end
1347 return
1348 end
1349 if _n_readable == old_child then
1350 if new_child != null then
1351 new_child.parent = self
1352 assert new_child isa AAble
1353 _n_readable = new_child
1354 else
1355 _n_readable = null
1356 end
1357 return
1358 end
1359 if _n_writable == old_child then
1360 if new_child != null then
1361 new_child.parent = self
1362 assert new_child isa AAble
1363 _n_writable = new_child
1364 else
1365 _n_writable = null
1366 end
1367 return
1368 end
1369 if _n_kwredef == old_child then
1370 if new_child != null then
1371 new_child.parent = self
1372 assert new_child isa TKwredef
1373 _n_kwredef = new_child
1374 else
1375 _n_kwredef = null
1376 end
1377 return
1378 end
1379 if _n_visibility == old_child then
1380 if new_child != null then
1381 new_child.parent = self
1382 assert new_child isa AVisibility
1383 _n_visibility = new_child
1384 else
1385 abort
1386 end
1387 return
1388 end
1389 if _n_kwvar == old_child then
1390 if new_child != null then
1391 new_child.parent = self
1392 assert new_child isa TKwvar
1393 _n_kwvar = new_child
1394 else
1395 abort
1396 end
1397 return
1398 end
1399 if _n_id == old_child then
1400 if new_child != null then
1401 new_child.parent = self
1402 assert new_child isa TAttrid
1403 _n_id = new_child
1404 else
1405 abort
1406 end
1407 return
1408 end
1409 if _n_type == old_child then
1410 if new_child != null then
1411 new_child.parent = self
1412 assert new_child isa AType
1413 _n_type = new_child
1414 else
1415 _n_type = null
1416 end
1417 return
1418 end
1419 if _n_expr == old_child then
1420 if new_child != null then
1421 new_child.parent = self
1422 assert new_child isa AExpr
1423 _n_expr = new_child
1424 else
1425 _n_expr = null
1426 end
1427 return
1428 end
1429 end
1430
1431 redef fun visit_all(v: Visitor)
1432 do
1433 if _n_doc != null then
1434 v.enter_visit(_n_doc.as(not null))
1435 end
1436 if _n_readable != null then
1437 v.enter_visit(_n_readable.as(not null))
1438 end
1439 if _n_writable != null then
1440 v.enter_visit(_n_writable.as(not null))
1441 end
1442 if _n_kwredef != null then
1443 v.enter_visit(_n_kwredef.as(not null))
1444 end
1445 v.enter_visit(_n_visibility)
1446 v.enter_visit(_n_kwvar)
1447 v.enter_visit(_n_id)
1448 if _n_type != null then
1449 v.enter_visit(_n_type.as(not null))
1450 end
1451 if _n_expr != null then
1452 v.enter_visit(_n_expr.as(not null))
1453 end
1454 end
1455
1456 redef fun visit_all_reverse(v: Visitor)
1457 do
1458 if _n_doc != null then
1459 v.enter_visit(_n_doc.as(not null))
1460 end
1461 if _n_readable != null then
1462 v.enter_visit(_n_readable.as(not null))
1463 end
1464 if _n_writable != null then
1465 v.enter_visit(_n_writable.as(not null))
1466 end
1467 if _n_kwredef != null then
1468 v.enter_visit(_n_kwredef.as(not null))
1469 end
1470 v.enter_visit(_n_visibility)
1471 v.enter_visit(_n_kwvar)
1472 v.enter_visit(_n_id)
1473 if _n_type != null then
1474 v.enter_visit(_n_type.as(not null))
1475 end
1476 if _n_expr != null then
1477 v.enter_visit(_n_expr.as(not null))
1478 end
1479 end
1480 end
1481 redef class AMethPropdef
1482 redef fun n_doc=(n)
1483 do
1484 _n_doc = n
1485 if n != null then
1486 n.parent = self
1487 end
1488 end
1489 redef fun n_kwredef=(n)
1490 do
1491 _n_kwredef = n
1492 if n != null then
1493 n.parent = self
1494 end
1495 end
1496 redef fun n_visibility=(n)
1497 do
1498 _n_visibility = n
1499 n.parent = self
1500 end
1501 redef fun n_methid=(n)
1502 do
1503 _n_methid = n
1504 n.parent = self
1505 end
1506 redef fun n_signature=(n)
1507 do
1508 _n_signature = n
1509 n.parent = self
1510 end
1511
1512 private init empty_init do end
1513
1514 init init_amethpropdef (
1515 n_doc: nullable ADoc,
1516 n_kwredef: nullable TKwredef,
1517 n_visibility: nullable AVisibility,
1518 n_methid: nullable AMethid,
1519 n_signature: nullable ASignature
1520 )
1521 do
1522 empty_init
1523 _n_doc = n_doc
1524 if n_doc != null then
1525 n_doc.parent = self
1526 end
1527 _n_kwredef = n_kwredef
1528 if n_kwredef != null then
1529 n_kwredef.parent = self
1530 end
1531 _n_visibility = n_visibility.as(not null)
1532 n_visibility.parent = self
1533 _n_methid = n_methid.as(not null)
1534 n_methid.parent = self
1535 _n_signature = n_signature.as(not null)
1536 n_signature.parent = self
1537 end
1538
1539 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1540 do
1541 if _n_doc == old_child then
1542 if new_child != null then
1543 new_child.parent = self
1544 assert new_child isa ADoc
1545 _n_doc = new_child
1546 else
1547 _n_doc = null
1548 end
1549 return
1550 end
1551 if _n_kwredef == old_child then
1552 if new_child != null then
1553 new_child.parent = self
1554 assert new_child isa TKwredef
1555 _n_kwredef = new_child
1556 else
1557 _n_kwredef = null
1558 end
1559 return
1560 end
1561 if _n_visibility == old_child then
1562 if new_child != null then
1563 new_child.parent = self
1564 assert new_child isa AVisibility
1565 _n_visibility = new_child
1566 else
1567 abort
1568 end
1569 return
1570 end
1571 if _n_methid == old_child then
1572 if new_child != null then
1573 new_child.parent = self
1574 assert new_child isa AMethid
1575 _n_methid = new_child
1576 else
1577 abort
1578 end
1579 return
1580 end
1581 if _n_signature == old_child then
1582 if new_child != null then
1583 new_child.parent = self
1584 assert new_child isa ASignature
1585 _n_signature = new_child
1586 else
1587 abort
1588 end
1589 return
1590 end
1591 end
1592
1593 redef fun visit_all(v: Visitor)
1594 do
1595 if _n_doc != null then
1596 v.enter_visit(_n_doc.as(not null))
1597 end
1598 if _n_kwredef != null then
1599 v.enter_visit(_n_kwredef.as(not null))
1600 end
1601 v.enter_visit(_n_visibility)
1602 v.enter_visit(_n_methid)
1603 v.enter_visit(_n_signature)
1604 end
1605
1606 redef fun visit_all_reverse(v: Visitor)
1607 do
1608 if _n_doc != null then
1609 v.enter_visit(_n_doc.as(not null))
1610 end
1611 if _n_kwredef != null then
1612 v.enter_visit(_n_kwredef.as(not null))
1613 end
1614 v.enter_visit(_n_visibility)
1615 v.enter_visit(_n_methid)
1616 v.enter_visit(_n_signature)
1617 end
1618 end
1619 redef class ADeferredMethPropdef
1620 redef fun n_doc=(n)
1621 do
1622 _n_doc = n
1623 if n != null then
1624 n.parent = self
1625 end
1626 end
1627 redef fun n_kwredef=(n)
1628 do
1629 _n_kwredef = n
1630 if n != null then
1631 n.parent = self
1632 end
1633 end
1634 redef fun n_visibility=(n)
1635 do
1636 _n_visibility = n
1637 n.parent = self
1638 end
1639 redef fun n_kwmeth=(n)
1640 do
1641 _n_kwmeth = n
1642 n.parent = self
1643 end
1644 redef fun n_methid=(n)
1645 do
1646 _n_methid = n
1647 n.parent = self
1648 end
1649 redef fun n_signature=(n)
1650 do
1651 _n_signature = n
1652 n.parent = self
1653 end
1654
1655 private init empty_init do end
1656
1657 init init_adeferredmethpropdef (
1658 n_doc: nullable ADoc,
1659 n_kwredef: nullable TKwredef,
1660 n_visibility: nullable AVisibility,
1661 n_kwmeth: nullable TKwmeth,
1662 n_methid: nullable AMethid,
1663 n_signature: nullable ASignature
1664 )
1665 do
1666 empty_init
1667 _n_doc = n_doc
1668 if n_doc != null then
1669 n_doc.parent = self
1670 end
1671 _n_kwredef = n_kwredef
1672 if n_kwredef != null then
1673 n_kwredef.parent = self
1674 end
1675 _n_visibility = n_visibility.as(not null)
1676 n_visibility.parent = self
1677 _n_kwmeth = n_kwmeth.as(not null)
1678 n_kwmeth.parent = self
1679 _n_methid = n_methid.as(not null)
1680 n_methid.parent = self
1681 _n_signature = n_signature.as(not null)
1682 n_signature.parent = self
1683 end
1684
1685 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1686 do
1687 if _n_doc == old_child then
1688 if new_child != null then
1689 new_child.parent = self
1690 assert new_child isa ADoc
1691 _n_doc = new_child
1692 else
1693 _n_doc = null
1694 end
1695 return
1696 end
1697 if _n_kwredef == old_child then
1698 if new_child != null then
1699 new_child.parent = self
1700 assert new_child isa TKwredef
1701 _n_kwredef = new_child
1702 else
1703 _n_kwredef = null
1704 end
1705 return
1706 end
1707 if _n_visibility == old_child then
1708 if new_child != null then
1709 new_child.parent = self
1710 assert new_child isa AVisibility
1711 _n_visibility = new_child
1712 else
1713 abort
1714 end
1715 return
1716 end
1717 if _n_kwmeth == old_child then
1718 if new_child != null then
1719 new_child.parent = self
1720 assert new_child isa TKwmeth
1721 _n_kwmeth = new_child
1722 else
1723 abort
1724 end
1725 return
1726 end
1727 if _n_methid == old_child then
1728 if new_child != null then
1729 new_child.parent = self
1730 assert new_child isa AMethid
1731 _n_methid = new_child
1732 else
1733 abort
1734 end
1735 return
1736 end
1737 if _n_signature == old_child then
1738 if new_child != null then
1739 new_child.parent = self
1740 assert new_child isa ASignature
1741 _n_signature = new_child
1742 else
1743 abort
1744 end
1745 return
1746 end
1747 end
1748
1749 redef fun visit_all(v: Visitor)
1750 do
1751 if _n_doc != null then
1752 v.enter_visit(_n_doc.as(not null))
1753 end
1754 if _n_kwredef != null then
1755 v.enter_visit(_n_kwredef.as(not null))
1756 end
1757 v.enter_visit(_n_visibility)
1758 v.enter_visit(_n_kwmeth)
1759 v.enter_visit(_n_methid)
1760 v.enter_visit(_n_signature)
1761 end
1762
1763 redef fun visit_all_reverse(v: Visitor)
1764 do
1765 if _n_doc != null then
1766 v.enter_visit(_n_doc.as(not null))
1767 end
1768 if _n_kwredef != null then
1769 v.enter_visit(_n_kwredef.as(not null))
1770 end
1771 v.enter_visit(_n_visibility)
1772 v.enter_visit(_n_kwmeth)
1773 v.enter_visit(_n_methid)
1774 v.enter_visit(_n_signature)
1775 end
1776 end
1777 redef class AInternMethPropdef
1778 redef fun n_doc=(n)
1779 do
1780 _n_doc = n
1781 if n != null then
1782 n.parent = self
1783 end
1784 end
1785 redef fun n_kwredef=(n)
1786 do
1787 _n_kwredef = n
1788 if n != null then
1789 n.parent = self
1790 end
1791 end
1792 redef fun n_visibility=(n)
1793 do
1794 _n_visibility = n
1795 n.parent = self
1796 end
1797 redef fun n_kwmeth=(n)
1798 do
1799 _n_kwmeth = n
1800 n.parent = self
1801 end
1802 redef fun n_methid=(n)
1803 do
1804 _n_methid = n
1805 n.parent = self
1806 end
1807 redef fun n_signature=(n)
1808 do
1809 _n_signature = n
1810 n.parent = self
1811 end
1812
1813 private init empty_init do end
1814
1815 init init_ainternmethpropdef (
1816 n_doc: nullable ADoc,
1817 n_kwredef: nullable TKwredef,
1818 n_visibility: nullable AVisibility,
1819 n_kwmeth: nullable TKwmeth,
1820 n_methid: nullable AMethid,
1821 n_signature: nullable ASignature
1822 )
1823 do
1824 empty_init
1825 _n_doc = n_doc
1826 if n_doc != null then
1827 n_doc.parent = self
1828 end
1829 _n_kwredef = n_kwredef
1830 if n_kwredef != null then
1831 n_kwredef.parent = self
1832 end
1833 _n_visibility = n_visibility.as(not null)
1834 n_visibility.parent = self
1835 _n_kwmeth = n_kwmeth.as(not null)
1836 n_kwmeth.parent = self
1837 _n_methid = n_methid.as(not null)
1838 n_methid.parent = self
1839 _n_signature = n_signature.as(not null)
1840 n_signature.parent = self
1841 end
1842
1843 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1844 do
1845 if _n_doc == old_child then
1846 if new_child != null then
1847 new_child.parent = self
1848 assert new_child isa ADoc
1849 _n_doc = new_child
1850 else
1851 _n_doc = null
1852 end
1853 return
1854 end
1855 if _n_kwredef == old_child then
1856 if new_child != null then
1857 new_child.parent = self
1858 assert new_child isa TKwredef
1859 _n_kwredef = new_child
1860 else
1861 _n_kwredef = null
1862 end
1863 return
1864 end
1865 if _n_visibility == old_child then
1866 if new_child != null then
1867 new_child.parent = self
1868 assert new_child isa AVisibility
1869 _n_visibility = new_child
1870 else
1871 abort
1872 end
1873 return
1874 end
1875 if _n_kwmeth == old_child then
1876 if new_child != null then
1877 new_child.parent = self
1878 assert new_child isa TKwmeth
1879 _n_kwmeth = new_child
1880 else
1881 abort
1882 end
1883 return
1884 end
1885 if _n_methid == old_child then
1886 if new_child != null then
1887 new_child.parent = self
1888 assert new_child isa AMethid
1889 _n_methid = new_child
1890 else
1891 abort
1892 end
1893 return
1894 end
1895 if _n_signature == old_child then
1896 if new_child != null then
1897 new_child.parent = self
1898 assert new_child isa ASignature
1899 _n_signature = new_child
1900 else
1901 abort
1902 end
1903 return
1904 end
1905 end
1906
1907 redef fun visit_all(v: Visitor)
1908 do
1909 if _n_doc != null then
1910 v.enter_visit(_n_doc.as(not null))
1911 end
1912 if _n_kwredef != null then
1913 v.enter_visit(_n_kwredef.as(not null))
1914 end
1915 v.enter_visit(_n_visibility)
1916 v.enter_visit(_n_kwmeth)
1917 v.enter_visit(_n_methid)
1918 v.enter_visit(_n_signature)
1919 end
1920
1921 redef fun visit_all_reverse(v: Visitor)
1922 do
1923 if _n_doc != null then
1924 v.enter_visit(_n_doc.as(not null))
1925 end
1926 if _n_kwredef != null then
1927 v.enter_visit(_n_kwredef.as(not null))
1928 end
1929 v.enter_visit(_n_visibility)
1930 v.enter_visit(_n_kwmeth)
1931 v.enter_visit(_n_methid)
1932 v.enter_visit(_n_signature)
1933 end
1934 end
1935 redef class AExternMethPropdef
1936 redef fun n_doc=(n)
1937 do
1938 _n_doc = n
1939 if n != null then
1940 n.parent = self
1941 end
1942 end
1943 redef fun n_kwredef=(n)
1944 do
1945 _n_kwredef = n
1946 if n != null then
1947 n.parent = self
1948 end
1949 end
1950 redef fun n_visibility=(n)
1951 do
1952 _n_visibility = n
1953 n.parent = self
1954 end
1955 redef fun n_kwmeth=(n)
1956 do
1957 _n_kwmeth = n
1958 n.parent = self
1959 end
1960 redef fun n_methid=(n)
1961 do
1962 _n_methid = n
1963 n.parent = self
1964 end
1965 redef fun n_signature=(n)
1966 do
1967 _n_signature = n
1968 n.parent = self
1969 end
1970 redef fun n_extern=(n)
1971 do
1972 _n_extern = n
1973 if n != null then
1974 n.parent = self
1975 end
1976 end
1977
1978 private init empty_init do end
1979
1980 init init_aexternmethpropdef (
1981 n_doc: nullable ADoc,
1982 n_kwredef: nullable TKwredef,
1983 n_visibility: nullable AVisibility,
1984 n_kwmeth: nullable TKwmeth,
1985 n_methid: nullable AMethid,
1986 n_signature: nullable ASignature,
1987 n_extern: nullable TString
1988 )
1989 do
1990 empty_init
1991 _n_doc = n_doc
1992 if n_doc != null then
1993 n_doc.parent = self
1994 end
1995 _n_kwredef = n_kwredef
1996 if n_kwredef != null then
1997 n_kwredef.parent = self
1998 end
1999 _n_visibility = n_visibility.as(not null)
2000 n_visibility.parent = self
2001 _n_kwmeth = n_kwmeth.as(not null)
2002 n_kwmeth.parent = self
2003 _n_methid = n_methid.as(not null)
2004 n_methid.parent = self
2005 _n_signature = n_signature.as(not null)
2006 n_signature.parent = self
2007 _n_extern = n_extern
2008 if n_extern != null then
2009 n_extern.parent = self
2010 end
2011 end
2012
2013 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2014 do
2015 if _n_doc == old_child then
2016 if new_child != null then
2017 new_child.parent = self
2018 assert new_child isa ADoc
2019 _n_doc = new_child
2020 else
2021 _n_doc = null
2022 end
2023 return
2024 end
2025 if _n_kwredef == old_child then
2026 if new_child != null then
2027 new_child.parent = self
2028 assert new_child isa TKwredef
2029 _n_kwredef = new_child
2030 else
2031 _n_kwredef = null
2032 end
2033 return
2034 end
2035 if _n_visibility == old_child then
2036 if new_child != null then
2037 new_child.parent = self
2038 assert new_child isa AVisibility
2039 _n_visibility = new_child
2040 else
2041 abort
2042 end
2043 return
2044 end
2045 if _n_kwmeth == old_child then
2046 if new_child != null then
2047 new_child.parent = self
2048 assert new_child isa TKwmeth
2049 _n_kwmeth = new_child
2050 else
2051 abort
2052 end
2053 return
2054 end
2055 if _n_methid == old_child then
2056 if new_child != null then
2057 new_child.parent = self
2058 assert new_child isa AMethid
2059 _n_methid = new_child
2060 else
2061 abort
2062 end
2063 return
2064 end
2065 if _n_signature == old_child then
2066 if new_child != null then
2067 new_child.parent = self
2068 assert new_child isa ASignature
2069 _n_signature = new_child
2070 else
2071 abort
2072 end
2073 return
2074 end
2075 if _n_extern == old_child then
2076 if new_child != null then
2077 new_child.parent = self
2078 assert new_child isa TString
2079 _n_extern = new_child
2080 else
2081 _n_extern = null
2082 end
2083 return
2084 end
2085 end
2086
2087 redef fun visit_all(v: Visitor)
2088 do
2089 if _n_doc != null then
2090 v.enter_visit(_n_doc.as(not null))
2091 end
2092 if _n_kwredef != null then
2093 v.enter_visit(_n_kwredef.as(not null))
2094 end
2095 v.enter_visit(_n_visibility)
2096 v.enter_visit(_n_kwmeth)
2097 v.enter_visit(_n_methid)
2098 v.enter_visit(_n_signature)
2099 if _n_extern != null then
2100 v.enter_visit(_n_extern.as(not null))
2101 end
2102 end
2103
2104 redef fun visit_all_reverse(v: Visitor)
2105 do
2106 if _n_doc != null then
2107 v.enter_visit(_n_doc.as(not null))
2108 end
2109 if _n_kwredef != null then
2110 v.enter_visit(_n_kwredef.as(not null))
2111 end
2112 v.enter_visit(_n_visibility)
2113 v.enter_visit(_n_kwmeth)
2114 v.enter_visit(_n_methid)
2115 v.enter_visit(_n_signature)
2116 if _n_extern != null then
2117 v.enter_visit(_n_extern.as(not null))
2118 end
2119 end
2120 end
2121 redef class AConcreteMethPropdef
2122 redef fun n_doc=(n)
2123 do
2124 _n_doc = n
2125 if n != null then
2126 n.parent = self
2127 end
2128 end
2129 redef fun n_kwredef=(n)
2130 do
2131 _n_kwredef = n
2132 if n != null then
2133 n.parent = self
2134 end
2135 end
2136 redef fun n_visibility=(n)
2137 do
2138 _n_visibility = n
2139 n.parent = self
2140 end
2141 redef fun n_kwmeth=(n)
2142 do
2143 _n_kwmeth = n
2144 n.parent = self
2145 end
2146 redef fun n_methid=(n)
2147 do
2148 _n_methid = n
2149 n.parent = self
2150 end
2151 redef fun n_signature=(n)
2152 do
2153 _n_signature = n
2154 n.parent = self
2155 end
2156 redef fun n_block=(n)
2157 do
2158 _n_block = n
2159 if n != null then
2160 n.parent = self
2161 end
2162 end
2163
2164 private init empty_init do end
2165
2166 init init_aconcretemethpropdef (
2167 n_doc: nullable ADoc,
2168 n_kwredef: nullable TKwredef,
2169 n_visibility: nullable AVisibility,
2170 n_kwmeth: nullable TKwmeth,
2171 n_methid: nullable AMethid,
2172 n_signature: nullable ASignature,
2173 n_block: nullable AExpr
2174 )
2175 do
2176 empty_init
2177 _n_doc = n_doc
2178 if n_doc != null then
2179 n_doc.parent = self
2180 end
2181 _n_kwredef = n_kwredef
2182 if n_kwredef != null then
2183 n_kwredef.parent = self
2184 end
2185 _n_visibility = n_visibility.as(not null)
2186 n_visibility.parent = self
2187 _n_kwmeth = n_kwmeth.as(not null)
2188 n_kwmeth.parent = self
2189 _n_methid = n_methid.as(not null)
2190 n_methid.parent = self
2191 _n_signature = n_signature.as(not null)
2192 n_signature.parent = self
2193 _n_block = n_block
2194 if n_block != null then
2195 n_block.parent = self
2196 end
2197 end
2198
2199 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2200 do
2201 if _n_doc == old_child then
2202 if new_child != null then
2203 new_child.parent = self
2204 assert new_child isa ADoc
2205 _n_doc = new_child
2206 else
2207 _n_doc = null
2208 end
2209 return
2210 end
2211 if _n_kwredef == old_child then
2212 if new_child != null then
2213 new_child.parent = self
2214 assert new_child isa TKwredef
2215 _n_kwredef = new_child
2216 else
2217 _n_kwredef = null
2218 end
2219 return
2220 end
2221 if _n_visibility == old_child then
2222 if new_child != null then
2223 new_child.parent = self
2224 assert new_child isa AVisibility
2225 _n_visibility = new_child
2226 else
2227 abort
2228 end
2229 return
2230 end
2231 if _n_kwmeth == old_child then
2232 if new_child != null then
2233 new_child.parent = self
2234 assert new_child isa TKwmeth
2235 _n_kwmeth = new_child
2236 else
2237 abort
2238 end
2239 return
2240 end
2241 if _n_methid == old_child then
2242 if new_child != null then
2243 new_child.parent = self
2244 assert new_child isa AMethid
2245 _n_methid = new_child
2246 else
2247 abort
2248 end
2249 return
2250 end
2251 if _n_signature == old_child then
2252 if new_child != null then
2253 new_child.parent = self
2254 assert new_child isa ASignature
2255 _n_signature = new_child
2256 else
2257 abort
2258 end
2259 return
2260 end
2261 if _n_block == old_child then
2262 if new_child != null then
2263 new_child.parent = self
2264 assert new_child isa AExpr
2265 _n_block = new_child
2266 else
2267 _n_block = null
2268 end
2269 return
2270 end
2271 end
2272
2273 redef fun visit_all(v: Visitor)
2274 do
2275 if _n_doc != null then
2276 v.enter_visit(_n_doc.as(not null))
2277 end
2278 if _n_kwredef != null then
2279 v.enter_visit(_n_kwredef.as(not null))
2280 end
2281 v.enter_visit(_n_visibility)
2282 v.enter_visit(_n_kwmeth)
2283 v.enter_visit(_n_methid)
2284 v.enter_visit(_n_signature)
2285 if _n_block != null then
2286 v.enter_visit(_n_block.as(not null))
2287 end
2288 end
2289
2290 redef fun visit_all_reverse(v: Visitor)
2291 do
2292 if _n_doc != null then
2293 v.enter_visit(_n_doc.as(not null))
2294 end
2295 if _n_kwredef != null then
2296 v.enter_visit(_n_kwredef.as(not null))
2297 end
2298 v.enter_visit(_n_visibility)
2299 v.enter_visit(_n_kwmeth)
2300 v.enter_visit(_n_methid)
2301 v.enter_visit(_n_signature)
2302 if _n_block != null then
2303 v.enter_visit(_n_block.as(not null))
2304 end
2305 end
2306 end
2307 redef class AConcreteInitPropdef
2308 redef fun n_doc=(n)
2309 do
2310 _n_doc = n
2311 if n != null then
2312 n.parent = self
2313 end
2314 end
2315 redef fun n_kwredef=(n)
2316 do
2317 _n_kwredef = n
2318 if n != null then
2319 n.parent = self
2320 end
2321 end
2322 redef fun n_visibility=(n)
2323 do
2324 _n_visibility = n
2325 n.parent = self
2326 end
2327 redef fun n_kwinit=(n)
2328 do
2329 _n_kwinit = n
2330 n.parent = self
2331 end
2332 redef fun n_methid=(n)
2333 do
2334 _n_methid = n
2335 if n != null then
2336 n.parent = self
2337 end
2338 end
2339 redef fun n_signature=(n)
2340 do
2341 _n_signature = n
2342 n.parent = self
2343 end
2344 redef fun n_block=(n)
2345 do
2346 _n_block = n
2347 if n != null then
2348 n.parent = self
2349 end
2350 end
2351
2352 private init empty_init do end
2353
2354 init init_aconcreteinitpropdef (
2355 n_doc: nullable ADoc,
2356 n_kwredef: nullable TKwredef,
2357 n_visibility: nullable AVisibility,
2358 n_kwinit: nullable TKwinit,
2359 n_methid: nullable AMethid,
2360 n_signature: nullable ASignature,
2361 n_block: nullable AExpr
2362 )
2363 do
2364 empty_init
2365 _n_doc = n_doc
2366 if n_doc != null then
2367 n_doc.parent = self
2368 end
2369 _n_kwredef = n_kwredef
2370 if n_kwredef != null then
2371 n_kwredef.parent = self
2372 end
2373 _n_visibility = n_visibility.as(not null)
2374 n_visibility.parent = self
2375 _n_kwinit = n_kwinit.as(not null)
2376 n_kwinit.parent = self
2377 _n_methid = n_methid
2378 if n_methid != null then
2379 n_methid.parent = self
2380 end
2381 _n_signature = n_signature.as(not null)
2382 n_signature.parent = self
2383 _n_block = n_block
2384 if n_block != null then
2385 n_block.parent = self
2386 end
2387 end
2388
2389 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2390 do
2391 if _n_doc == old_child then
2392 if new_child != null then
2393 new_child.parent = self
2394 assert new_child isa ADoc
2395 _n_doc = new_child
2396 else
2397 _n_doc = null
2398 end
2399 return
2400 end
2401 if _n_kwredef == old_child then
2402 if new_child != null then
2403 new_child.parent = self
2404 assert new_child isa TKwredef
2405 _n_kwredef = new_child
2406 else
2407 _n_kwredef = null
2408 end
2409 return
2410 end
2411 if _n_visibility == old_child then
2412 if new_child != null then
2413 new_child.parent = self
2414 assert new_child isa AVisibility
2415 _n_visibility = new_child
2416 else
2417 abort
2418 end
2419 return
2420 end
2421 if _n_kwinit == old_child then
2422 if new_child != null then
2423 new_child.parent = self
2424 assert new_child isa TKwinit
2425 _n_kwinit = new_child
2426 else
2427 abort
2428 end
2429 return
2430 end
2431 if _n_methid == old_child then
2432 if new_child != null then
2433 new_child.parent = self
2434 assert new_child isa AMethid
2435 _n_methid = new_child
2436 else
2437 _n_methid = null
2438 end
2439 return
2440 end
2441 if _n_signature == old_child then
2442 if new_child != null then
2443 new_child.parent = self
2444 assert new_child isa ASignature
2445 _n_signature = new_child
2446 else
2447 abort
2448 end
2449 return
2450 end
2451 if _n_block == old_child then
2452 if new_child != null then
2453 new_child.parent = self
2454 assert new_child isa AExpr
2455 _n_block = new_child
2456 else
2457 _n_block = null
2458 end
2459 return
2460 end
2461 end
2462
2463 redef fun visit_all(v: Visitor)
2464 do
2465 if _n_doc != null then
2466 v.enter_visit(_n_doc.as(not null))
2467 end
2468 if _n_kwredef != null then
2469 v.enter_visit(_n_kwredef.as(not null))
2470 end
2471 v.enter_visit(_n_visibility)
2472 v.enter_visit(_n_kwinit)
2473 if _n_methid != null then
2474 v.enter_visit(_n_methid.as(not null))
2475 end
2476 v.enter_visit(_n_signature)
2477 if _n_block != null then
2478 v.enter_visit(_n_block.as(not null))
2479 end
2480 end
2481
2482 redef fun visit_all_reverse(v: Visitor)
2483 do
2484 if _n_doc != null then
2485 v.enter_visit(_n_doc.as(not null))
2486 end
2487 if _n_kwredef != null then
2488 v.enter_visit(_n_kwredef.as(not null))
2489 end
2490 v.enter_visit(_n_visibility)
2491 v.enter_visit(_n_kwinit)
2492 if _n_methid != null then
2493 v.enter_visit(_n_methid.as(not null))
2494 end
2495 v.enter_visit(_n_signature)
2496 if _n_block != null then
2497 v.enter_visit(_n_block.as(not null))
2498 end
2499 end
2500 end
2501 redef class AMainMethPropdef
2502 redef fun n_kwredef=(n)
2503 do
2504 _n_kwredef = n
2505 if n != null then
2506 n.parent = self
2507 end
2508 end
2509 redef fun n_block=(n)
2510 do
2511 _n_block = n
2512 if n != null then
2513 n.parent = self
2514 end
2515 end
2516
2517 private init empty_init do end
2518
2519 init init_amainmethpropdef (
2520 n_kwredef: nullable TKwredef,
2521 n_block: nullable AExpr
2522 )
2523 do
2524 empty_init
2525 _n_kwredef = n_kwredef
2526 if n_kwredef != null then
2527 n_kwredef.parent = self
2528 end
2529 _n_block = n_block
2530 if n_block != null then
2531 n_block.parent = self
2532 end
2533 end
2534
2535 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2536 do
2537 if _n_kwredef == old_child then
2538 if new_child != null then
2539 new_child.parent = self
2540 assert new_child isa TKwredef
2541 _n_kwredef = new_child
2542 else
2543 _n_kwredef = null
2544 end
2545 return
2546 end
2547 if _n_block == old_child then
2548 if new_child != null then
2549 new_child.parent = self
2550 assert new_child isa AExpr
2551 _n_block = new_child
2552 else
2553 _n_block = null
2554 end
2555 return
2556 end
2557 end
2558
2559 redef fun visit_all(v: Visitor)
2560 do
2561 if _n_kwredef != null then
2562 v.enter_visit(_n_kwredef.as(not null))
2563 end
2564 if _n_block != null then
2565 v.enter_visit(_n_block.as(not null))
2566 end
2567 end
2568
2569 redef fun visit_all_reverse(v: Visitor)
2570 do
2571 if _n_kwredef != null then
2572 v.enter_visit(_n_kwredef.as(not null))
2573 end
2574 if _n_block != null then
2575 v.enter_visit(_n_block.as(not null))
2576 end
2577 end
2578 end
2579 redef class ATypePropdef
2580 redef fun n_doc=(n)
2581 do
2582 _n_doc = n
2583 if n != null then
2584 n.parent = self
2585 end
2586 end
2587 redef fun n_kwredef=(n)
2588 do
2589 _n_kwredef = n
2590 if n != null then
2591 n.parent = self
2592 end
2593 end
2594 redef fun n_visibility=(n)
2595 do
2596 _n_visibility = n
2597 n.parent = self
2598 end
2599 redef fun n_kwtype=(n)
2600 do
2601 _n_kwtype = n
2602 n.parent = self
2603 end
2604 redef fun n_id=(n)
2605 do
2606 _n_id = n
2607 n.parent = self
2608 end
2609 redef fun n_type=(n)
2610 do
2611 _n_type = n
2612 n.parent = self
2613 end
2614
2615 private init empty_init do end
2616
2617 init init_atypepropdef (
2618 n_doc: nullable ADoc,
2619 n_kwredef: nullable TKwredef,
2620 n_visibility: nullable AVisibility,
2621 n_kwtype: nullable TKwtype,
2622 n_id: nullable TClassid,
2623 n_type: nullable AType
2624 )
2625 do
2626 empty_init
2627 _n_doc = n_doc
2628 if n_doc != null then
2629 n_doc.parent = self
2630 end
2631 _n_kwredef = n_kwredef
2632 if n_kwredef != null then
2633 n_kwredef.parent = self
2634 end
2635 _n_visibility = n_visibility.as(not null)
2636 n_visibility.parent = self
2637 _n_kwtype = n_kwtype.as(not null)
2638 n_kwtype.parent = self
2639 _n_id = n_id.as(not null)
2640 n_id.parent = self
2641 _n_type = n_type.as(not null)
2642 n_type.parent = self
2643 end
2644
2645 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2646 do
2647 if _n_doc == old_child then
2648 if new_child != null then
2649 new_child.parent = self
2650 assert new_child isa ADoc
2651 _n_doc = new_child
2652 else
2653 _n_doc = null
2654 end
2655 return
2656 end
2657 if _n_kwredef == old_child then
2658 if new_child != null then
2659 new_child.parent = self
2660 assert new_child isa TKwredef
2661 _n_kwredef = new_child
2662 else
2663 _n_kwredef = null
2664 end
2665 return
2666 end
2667 if _n_visibility == old_child then
2668 if new_child != null then
2669 new_child.parent = self
2670 assert new_child isa AVisibility
2671 _n_visibility = new_child
2672 else
2673 abort
2674 end
2675 return
2676 end
2677 if _n_kwtype == old_child then
2678 if new_child != null then
2679 new_child.parent = self
2680 assert new_child isa TKwtype
2681 _n_kwtype = new_child
2682 else
2683 abort
2684 end
2685 return
2686 end
2687 if _n_id == old_child then
2688 if new_child != null then
2689 new_child.parent = self
2690 assert new_child isa TClassid
2691 _n_id = new_child
2692 else
2693 abort
2694 end
2695 return
2696 end
2697 if _n_type == old_child then
2698 if new_child != null then
2699 new_child.parent = self
2700 assert new_child isa AType
2701 _n_type = new_child
2702 else
2703 abort
2704 end
2705 return
2706 end
2707 end
2708
2709 redef fun visit_all(v: Visitor)
2710 do
2711 if _n_doc != null then
2712 v.enter_visit(_n_doc.as(not null))
2713 end
2714 if _n_kwredef != null then
2715 v.enter_visit(_n_kwredef.as(not null))
2716 end
2717 v.enter_visit(_n_visibility)
2718 v.enter_visit(_n_kwtype)
2719 v.enter_visit(_n_id)
2720 v.enter_visit(_n_type)
2721 end
2722
2723 redef fun visit_all_reverse(v: Visitor)
2724 do
2725 if _n_doc != null then
2726 v.enter_visit(_n_doc.as(not null))
2727 end
2728 if _n_kwredef != null then
2729 v.enter_visit(_n_kwredef.as(not null))
2730 end
2731 v.enter_visit(_n_visibility)
2732 v.enter_visit(_n_kwtype)
2733 v.enter_visit(_n_id)
2734 v.enter_visit(_n_type)
2735 end
2736 end
2737 redef class AReadAble
2738 redef fun n_kwredef=(n)
2739 do
2740 _n_kwredef = n
2741 if n != null then
2742 n.parent = self
2743 end
2744 end
2745 redef fun n_kwreadable=(n)
2746 do
2747 _n_kwreadable = n
2748 n.parent = self
2749 end
2750
2751 private init empty_init do end
2752
2753 init init_areadable (
2754 n_kwredef: nullable TKwredef,
2755 n_kwreadable: nullable TKwreadable
2756 )
2757 do
2758 empty_init
2759 _n_kwredef = n_kwredef
2760 if n_kwredef != null then
2761 n_kwredef.parent = self
2762 end
2763 _n_kwreadable = n_kwreadable.as(not null)
2764 n_kwreadable.parent = self
2765 end
2766
2767 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2768 do
2769 if _n_kwredef == old_child then
2770 if new_child != null then
2771 new_child.parent = self
2772 assert new_child isa TKwredef
2773 _n_kwredef = new_child
2774 else
2775 _n_kwredef = null
2776 end
2777 return
2778 end
2779 if _n_kwreadable == old_child then
2780 if new_child != null then
2781 new_child.parent = self
2782 assert new_child isa TKwreadable
2783 _n_kwreadable = new_child
2784 else
2785 abort
2786 end
2787 return
2788 end
2789 end
2790
2791 redef fun visit_all(v: Visitor)
2792 do
2793 if _n_kwredef != null then
2794 v.enter_visit(_n_kwredef.as(not null))
2795 end
2796 v.enter_visit(_n_kwreadable)
2797 end
2798
2799 redef fun visit_all_reverse(v: Visitor)
2800 do
2801 if _n_kwredef != null then
2802 v.enter_visit(_n_kwredef.as(not null))
2803 end
2804 v.enter_visit(_n_kwreadable)
2805 end
2806 end
2807 redef class AWriteAble
2808 redef fun n_kwredef=(n)
2809 do
2810 _n_kwredef = n
2811 if n != null then
2812 n.parent = self
2813 end
2814 end
2815 redef fun n_kwwritable=(n)
2816 do
2817 _n_kwwritable = n
2818 n.parent = self
2819 end
2820
2821 private init empty_init do end
2822
2823 init init_awriteable (
2824 n_kwredef: nullable TKwredef,
2825 n_kwwritable: nullable TKwwritable
2826 )
2827 do
2828 empty_init
2829 _n_kwredef = n_kwredef
2830 if n_kwredef != null then
2831 n_kwredef.parent = self
2832 end
2833 _n_kwwritable = n_kwwritable.as(not null)
2834 n_kwwritable.parent = self
2835 end
2836
2837 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2838 do
2839 if _n_kwredef == old_child then
2840 if new_child != null then
2841 new_child.parent = self
2842 assert new_child isa TKwredef
2843 _n_kwredef = new_child
2844 else
2845 _n_kwredef = null
2846 end
2847 return
2848 end
2849 if _n_kwwritable == old_child then
2850 if new_child != null then
2851 new_child.parent = self
2852 assert new_child isa TKwwritable
2853 _n_kwwritable = new_child
2854 else
2855 abort
2856 end
2857 return
2858 end
2859 end
2860
2861 redef fun visit_all(v: Visitor)
2862 do
2863 if _n_kwredef != null then
2864 v.enter_visit(_n_kwredef.as(not null))
2865 end
2866 v.enter_visit(_n_kwwritable)
2867 end
2868
2869 redef fun visit_all_reverse(v: Visitor)
2870 do
2871 if _n_kwredef != null then
2872 v.enter_visit(_n_kwredef.as(not null))
2873 end
2874 v.enter_visit(_n_kwwritable)
2875 end
2876 end
2877 redef class AIdMethid
2878 redef fun n_id=(n)
2879 do
2880 _n_id = n
2881 n.parent = self
2882 end
2883
2884 private init empty_init do end
2885
2886 init init_aidmethid (
2887 n_id: nullable TId
2888 )
2889 do
2890 empty_init
2891 _n_id = n_id.as(not null)
2892 n_id.parent = self
2893 end
2894
2895 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2896 do
2897 if _n_id == old_child then
2898 if new_child != null then
2899 new_child.parent = self
2900 assert new_child isa TId
2901 _n_id = new_child
2902 else
2903 abort
2904 end
2905 return
2906 end
2907 end
2908
2909 redef fun visit_all(v: Visitor)
2910 do
2911 v.enter_visit(_n_id)
2912 end
2913
2914 redef fun visit_all_reverse(v: Visitor)
2915 do
2916 v.enter_visit(_n_id)
2917 end
2918 end
2919 redef class APlusMethid
2920 redef fun n_plus=(n)
2921 do
2922 _n_plus = n
2923 n.parent = self
2924 end
2925
2926 private init empty_init do end
2927
2928 init init_aplusmethid (
2929 n_plus: nullable TPlus
2930 )
2931 do
2932 empty_init
2933 _n_plus = n_plus.as(not null)
2934 n_plus.parent = self
2935 end
2936
2937 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2938 do
2939 if _n_plus == old_child then
2940 if new_child != null then
2941 new_child.parent = self
2942 assert new_child isa TPlus
2943 _n_plus = new_child
2944 else
2945 abort
2946 end
2947 return
2948 end
2949 end
2950
2951 redef fun visit_all(v: Visitor)
2952 do
2953 v.enter_visit(_n_plus)
2954 end
2955
2956 redef fun visit_all_reverse(v: Visitor)
2957 do
2958 v.enter_visit(_n_plus)
2959 end
2960 end
2961 redef class AMinusMethid
2962 redef fun n_minus=(n)
2963 do
2964 _n_minus = n
2965 n.parent = self
2966 end
2967
2968 private init empty_init do end
2969
2970 init init_aminusmethid (
2971 n_minus: nullable TMinus
2972 )
2973 do
2974 empty_init
2975 _n_minus = n_minus.as(not null)
2976 n_minus.parent = self
2977 end
2978
2979 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2980 do
2981 if _n_minus == old_child then
2982 if new_child != null then
2983 new_child.parent = self
2984 assert new_child isa TMinus
2985 _n_minus = new_child
2986 else
2987 abort
2988 end
2989 return
2990 end
2991 end
2992
2993 redef fun visit_all(v: Visitor)
2994 do
2995 v.enter_visit(_n_minus)
2996 end
2997
2998 redef fun visit_all_reverse(v: Visitor)
2999 do
3000 v.enter_visit(_n_minus)
3001 end
3002 end
3003 redef class AStarMethid
3004 redef fun n_star=(n)
3005 do
3006 _n_star = n
3007 n.parent = self
3008 end
3009
3010 private init empty_init do end
3011
3012 init init_astarmethid (
3013 n_star: nullable TStar
3014 )
3015 do
3016 empty_init
3017 _n_star = n_star.as(not null)
3018 n_star.parent = self
3019 end
3020
3021 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3022 do
3023 if _n_star == old_child then
3024 if new_child != null then
3025 new_child.parent = self
3026 assert new_child isa TStar
3027 _n_star = new_child
3028 else
3029 abort
3030 end
3031 return
3032 end
3033 end
3034
3035 redef fun visit_all(v: Visitor)
3036 do
3037 v.enter_visit(_n_star)
3038 end
3039
3040 redef fun visit_all_reverse(v: Visitor)
3041 do
3042 v.enter_visit(_n_star)
3043 end
3044 end
3045 redef class ASlashMethid
3046 redef fun n_slash=(n)
3047 do
3048 _n_slash = n
3049 n.parent = self
3050 end
3051
3052 private init empty_init do end
3053
3054 init init_aslashmethid (
3055 n_slash: nullable TSlash
3056 )
3057 do
3058 empty_init
3059 _n_slash = n_slash.as(not null)
3060 n_slash.parent = self
3061 end
3062
3063 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3064 do
3065 if _n_slash == old_child then
3066 if new_child != null then
3067 new_child.parent = self
3068 assert new_child isa TSlash
3069 _n_slash = new_child
3070 else
3071 abort
3072 end
3073 return
3074 end
3075 end
3076
3077 redef fun visit_all(v: Visitor)
3078 do
3079 v.enter_visit(_n_slash)
3080 end
3081
3082 redef fun visit_all_reverse(v: Visitor)
3083 do
3084 v.enter_visit(_n_slash)
3085 end
3086 end
3087 redef class APercentMethid
3088 redef fun n_percent=(n)
3089 do
3090 _n_percent = n
3091 n.parent = self
3092 end
3093
3094 private init empty_init do end
3095
3096 init init_apercentmethid (
3097 n_percent: nullable TPercent
3098 )
3099 do
3100 empty_init
3101 _n_percent = n_percent.as(not null)
3102 n_percent.parent = self
3103 end
3104
3105 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3106 do
3107 if _n_percent == old_child then
3108 if new_child != null then
3109 new_child.parent = self
3110 assert new_child isa TPercent
3111 _n_percent = new_child
3112 else
3113 abort
3114 end
3115 return
3116 end
3117 end
3118
3119 redef fun visit_all(v: Visitor)
3120 do
3121 v.enter_visit(_n_percent)
3122 end
3123
3124 redef fun visit_all_reverse(v: Visitor)
3125 do
3126 v.enter_visit(_n_percent)
3127 end
3128 end
3129 redef class AEqMethid
3130 redef fun n_eq=(n)
3131 do
3132 _n_eq = n
3133 n.parent = self
3134 end
3135
3136 private init empty_init do end
3137
3138 init init_aeqmethid (
3139 n_eq: nullable TEq
3140 )
3141 do
3142 empty_init
3143 _n_eq = n_eq.as(not null)
3144 n_eq.parent = self
3145 end
3146
3147 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3148 do
3149 if _n_eq == old_child then
3150 if new_child != null then
3151 new_child.parent = self
3152 assert new_child isa TEq
3153 _n_eq = new_child
3154 else
3155 abort
3156 end
3157 return
3158 end
3159 end
3160
3161 redef fun visit_all(v: Visitor)
3162 do
3163 v.enter_visit(_n_eq)
3164 end
3165
3166 redef fun visit_all_reverse(v: Visitor)
3167 do
3168 v.enter_visit(_n_eq)
3169 end
3170 end
3171 redef class ANeMethid
3172 redef fun n_ne=(n)
3173 do
3174 _n_ne = n
3175 n.parent = self
3176 end
3177
3178 private init empty_init do end
3179
3180 init init_anemethid (
3181 n_ne: nullable TNe
3182 )
3183 do
3184 empty_init
3185 _n_ne = n_ne.as(not null)
3186 n_ne.parent = self
3187 end
3188
3189 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3190 do
3191 if _n_ne == old_child then
3192 if new_child != null then
3193 new_child.parent = self
3194 assert new_child isa TNe
3195 _n_ne = new_child
3196 else
3197 abort
3198 end
3199 return
3200 end
3201 end
3202
3203 redef fun visit_all(v: Visitor)
3204 do
3205 v.enter_visit(_n_ne)
3206 end
3207
3208 redef fun visit_all_reverse(v: Visitor)
3209 do
3210 v.enter_visit(_n_ne)
3211 end
3212 end
3213 redef class ALeMethid
3214 redef fun n_le=(n)
3215 do
3216 _n_le = n
3217 n.parent = self
3218 end
3219
3220 private init empty_init do end
3221
3222 init init_alemethid (
3223 n_le: nullable TLe
3224 )
3225 do
3226 empty_init
3227 _n_le = n_le.as(not null)
3228 n_le.parent = self
3229 end
3230
3231 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3232 do
3233 if _n_le == old_child then
3234 if new_child != null then
3235 new_child.parent = self
3236 assert new_child isa TLe
3237 _n_le = new_child
3238 else
3239 abort
3240 end
3241 return
3242 end
3243 end
3244
3245 redef fun visit_all(v: Visitor)
3246 do
3247 v.enter_visit(_n_le)
3248 end
3249
3250 redef fun visit_all_reverse(v: Visitor)
3251 do
3252 v.enter_visit(_n_le)
3253 end
3254 end
3255 redef class AGeMethid
3256 redef fun n_ge=(n)
3257 do
3258 _n_ge = n
3259 n.parent = self
3260 end
3261
3262 private init empty_init do end
3263
3264 init init_agemethid (
3265 n_ge: nullable TGe
3266 )
3267 do
3268 empty_init
3269 _n_ge = n_ge.as(not null)
3270 n_ge.parent = self
3271 end
3272
3273 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3274 do
3275 if _n_ge == old_child then
3276 if new_child != null then
3277 new_child.parent = self
3278 assert new_child isa TGe
3279 _n_ge = new_child
3280 else
3281 abort
3282 end
3283 return
3284 end
3285 end
3286
3287 redef fun visit_all(v: Visitor)
3288 do
3289 v.enter_visit(_n_ge)
3290 end
3291
3292 redef fun visit_all_reverse(v: Visitor)
3293 do
3294 v.enter_visit(_n_ge)
3295 end
3296 end
3297 redef class ALtMethid
3298 redef fun n_lt=(n)
3299 do
3300 _n_lt = n
3301 n.parent = self
3302 end
3303
3304 private init empty_init do end
3305
3306 init init_altmethid (
3307 n_lt: nullable TLt
3308 )
3309 do
3310 empty_init
3311 _n_lt = n_lt.as(not null)
3312 n_lt.parent = self
3313 end
3314
3315 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3316 do
3317 if _n_lt == old_child then
3318 if new_child != null then
3319 new_child.parent = self
3320 assert new_child isa TLt
3321 _n_lt = new_child
3322 else
3323 abort
3324 end
3325 return
3326 end
3327 end
3328
3329 redef fun visit_all(v: Visitor)
3330 do
3331 v.enter_visit(_n_lt)
3332 end
3333
3334 redef fun visit_all_reverse(v: Visitor)
3335 do
3336 v.enter_visit(_n_lt)
3337 end
3338 end
3339 redef class AGtMethid
3340 redef fun n_gt=(n)
3341 do
3342 _n_gt = n
3343 n.parent = self
3344 end
3345
3346 private init empty_init do end
3347
3348 init init_agtmethid (
3349 n_gt: nullable TGt
3350 )
3351 do
3352 empty_init
3353 _n_gt = n_gt.as(not null)
3354 n_gt.parent = self
3355 end
3356
3357 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3358 do
3359 if _n_gt == old_child then
3360 if new_child != null then
3361 new_child.parent = self
3362 assert new_child isa TGt
3363 _n_gt = new_child
3364 else
3365 abort
3366 end
3367 return
3368 end
3369 end
3370
3371 redef fun visit_all(v: Visitor)
3372 do
3373 v.enter_visit(_n_gt)
3374 end
3375
3376 redef fun visit_all_reverse(v: Visitor)
3377 do
3378 v.enter_visit(_n_gt)
3379 end
3380 end
3381 redef class ABraMethid
3382 redef fun n_obra=(n)
3383 do
3384 _n_obra = n
3385 n.parent = self
3386 end
3387 redef fun n_cbra=(n)
3388 do
3389 _n_cbra = n
3390 n.parent = self
3391 end
3392
3393 private init empty_init do end
3394
3395 init init_abramethid (
3396 n_obra: nullable TObra,
3397 n_cbra: nullable TCbra
3398 )
3399 do
3400 empty_init
3401 _n_obra = n_obra.as(not null)
3402 n_obra.parent = self
3403 _n_cbra = n_cbra.as(not null)
3404 n_cbra.parent = self
3405 end
3406
3407 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3408 do
3409 if _n_obra == old_child then
3410 if new_child != null then
3411 new_child.parent = self
3412 assert new_child isa TObra
3413 _n_obra = new_child
3414 else
3415 abort
3416 end
3417 return
3418 end
3419 if _n_cbra == old_child then
3420 if new_child != null then
3421 new_child.parent = self
3422 assert new_child isa TCbra
3423 _n_cbra = new_child
3424 else
3425 abort
3426 end
3427 return
3428 end
3429 end
3430
3431 redef fun visit_all(v: Visitor)
3432 do
3433 v.enter_visit(_n_obra)
3434 v.enter_visit(_n_cbra)
3435 end
3436
3437 redef fun visit_all_reverse(v: Visitor)
3438 do
3439 v.enter_visit(_n_obra)
3440 v.enter_visit(_n_cbra)
3441 end
3442 end
3443 redef class AStarshipMethid
3444 redef fun n_starship=(n)
3445 do
3446 _n_starship = n
3447 n.parent = self
3448 end
3449
3450 private init empty_init do end
3451
3452 init init_astarshipmethid (
3453 n_starship: nullable TStarship
3454 )
3455 do
3456 empty_init
3457 _n_starship = n_starship.as(not null)
3458 n_starship.parent = self
3459 end
3460
3461 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3462 do
3463 if _n_starship == old_child then
3464 if new_child != null then
3465 new_child.parent = self
3466 assert new_child isa TStarship
3467 _n_starship = new_child
3468 else
3469 abort
3470 end
3471 return
3472 end
3473 end
3474
3475 redef fun visit_all(v: Visitor)
3476 do
3477 v.enter_visit(_n_starship)
3478 end
3479
3480 redef fun visit_all_reverse(v: Visitor)
3481 do
3482 v.enter_visit(_n_starship)
3483 end
3484 end
3485 redef class AAssignMethid
3486 redef fun n_id=(n)
3487 do
3488 _n_id = n
3489 n.parent = self
3490 end
3491 redef fun n_assign=(n)
3492 do
3493 _n_assign = n
3494 n.parent = self
3495 end
3496
3497 private init empty_init do end
3498
3499 init init_aassignmethid (
3500 n_id: nullable TId,
3501 n_assign: nullable TAssign
3502 )
3503 do
3504 empty_init
3505 _n_id = n_id.as(not null)
3506 n_id.parent = self
3507 _n_assign = n_assign.as(not null)
3508 n_assign.parent = self
3509 end
3510
3511 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3512 do
3513 if _n_id == old_child then
3514 if new_child != null then
3515 new_child.parent = self
3516 assert new_child isa TId
3517 _n_id = new_child
3518 else
3519 abort
3520 end
3521 return
3522 end
3523 if _n_assign == old_child then
3524 if new_child != null then
3525 new_child.parent = self
3526 assert new_child isa TAssign
3527 _n_assign = new_child
3528 else
3529 abort
3530 end
3531 return
3532 end
3533 end
3534
3535 redef fun visit_all(v: Visitor)
3536 do
3537 v.enter_visit(_n_id)
3538 v.enter_visit(_n_assign)
3539 end
3540
3541 redef fun visit_all_reverse(v: Visitor)
3542 do
3543 v.enter_visit(_n_id)
3544 v.enter_visit(_n_assign)
3545 end
3546 end
3547 redef class ABraassignMethid
3548 redef fun n_obra=(n)
3549 do
3550 _n_obra = n
3551 n.parent = self
3552 end
3553 redef fun n_cbra=(n)
3554 do
3555 _n_cbra = n
3556 n.parent = self
3557 end
3558 redef fun n_assign=(n)
3559 do
3560 _n_assign = n
3561 n.parent = self
3562 end
3563
3564 private init empty_init do end
3565
3566 init init_abraassignmethid (
3567 n_obra: nullable TObra,
3568 n_cbra: nullable TCbra,
3569 n_assign: nullable TAssign
3570 )
3571 do
3572 empty_init
3573 _n_obra = n_obra.as(not null)
3574 n_obra.parent = self
3575 _n_cbra = n_cbra.as(not null)
3576 n_cbra.parent = self
3577 _n_assign = n_assign.as(not null)
3578 n_assign.parent = self
3579 end
3580
3581 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3582 do
3583 if _n_obra == old_child then
3584 if new_child != null then
3585 new_child.parent = self
3586 assert new_child isa TObra
3587 _n_obra = new_child
3588 else
3589 abort
3590 end
3591 return
3592 end
3593 if _n_cbra == old_child then
3594 if new_child != null then
3595 new_child.parent = self
3596 assert new_child isa TCbra
3597 _n_cbra = new_child
3598 else
3599 abort
3600 end
3601 return
3602 end
3603 if _n_assign == old_child then
3604 if new_child != null then
3605 new_child.parent = self
3606 assert new_child isa TAssign
3607 _n_assign = new_child
3608 else
3609 abort
3610 end
3611 return
3612 end
3613 end
3614
3615 redef fun visit_all(v: Visitor)
3616 do
3617 v.enter_visit(_n_obra)
3618 v.enter_visit(_n_cbra)
3619 v.enter_visit(_n_assign)
3620 end
3621
3622 redef fun visit_all_reverse(v: Visitor)
3623 do
3624 v.enter_visit(_n_obra)
3625 v.enter_visit(_n_cbra)
3626 v.enter_visit(_n_assign)
3627 end
3628 end
3629 redef class ASignature
3630 redef fun n_type=(n)
3631 do
3632 _n_type = n
3633 if n != null then
3634 n.parent = self
3635 end
3636 end
3637
3638 private init empty_init do end
3639
3640 init init_asignature (
3641 n_params: Collection[Object], # Should be Collection[AParam]
3642 n_type: nullable AType,
3643 n_closure_decls: Collection[Object] # Should be Collection[AClosureDecl]
3644 )
3645 do
3646 empty_init
3647 for n in n_params do
3648 assert n isa AParam
3649 _n_params.add(n)
3650 n.parent = self
3651 end
3652 _n_type = n_type
3653 if n_type != null then
3654 n_type.parent = self
3655 end
3656 for n in n_closure_decls do
3657 assert n isa AClosureDecl
3658 _n_closure_decls.add(n)
3659 n.parent = self
3660 end
3661 end
3662
3663 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3664 do
3665 for i in [0.._n_params.length[ do
3666 if _n_params[i] == old_child then
3667 if new_child != null then
3668 assert new_child isa AParam
3669 _n_params[i] = new_child
3670 new_child.parent = self
3671 else
3672 _n_params.remove_at(i)
3673 end
3674 return
3675 end
3676 end
3677 if _n_type == old_child then
3678 if new_child != null then
3679 new_child.parent = self
3680 assert new_child isa AType
3681 _n_type = new_child
3682 else
3683 _n_type = null
3684 end
3685 return
3686 end
3687 for i in [0.._n_closure_decls.length[ do
3688 if _n_closure_decls[i] == old_child then
3689 if new_child != null then
3690 assert new_child isa AClosureDecl
3691 _n_closure_decls[i] = new_child
3692 new_child.parent = self
3693 else
3694 _n_closure_decls.remove_at(i)
3695 end
3696 return
3697 end
3698 end
3699 end
3700
3701 redef fun visit_all(v: Visitor)
3702 do
3703 for n in _n_params do
3704 v.enter_visit(n)
3705 end
3706 if _n_type != null then
3707 v.enter_visit(_n_type.as(not null))
3708 end
3709 for n in _n_closure_decls do
3710 v.enter_visit(n)
3711 end
3712 end
3713
3714 redef fun visit_all_reverse(v: Visitor)
3715 do
3716 do
3717 var i = _n_params.length
3718 while i >= 0 do
3719 v.enter_visit(_n_params[i])
3720 i = i - 1
3721 end
3722 end
3723 if _n_type != null then
3724 v.enter_visit(_n_type.as(not null))
3725 end
3726 do
3727 var i = _n_closure_decls.length
3728 while i >= 0 do
3729 v.enter_visit(_n_closure_decls[i])
3730 i = i - 1
3731 end
3732 end
3733 end
3734 end
3735 redef class AParam
3736 redef fun n_id=(n)
3737 do
3738 _n_id = n
3739 n.parent = self
3740 end
3741 redef fun n_type=(n)
3742 do
3743 _n_type = n
3744 if n != null then
3745 n.parent = self
3746 end
3747 end
3748 redef fun n_dotdotdot=(n)
3749 do
3750 _n_dotdotdot = n
3751 if n != null then
3752 n.parent = self
3753 end
3754 end
3755
3756 private init empty_init do end
3757
3758 init init_aparam (
3759 n_id: nullable TId,
3760 n_type: nullable AType,
3761 n_dotdotdot: nullable TDotdotdot
3762 )
3763 do
3764 empty_init
3765 _n_id = n_id.as(not null)
3766 n_id.parent = self
3767 _n_type = n_type
3768 if n_type != null then
3769 n_type.parent = self
3770 end
3771 _n_dotdotdot = n_dotdotdot
3772 if n_dotdotdot != null then
3773 n_dotdotdot.parent = self
3774 end
3775 end
3776
3777 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3778 do
3779 if _n_id == old_child then
3780 if new_child != null then
3781 new_child.parent = self
3782 assert new_child isa TId
3783 _n_id = new_child
3784 else
3785 abort
3786 end
3787 return
3788 end
3789 if _n_type == old_child then
3790 if new_child != null then
3791 new_child.parent = self
3792 assert new_child isa AType
3793 _n_type = new_child
3794 else
3795 _n_type = null
3796 end
3797 return
3798 end
3799 if _n_dotdotdot == old_child then
3800 if new_child != null then
3801 new_child.parent = self
3802 assert new_child isa TDotdotdot
3803 _n_dotdotdot = new_child
3804 else
3805 _n_dotdotdot = null
3806 end
3807 return
3808 end
3809 end
3810
3811 redef fun visit_all(v: Visitor)
3812 do
3813 v.enter_visit(_n_id)
3814 if _n_type != null then
3815 v.enter_visit(_n_type.as(not null))
3816 end
3817 if _n_dotdotdot != null then
3818 v.enter_visit(_n_dotdotdot.as(not null))
3819 end
3820 end
3821
3822 redef fun visit_all_reverse(v: Visitor)
3823 do
3824 v.enter_visit(_n_id)
3825 if _n_type != null then
3826 v.enter_visit(_n_type.as(not null))
3827 end
3828 if _n_dotdotdot != null then
3829 v.enter_visit(_n_dotdotdot.as(not null))
3830 end
3831 end
3832 end
3833 redef class AClosureDecl
3834 redef fun n_kwbreak=(n)
3835 do
3836 _n_kwbreak = n
3837 if n != null then
3838 n.parent = self
3839 end
3840 end
3841 redef fun n_bang=(n)
3842 do
3843 _n_bang = n
3844 n.parent = self
3845 end
3846 redef fun n_id=(n)
3847 do
3848 _n_id = n
3849 n.parent = self
3850 end
3851 redef fun n_signature=(n)
3852 do
3853 _n_signature = n
3854 n.parent = self
3855 end
3856 redef fun n_expr=(n)
3857 do
3858 _n_expr = n
3859 if n != null then
3860 n.parent = self
3861 end
3862 end
3863
3864 private init empty_init do end
3865
3866 init init_aclosuredecl (
3867 n_kwbreak: nullable TKwbreak,
3868 n_bang: nullable TBang,
3869 n_id: nullable TId,
3870 n_signature: nullable ASignature,
3871 n_expr: nullable AExpr
3872 )
3873 do
3874 empty_init
3875 _n_kwbreak = n_kwbreak
3876 if n_kwbreak != null then
3877 n_kwbreak.parent = self
3878 end
3879 _n_bang = n_bang.as(not null)
3880 n_bang.parent = self
3881 _n_id = n_id.as(not null)
3882 n_id.parent = self
3883 _n_signature = n_signature.as(not null)
3884 n_signature.parent = self
3885 _n_expr = n_expr
3886 if n_expr != null then
3887 n_expr.parent = self
3888 end
3889 end
3890
3891 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3892 do
3893 if _n_kwbreak == old_child then
3894 if new_child != null then
3895 new_child.parent = self
3896 assert new_child isa TKwbreak
3897 _n_kwbreak = new_child
3898 else
3899 _n_kwbreak = null
3900 end
3901 return
3902 end
3903 if _n_bang == old_child then
3904 if new_child != null then
3905 new_child.parent = self
3906 assert new_child isa TBang
3907 _n_bang = new_child
3908 else
3909 abort
3910 end
3911 return
3912 end
3913 if _n_id == old_child then
3914 if new_child != null then
3915 new_child.parent = self
3916 assert new_child isa TId
3917 _n_id = new_child
3918 else
3919 abort
3920 end
3921 return
3922 end
3923 if _n_signature == old_child then
3924 if new_child != null then
3925 new_child.parent = self
3926 assert new_child isa ASignature
3927 _n_signature = new_child
3928 else
3929 abort
3930 end
3931 return
3932 end
3933 if _n_expr == old_child then
3934 if new_child != null then
3935 new_child.parent = self
3936 assert new_child isa AExpr
3937 _n_expr = new_child
3938 else
3939 _n_expr = null
3940 end
3941 return
3942 end
3943 end
3944
3945 redef fun visit_all(v: Visitor)
3946 do
3947 if _n_kwbreak != null then
3948 v.enter_visit(_n_kwbreak.as(not null))
3949 end
3950 v.enter_visit(_n_bang)
3951 v.enter_visit(_n_id)
3952 v.enter_visit(_n_signature)
3953 if _n_expr != null then
3954 v.enter_visit(_n_expr.as(not null))
3955 end
3956 end
3957
3958 redef fun visit_all_reverse(v: Visitor)
3959 do
3960 if _n_kwbreak != null then
3961 v.enter_visit(_n_kwbreak.as(not null))
3962 end
3963 v.enter_visit(_n_bang)
3964 v.enter_visit(_n_id)
3965 v.enter_visit(_n_signature)
3966 if _n_expr != null then
3967 v.enter_visit(_n_expr.as(not null))
3968 end
3969 end
3970 end
3971 redef class AType
3972 redef fun n_kwnullable=(n)
3973 do
3974 _n_kwnullable = n
3975 if n != null then
3976 n.parent = self
3977 end
3978 end
3979 redef fun n_id=(n)
3980 do
3981 _n_id = n
3982 n.parent = self
3983 end
3984
3985 private init empty_init do end
3986
3987 init init_atype (
3988 n_kwnullable: nullable TKwnullable,
3989 n_id: nullable TClassid,
3990 n_types: Collection[Object] # Should be Collection[AType]
3991 )
3992 do
3993 empty_init
3994 _n_kwnullable = n_kwnullable
3995 if n_kwnullable != null then
3996 n_kwnullable.parent = self
3997 end
3998 _n_id = n_id.as(not null)
3999 n_id.parent = self
4000 for n in n_types do
4001 assert n isa AType
4002 _n_types.add(n)
4003 n.parent = self
4004 end
4005 end
4006
4007 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4008 do
4009 if _n_kwnullable == old_child then
4010 if new_child != null then
4011 new_child.parent = self
4012 assert new_child isa TKwnullable
4013 _n_kwnullable = new_child
4014 else
4015 _n_kwnullable = null
4016 end
4017 return
4018 end
4019 if _n_id == old_child then
4020 if new_child != null then
4021 new_child.parent = self
4022 assert new_child isa TClassid
4023 _n_id = new_child
4024 else
4025 abort
4026 end
4027 return
4028 end
4029 for i in [0.._n_types.length[ do
4030 if _n_types[i] == old_child then
4031 if new_child != null then
4032 assert new_child isa AType
4033 _n_types[i] = new_child
4034 new_child.parent = self
4035 else
4036 _n_types.remove_at(i)
4037 end
4038 return
4039 end
4040 end
4041 end
4042
4043 redef fun visit_all(v: Visitor)
4044 do
4045 if _n_kwnullable != null then
4046 v.enter_visit(_n_kwnullable.as(not null))
4047 end
4048 v.enter_visit(_n_id)
4049 for n in _n_types do
4050 v.enter_visit(n)
4051 end
4052 end
4053
4054 redef fun visit_all_reverse(v: Visitor)
4055 do
4056 if _n_kwnullable != null then
4057 v.enter_visit(_n_kwnullable.as(not null))
4058 end
4059 v.enter_visit(_n_id)
4060 do
4061 var i = _n_types.length
4062 while i >= 0 do
4063 v.enter_visit(_n_types[i])
4064 i = i - 1
4065 end
4066 end
4067 end
4068 end
4069 redef class ALabel
4070 redef fun n_kwlabel=(n)
4071 do
4072 _n_kwlabel = n
4073 n.parent = self
4074 end
4075 redef fun n_id=(n)
4076 do
4077 _n_id = n
4078 n.parent = self
4079 end
4080
4081 private init empty_init do end
4082
4083 init init_alabel (
4084 n_kwlabel: nullable TKwlabel,
4085 n_id: nullable TId
4086 )
4087 do
4088 empty_init
4089 _n_kwlabel = n_kwlabel.as(not null)
4090 n_kwlabel.parent = self
4091 _n_id = n_id.as(not null)
4092 n_id.parent = self
4093 end
4094
4095 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4096 do
4097 if _n_kwlabel == old_child then
4098 if new_child != null then
4099 new_child.parent = self
4100 assert new_child isa TKwlabel
4101 _n_kwlabel = new_child
4102 else
4103 abort
4104 end
4105 return
4106 end
4107 if _n_id == old_child then
4108 if new_child != null then
4109 new_child.parent = self
4110 assert new_child isa TId
4111 _n_id = new_child
4112 else
4113 abort
4114 end
4115 return
4116 end
4117 end
4118
4119 redef fun visit_all(v: Visitor)
4120 do
4121 v.enter_visit(_n_kwlabel)
4122 v.enter_visit(_n_id)
4123 end
4124
4125 redef fun visit_all_reverse(v: Visitor)
4126 do
4127 v.enter_visit(_n_kwlabel)
4128 v.enter_visit(_n_id)
4129 end
4130 end
4131 redef class ABlockExpr
4132
4133 private init empty_init do end
4134
4135 init init_ablockexpr (
4136 n_expr: Collection[Object] # Should be Collection[AExpr]
4137 )
4138 do
4139 empty_init
4140 for n in n_expr do
4141 assert n isa AExpr
4142 _n_expr.add(n)
4143 n.parent = self
4144 end
4145 end
4146
4147 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4148 do
4149 for i in [0.._n_expr.length[ do
4150 if _n_expr[i] == old_child then
4151 if new_child != null then
4152 assert new_child isa AExpr
4153 _n_expr[i] = new_child
4154 new_child.parent = self
4155 else
4156 _n_expr.remove_at(i)
4157 end
4158 return
4159 end
4160 end
4161 end
4162
4163 redef fun visit_all(v: Visitor)
4164 do
4165 for n in _n_expr do
4166 v.enter_visit(n)
4167 end
4168 end
4169
4170 redef fun visit_all_reverse(v: Visitor)
4171 do
4172 do
4173 var i = _n_expr.length
4174 while i >= 0 do
4175 v.enter_visit(_n_expr[i])
4176 i = i - 1
4177 end
4178 end
4179 end
4180 end
4181 redef class AVardeclExpr
4182 redef fun n_kwvar=(n)
4183 do
4184 _n_kwvar = n
4185 n.parent = self
4186 end
4187 redef fun n_id=(n)
4188 do
4189 _n_id = n
4190 n.parent = self
4191 end
4192 redef fun n_type=(n)
4193 do
4194 _n_type = n
4195 if n != null then
4196 n.parent = self
4197 end
4198 end
4199 redef fun n_assign=(n)
4200 do
4201 _n_assign = n
4202 if n != null then
4203 n.parent = self
4204 end
4205 end
4206 redef fun n_expr=(n)
4207 do
4208 _n_expr = n
4209 if n != null then
4210 n.parent = self
4211 end
4212 end
4213
4214 private init empty_init do end
4215
4216 init init_avardeclexpr (
4217 n_kwvar: nullable TKwvar,
4218 n_id: nullable TId,
4219 n_type: nullable AType,
4220 n_assign: nullable TAssign,
4221 n_expr: nullable AExpr
4222 )
4223 do
4224 empty_init
4225 _n_kwvar = n_kwvar.as(not null)
4226 n_kwvar.parent = self
4227 _n_id = n_id.as(not null)
4228 n_id.parent = self
4229 _n_type = n_type
4230 if n_type != null then
4231 n_type.parent = self
4232 end
4233 _n_assign = n_assign
4234 if n_assign != null then
4235 n_assign.parent = self
4236 end
4237 _n_expr = n_expr
4238 if n_expr != null then
4239 n_expr.parent = self
4240 end
4241 end
4242
4243 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4244 do
4245 if _n_kwvar == old_child then
4246 if new_child != null then
4247 new_child.parent = self
4248 assert new_child isa TKwvar
4249 _n_kwvar = new_child
4250 else
4251 abort
4252 end
4253 return
4254 end
4255 if _n_id == old_child then
4256 if new_child != null then
4257 new_child.parent = self
4258 assert new_child isa TId
4259 _n_id = new_child
4260 else
4261 abort
4262 end
4263 return
4264 end
4265 if _n_type == old_child then
4266 if new_child != null then
4267 new_child.parent = self
4268 assert new_child isa AType
4269 _n_type = new_child
4270 else
4271 _n_type = null
4272 end
4273 return
4274 end
4275 if _n_assign == old_child then
4276 if new_child != null then
4277 new_child.parent = self
4278 assert new_child isa TAssign
4279 _n_assign = new_child
4280 else
4281 _n_assign = null
4282 end
4283 return
4284 end
4285 if _n_expr == old_child then
4286 if new_child != null then
4287 new_child.parent = self
4288 assert new_child isa AExpr
4289 _n_expr = new_child
4290 else
4291 _n_expr = null
4292 end
4293 return
4294 end
4295 end
4296
4297 redef fun visit_all(v: Visitor)
4298 do
4299 v.enter_visit(_n_kwvar)
4300 v.enter_visit(_n_id)
4301 if _n_type != null then
4302 v.enter_visit(_n_type.as(not null))
4303 end
4304 if _n_assign != null then
4305 v.enter_visit(_n_assign.as(not null))
4306 end
4307 if _n_expr != null then
4308 v.enter_visit(_n_expr.as(not null))
4309 end
4310 end
4311
4312 redef fun visit_all_reverse(v: Visitor)
4313 do
4314 v.enter_visit(_n_kwvar)
4315 v.enter_visit(_n_id)
4316 if _n_type != null then
4317 v.enter_visit(_n_type.as(not null))
4318 end
4319 if _n_assign != null then
4320 v.enter_visit(_n_assign.as(not null))
4321 end
4322 if _n_expr != null then
4323 v.enter_visit(_n_expr.as(not null))
4324 end
4325 end
4326 end
4327 redef class AReturnExpr
4328 redef fun n_kwreturn=(n)
4329 do
4330 _n_kwreturn = n
4331 n.parent = self
4332 end
4333 redef fun n_expr=(n)
4334 do
4335 _n_expr = n
4336 if n != null then
4337 n.parent = self
4338 end
4339 end
4340
4341 private init empty_init do end
4342
4343 init init_areturnexpr (
4344 n_kwreturn: nullable TKwreturn,
4345 n_expr: nullable AExpr
4346 )
4347 do
4348 empty_init
4349 _n_kwreturn = n_kwreturn.as(not null)
4350 n_kwreturn.parent = self
4351 _n_expr = n_expr
4352 if n_expr != null then
4353 n_expr.parent = self
4354 end
4355 end
4356
4357 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4358 do
4359 if _n_kwreturn == old_child then
4360 if new_child != null then
4361 new_child.parent = self
4362 assert new_child isa TKwreturn
4363 _n_kwreturn = new_child
4364 else
4365 abort
4366 end
4367 return
4368 end
4369 if _n_expr == old_child then
4370 if new_child != null then
4371 new_child.parent = self
4372 assert new_child isa AExpr
4373 _n_expr = new_child
4374 else
4375 _n_expr = null
4376 end
4377 return
4378 end
4379 end
4380
4381 redef fun visit_all(v: Visitor)
4382 do
4383 v.enter_visit(_n_kwreturn)
4384 if _n_expr != null then
4385 v.enter_visit(_n_expr.as(not null))
4386 end
4387 end
4388
4389 redef fun visit_all_reverse(v: Visitor)
4390 do
4391 v.enter_visit(_n_kwreturn)
4392 if _n_expr != null then
4393 v.enter_visit(_n_expr.as(not null))
4394 end
4395 end
4396 end
4397 redef class ABreakExpr
4398 redef fun n_kwbreak=(n)
4399 do
4400 _n_kwbreak = n
4401 n.parent = self
4402 end
4403 redef fun n_label=(n)
4404 do
4405 _n_label = n
4406 if n != null then
4407 n.parent = self
4408 end
4409 end
4410 redef fun n_expr=(n)
4411 do
4412 _n_expr = n
4413 if n != null then
4414 n.parent = self
4415 end
4416 end
4417
4418 private init empty_init do end
4419
4420 init init_abreakexpr (
4421 n_kwbreak: nullable TKwbreak,
4422 n_label: nullable ALabel,
4423 n_expr: nullable AExpr
4424 )
4425 do
4426 empty_init
4427 _n_kwbreak = n_kwbreak.as(not null)
4428 n_kwbreak.parent = self
4429 _n_label = n_label
4430 if n_label != null then
4431 n_label.parent = self
4432 end
4433 _n_expr = n_expr
4434 if n_expr != null then
4435 n_expr.parent = self
4436 end
4437 end
4438
4439 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4440 do
4441 if _n_kwbreak == old_child then
4442 if new_child != null then
4443 new_child.parent = self
4444 assert new_child isa TKwbreak
4445 _n_kwbreak = new_child
4446 else
4447 abort
4448 end
4449 return
4450 end
4451 if _n_label == old_child then
4452 if new_child != null then
4453 new_child.parent = self
4454 assert new_child isa ALabel
4455 _n_label = new_child
4456 else
4457 _n_label = null
4458 end
4459 return
4460 end
4461 if _n_expr == old_child then
4462 if new_child != null then
4463 new_child.parent = self
4464 assert new_child isa AExpr
4465 _n_expr = new_child
4466 else
4467 _n_expr = null
4468 end
4469 return
4470 end
4471 end
4472
4473 redef fun visit_all(v: Visitor)
4474 do
4475 v.enter_visit(_n_kwbreak)
4476 if _n_label != null then
4477 v.enter_visit(_n_label.as(not null))
4478 end
4479 if _n_expr != null then
4480 v.enter_visit(_n_expr.as(not null))
4481 end
4482 end
4483
4484 redef fun visit_all_reverse(v: Visitor)
4485 do
4486 v.enter_visit(_n_kwbreak)
4487 if _n_label != null then
4488 v.enter_visit(_n_label.as(not null))
4489 end
4490 if _n_expr != null then
4491 v.enter_visit(_n_expr.as(not null))
4492 end
4493 end
4494 end
4495 redef class AAbortExpr
4496 redef fun n_kwabort=(n)
4497 do
4498 _n_kwabort = n
4499 n.parent = self
4500 end
4501
4502 private init empty_init do end
4503
4504 init init_aabortexpr (
4505 n_kwabort: nullable TKwabort
4506 )
4507 do
4508 empty_init
4509 _n_kwabort = n_kwabort.as(not null)
4510 n_kwabort.parent = self
4511 end
4512
4513 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4514 do
4515 if _n_kwabort == old_child then
4516 if new_child != null then
4517 new_child.parent = self
4518 assert new_child isa TKwabort
4519 _n_kwabort = new_child
4520 else
4521 abort
4522 end
4523 return
4524 end
4525 end
4526
4527 redef fun visit_all(v: Visitor)
4528 do
4529 v.enter_visit(_n_kwabort)
4530 end
4531
4532 redef fun visit_all_reverse(v: Visitor)
4533 do
4534 v.enter_visit(_n_kwabort)
4535 end
4536 end
4537 redef class AContinueExpr
4538 redef fun n_kwcontinue=(n)
4539 do
4540 _n_kwcontinue = n
4541 n.parent = self
4542 end
4543 redef fun n_label=(n)
4544 do
4545 _n_label = n
4546 if n != null then
4547 n.parent = self
4548 end
4549 end
4550 redef fun n_expr=(n)
4551 do
4552 _n_expr = n
4553 if n != null then
4554 n.parent = self
4555 end
4556 end
4557
4558 private init empty_init do end
4559
4560 init init_acontinueexpr (
4561 n_kwcontinue: nullable TKwcontinue,
4562 n_label: nullable ALabel,
4563 n_expr: nullable AExpr
4564 )
4565 do
4566 empty_init
4567 _n_kwcontinue = n_kwcontinue.as(not null)
4568 n_kwcontinue.parent = self
4569 _n_label = n_label
4570 if n_label != null then
4571 n_label.parent = self
4572 end
4573 _n_expr = n_expr
4574 if n_expr != null then
4575 n_expr.parent = self
4576 end
4577 end
4578
4579 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4580 do
4581 if _n_kwcontinue == old_child then
4582 if new_child != null then
4583 new_child.parent = self
4584 assert new_child isa TKwcontinue
4585 _n_kwcontinue = new_child
4586 else
4587 abort
4588 end
4589 return
4590 end
4591 if _n_label == old_child then
4592 if new_child != null then
4593 new_child.parent = self
4594 assert new_child isa ALabel
4595 _n_label = new_child
4596 else
4597 _n_label = null
4598 end
4599 return
4600 end
4601 if _n_expr == old_child then
4602 if new_child != null then
4603 new_child.parent = self
4604 assert new_child isa AExpr
4605 _n_expr = new_child
4606 else
4607 _n_expr = null
4608 end
4609 return
4610 end
4611 end
4612
4613 redef fun visit_all(v: Visitor)
4614 do
4615 v.enter_visit(_n_kwcontinue)
4616 if _n_label != null then
4617 v.enter_visit(_n_label.as(not null))
4618 end
4619 if _n_expr != null then
4620 v.enter_visit(_n_expr.as(not null))
4621 end
4622 end
4623
4624 redef fun visit_all_reverse(v: Visitor)
4625 do
4626 v.enter_visit(_n_kwcontinue)
4627 if _n_label != null then
4628 v.enter_visit(_n_label.as(not null))
4629 end
4630 if _n_expr != null then
4631 v.enter_visit(_n_expr.as(not null))
4632 end
4633 end
4634 end
4635 redef class ADoExpr
4636 redef fun n_kwdo=(n)
4637 do
4638 _n_kwdo = n
4639 n.parent = self
4640 end
4641 redef fun n_block=(n)
4642 do
4643 _n_block = n
4644 if n != null then
4645 n.parent = self
4646 end
4647 end
4648 redef fun n_label=(n)
4649 do
4650 _n_label = n
4651 if n != null then
4652 n.parent = self
4653 end
4654 end
4655
4656 private init empty_init do end
4657
4658 init init_adoexpr (
4659 n_kwdo: nullable TKwdo,
4660 n_block: nullable AExpr,
4661 n_label: nullable ALabel
4662 )
4663 do
4664 empty_init
4665 _n_kwdo = n_kwdo.as(not null)
4666 n_kwdo.parent = self
4667 _n_block = n_block
4668 if n_block != null then
4669 n_block.parent = self
4670 end
4671 _n_label = n_label
4672 if n_label != null then
4673 n_label.parent = self
4674 end
4675 end
4676
4677 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4678 do
4679 if _n_kwdo == old_child then
4680 if new_child != null then
4681 new_child.parent = self
4682 assert new_child isa TKwdo
4683 _n_kwdo = new_child
4684 else
4685 abort
4686 end
4687 return
4688 end
4689 if _n_block == old_child then
4690 if new_child != null then
4691 new_child.parent = self
4692 assert new_child isa AExpr
4693 _n_block = new_child
4694 else
4695 _n_block = null
4696 end
4697 return
4698 end
4699 if _n_label == old_child then
4700 if new_child != null then
4701 new_child.parent = self
4702 assert new_child isa ALabel
4703 _n_label = new_child
4704 else
4705 _n_label = null
4706 end
4707 return
4708 end
4709 end
4710
4711 redef fun visit_all(v: Visitor)
4712 do
4713 v.enter_visit(_n_kwdo)
4714 if _n_block != null then
4715 v.enter_visit(_n_block.as(not null))
4716 end
4717 if _n_label != null then
4718 v.enter_visit(_n_label.as(not null))
4719 end
4720 end
4721
4722 redef fun visit_all_reverse(v: Visitor)
4723 do
4724 v.enter_visit(_n_kwdo)
4725 if _n_block != null then
4726 v.enter_visit(_n_block.as(not null))
4727 end
4728 if _n_label != null then
4729 v.enter_visit(_n_label.as(not null))
4730 end
4731 end
4732 end
4733 redef class AIfExpr
4734 redef fun n_kwif=(n)
4735 do
4736 _n_kwif = n
4737 n.parent = self
4738 end
4739 redef fun n_expr=(n)
4740 do
4741 _n_expr = n
4742 n.parent = self
4743 end
4744 redef fun n_then=(n)
4745 do
4746 _n_then = n
4747 if n != null then
4748 n.parent = self
4749 end
4750 end
4751 redef fun n_else=(n)
4752 do
4753 _n_else = n
4754 if n != null then
4755 n.parent = self
4756 end
4757 end
4758
4759 private init empty_init do end
4760
4761 init init_aifexpr (
4762 n_kwif: nullable TKwif,
4763 n_expr: nullable AExpr,
4764 n_then: nullable AExpr,
4765 n_else: nullable AExpr
4766 )
4767 do
4768 empty_init
4769 _n_kwif = n_kwif.as(not null)
4770 n_kwif.parent = self
4771 _n_expr = n_expr.as(not null)
4772 n_expr.parent = self
4773 _n_then = n_then
4774 if n_then != null then
4775 n_then.parent = self
4776 end
4777 _n_else = n_else
4778 if n_else != null then
4779 n_else.parent = self
4780 end
4781 end
4782
4783 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4784 do
4785 if _n_kwif == old_child then
4786 if new_child != null then
4787 new_child.parent = self
4788 assert new_child isa TKwif
4789 _n_kwif = new_child
4790 else
4791 abort
4792 end
4793 return
4794 end
4795 if _n_expr == old_child then
4796 if new_child != null then
4797 new_child.parent = self
4798 assert new_child isa AExpr
4799 _n_expr = new_child
4800 else
4801 abort
4802 end
4803 return
4804 end
4805 if _n_then == old_child then
4806 if new_child != null then
4807 new_child.parent = self
4808 assert new_child isa AExpr
4809 _n_then = new_child
4810 else
4811 _n_then = null
4812 end
4813 return
4814 end
4815 if _n_else == old_child then
4816 if new_child != null then
4817 new_child.parent = self
4818 assert new_child isa AExpr
4819 _n_else = new_child
4820 else
4821 _n_else = null
4822 end
4823 return
4824 end
4825 end
4826
4827 redef fun visit_all(v: Visitor)
4828 do
4829 v.enter_visit(_n_kwif)
4830 v.enter_visit(_n_expr)
4831 if _n_then != null then
4832 v.enter_visit(_n_then.as(not null))
4833 end
4834 if _n_else != null then
4835 v.enter_visit(_n_else.as(not null))
4836 end
4837 end
4838
4839 redef fun visit_all_reverse(v: Visitor)
4840 do
4841 v.enter_visit(_n_kwif)
4842 v.enter_visit(_n_expr)
4843 if _n_then != null then
4844 v.enter_visit(_n_then.as(not null))
4845 end
4846 if _n_else != null then
4847 v.enter_visit(_n_else.as(not null))
4848 end
4849 end
4850 end
4851 redef class AIfexprExpr
4852 redef fun n_kwif=(n)
4853 do
4854 _n_kwif = n
4855 n.parent = self
4856 end
4857 redef fun n_expr=(n)
4858 do
4859 _n_expr = n
4860 n.parent = self
4861 end
4862 redef fun n_kwthen=(n)
4863 do
4864 _n_kwthen = n
4865 n.parent = self
4866 end
4867 redef fun n_then=(n)
4868 do
4869 _n_then = n
4870 n.parent = self
4871 end
4872 redef fun n_kwelse=(n)
4873 do
4874 _n_kwelse = n
4875 n.parent = self
4876 end
4877 redef fun n_else=(n)
4878 do
4879 _n_else = n
4880 n.parent = self
4881 end
4882
4883 private init empty_init do end
4884
4885 init init_aifexprexpr (
4886 n_kwif: nullable TKwif,
4887 n_expr: nullable AExpr,
4888 n_kwthen: nullable TKwthen,
4889 n_then: nullable AExpr,
4890 n_kwelse: nullable TKwelse,
4891 n_else: nullable AExpr
4892 )
4893 do
4894 empty_init
4895 _n_kwif = n_kwif.as(not null)
4896 n_kwif.parent = self
4897 _n_expr = n_expr.as(not null)
4898 n_expr.parent = self
4899 _n_kwthen = n_kwthen.as(not null)
4900 n_kwthen.parent = self
4901 _n_then = n_then.as(not null)
4902 n_then.parent = self
4903 _n_kwelse = n_kwelse.as(not null)
4904 n_kwelse.parent = self
4905 _n_else = n_else.as(not null)
4906 n_else.parent = self
4907 end
4908
4909 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4910 do
4911 if _n_kwif == old_child then
4912 if new_child != null then
4913 new_child.parent = self
4914 assert new_child isa TKwif
4915 _n_kwif = new_child
4916 else
4917 abort
4918 end
4919 return
4920 end
4921 if _n_expr == old_child then
4922 if new_child != null then
4923 new_child.parent = self
4924 assert new_child isa AExpr
4925 _n_expr = new_child
4926 else
4927 abort
4928 end
4929 return
4930 end
4931 if _n_kwthen == old_child then
4932 if new_child != null then
4933 new_child.parent = self
4934 assert new_child isa TKwthen
4935 _n_kwthen = new_child
4936 else
4937 abort
4938 end
4939 return
4940 end
4941 if _n_then == old_child then
4942 if new_child != null then
4943 new_child.parent = self
4944 assert new_child isa AExpr
4945 _n_then = new_child
4946 else
4947 abort
4948 end
4949 return
4950 end
4951 if _n_kwelse == old_child then
4952 if new_child != null then
4953 new_child.parent = self
4954 assert new_child isa TKwelse
4955 _n_kwelse = new_child
4956 else
4957 abort
4958 end
4959 return
4960 end
4961 if _n_else == old_child then
4962 if new_child != null then
4963 new_child.parent = self
4964 assert new_child isa AExpr
4965 _n_else = new_child
4966 else
4967 abort
4968 end
4969 return
4970 end
4971 end
4972
4973 redef fun visit_all(v: Visitor)
4974 do
4975 v.enter_visit(_n_kwif)
4976 v.enter_visit(_n_expr)
4977 v.enter_visit(_n_kwthen)
4978 v.enter_visit(_n_then)
4979 v.enter_visit(_n_kwelse)
4980 v.enter_visit(_n_else)
4981 end
4982
4983 redef fun visit_all_reverse(v: Visitor)
4984 do
4985 v.enter_visit(_n_kwif)
4986 v.enter_visit(_n_expr)
4987 v.enter_visit(_n_kwthen)
4988 v.enter_visit(_n_then)
4989 v.enter_visit(_n_kwelse)
4990 v.enter_visit(_n_else)
4991 end
4992 end
4993 redef class AWhileExpr
4994 redef fun n_kwwhile=(n)
4995 do
4996 _n_kwwhile = n
4997 n.parent = self
4998 end
4999 redef fun n_expr=(n)
5000 do
5001 _n_expr = n
5002 n.parent = self
5003 end
5004 redef fun n_kwdo=(n)
5005 do
5006 _n_kwdo = n
5007 n.parent = self
5008 end
5009 redef fun n_block=(n)
5010 do
5011 _n_block = n
5012 if n != null then
5013 n.parent = self
5014 end
5015 end
5016 redef fun n_label=(n)
5017 do
5018 _n_label = n
5019 if n != null then
5020 n.parent = self
5021 end
5022 end
5023
5024 private init empty_init do end
5025
5026 init init_awhileexpr (
5027 n_kwwhile: nullable TKwwhile,
5028 n_expr: nullable AExpr,
5029 n_kwdo: nullable TKwdo,
5030 n_block: nullable AExpr,
5031 n_label: nullable ALabel
5032 )
5033 do
5034 empty_init
5035 _n_kwwhile = n_kwwhile.as(not null)
5036 n_kwwhile.parent = self
5037 _n_expr = n_expr.as(not null)
5038 n_expr.parent = self
5039 _n_kwdo = n_kwdo.as(not null)
5040 n_kwdo.parent = self
5041 _n_block = n_block
5042 if n_block != null then
5043 n_block.parent = self
5044 end
5045 _n_label = n_label
5046 if n_label != null then
5047 n_label.parent = self
5048 end
5049 end
5050
5051 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5052 do
5053 if _n_kwwhile == old_child then
5054 if new_child != null then
5055 new_child.parent = self
5056 assert new_child isa TKwwhile
5057 _n_kwwhile = new_child
5058 else
5059 abort
5060 end
5061 return
5062 end
5063 if _n_expr == old_child then
5064 if new_child != null then
5065 new_child.parent = self
5066 assert new_child isa AExpr
5067 _n_expr = new_child
5068 else
5069 abort
5070 end
5071 return
5072 end
5073 if _n_kwdo == old_child then
5074 if new_child != null then
5075 new_child.parent = self
5076 assert new_child isa TKwdo
5077 _n_kwdo = new_child
5078 else
5079 abort
5080 end
5081 return
5082 end
5083 if _n_block == old_child then
5084 if new_child != null then
5085 new_child.parent = self
5086 assert new_child isa AExpr
5087 _n_block = new_child
5088 else
5089 _n_block = null
5090 end
5091 return
5092 end
5093 if _n_label == old_child then
5094 if new_child != null then
5095 new_child.parent = self
5096 assert new_child isa ALabel
5097 _n_label = new_child
5098 else
5099 _n_label = null
5100 end
5101 return
5102 end
5103 end
5104
5105 redef fun visit_all(v: Visitor)
5106 do
5107 v.enter_visit(_n_kwwhile)
5108 v.enter_visit(_n_expr)
5109 v.enter_visit(_n_kwdo)
5110 if _n_block != null then
5111 v.enter_visit(_n_block.as(not null))
5112 end
5113 if _n_label != null then
5114 v.enter_visit(_n_label.as(not null))
5115 end
5116 end
5117
5118 redef fun visit_all_reverse(v: Visitor)
5119 do
5120 v.enter_visit(_n_kwwhile)
5121 v.enter_visit(_n_expr)
5122 v.enter_visit(_n_kwdo)
5123 if _n_block != null then
5124 v.enter_visit(_n_block.as(not null))
5125 end
5126 if _n_label != null then
5127 v.enter_visit(_n_label.as(not null))
5128 end
5129 end
5130 end
5131 redef class AForExpr
5132 redef fun n_kwfor=(n)
5133 do
5134 _n_kwfor = n
5135 n.parent = self
5136 end
5137 redef fun n_id=(n)
5138 do
5139 _n_id = n
5140 n.parent = self
5141 end
5142 redef fun n_expr=(n)
5143 do
5144 _n_expr = n
5145 n.parent = self
5146 end
5147 redef fun n_kwdo=(n)
5148 do
5149 _n_kwdo = n
5150 n.parent = self
5151 end
5152 redef fun n_block=(n)
5153 do
5154 _n_block = n
5155 if n != null then
5156 n.parent = self
5157 end
5158 end
5159 redef fun n_label=(n)
5160 do
5161 _n_label = n
5162 if n != null then
5163 n.parent = self
5164 end
5165 end
5166
5167 private init empty_init do end
5168
5169 init init_aforexpr (
5170 n_kwfor: nullable TKwfor,
5171 n_id: nullable TId,
5172 n_expr: nullable AExpr,
5173 n_kwdo: nullable TKwdo,
5174 n_block: nullable AExpr,
5175 n_label: nullable ALabel
5176 )
5177 do
5178 empty_init
5179 _n_kwfor = n_kwfor.as(not null)
5180 n_kwfor.parent = self
5181 _n_id = n_id.as(not null)
5182 n_id.parent = self
5183 _n_expr = n_expr.as(not null)
5184 n_expr.parent = self
5185 _n_kwdo = n_kwdo.as(not null)
5186 n_kwdo.parent = self
5187 _n_block = n_block
5188 if n_block != null then
5189 n_block.parent = self
5190 end
5191 _n_label = n_label
5192 if n_label != null then
5193 n_label.parent = self
5194 end
5195 end
5196
5197 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5198 do
5199 if _n_kwfor == old_child then
5200 if new_child != null then
5201 new_child.parent = self
5202 assert new_child isa TKwfor
5203 _n_kwfor = new_child
5204 else
5205 abort
5206 end
5207 return
5208 end
5209 if _n_id == old_child then
5210 if new_child != null then
5211 new_child.parent = self
5212 assert new_child isa TId
5213 _n_id = new_child
5214 else
5215 abort
5216 end
5217 return
5218 end
5219 if _n_expr == old_child then
5220 if new_child != null then
5221 new_child.parent = self
5222 assert new_child isa AExpr
5223 _n_expr = new_child
5224 else
5225 abort
5226 end
5227 return
5228 end
5229 if _n_kwdo == old_child then
5230 if new_child != null then
5231 new_child.parent = self
5232 assert new_child isa TKwdo
5233 _n_kwdo = new_child
5234 else
5235 abort
5236 end
5237 return
5238 end
5239 if _n_block == old_child then
5240 if new_child != null then
5241 new_child.parent = self
5242 assert new_child isa AExpr
5243 _n_block = new_child
5244 else
5245 _n_block = null
5246 end
5247 return
5248 end
5249 if _n_label == old_child then
5250 if new_child != null then
5251 new_child.parent = self
5252 assert new_child isa ALabel
5253 _n_label = new_child
5254 else
5255 _n_label = null
5256 end
5257 return
5258 end
5259 end
5260
5261 redef fun visit_all(v: Visitor)
5262 do
5263 v.enter_visit(_n_kwfor)
5264 v.enter_visit(_n_id)
5265 v.enter_visit(_n_expr)
5266 v.enter_visit(_n_kwdo)
5267 if _n_block != null then
5268 v.enter_visit(_n_block.as(not null))
5269 end
5270 if _n_label != null then
5271 v.enter_visit(_n_label.as(not null))
5272 end
5273 end
5274
5275 redef fun visit_all_reverse(v: Visitor)
5276 do
5277 v.enter_visit(_n_kwfor)
5278 v.enter_visit(_n_id)
5279 v.enter_visit(_n_expr)
5280 v.enter_visit(_n_kwdo)
5281 if _n_block != null then
5282 v.enter_visit(_n_block.as(not null))
5283 end
5284 if _n_label != null then
5285 v.enter_visit(_n_label.as(not null))
5286 end
5287 end
5288 end
5289 redef class AAssertExpr
5290 redef fun n_kwassert=(n)
5291 do
5292 _n_kwassert = n
5293 n.parent = self
5294 end
5295 redef fun n_id=(n)
5296 do
5297 _n_id = n
5298 if n != null then
5299 n.parent = self
5300 end
5301 end
5302 redef fun n_expr=(n)
5303 do
5304 _n_expr = n
5305 n.parent = self
5306 end
5307
5308 private init empty_init do end
5309
5310 init init_aassertexpr (
5311 n_kwassert: nullable TKwassert,
5312 n_id: nullable TId,
5313 n_expr: nullable AExpr
5314 )
5315 do
5316 empty_init
5317 _n_kwassert = n_kwassert.as(not null)
5318 n_kwassert.parent = self
5319 _n_id = n_id
5320 if n_id != null then
5321 n_id.parent = self
5322 end
5323 _n_expr = n_expr.as(not null)
5324 n_expr.parent = self
5325 end
5326
5327 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5328 do
5329 if _n_kwassert == old_child then
5330 if new_child != null then
5331 new_child.parent = self
5332 assert new_child isa TKwassert
5333 _n_kwassert = new_child
5334 else
5335 abort
5336 end
5337 return
5338 end
5339 if _n_id == old_child then
5340 if new_child != null then
5341 new_child.parent = self
5342 assert new_child isa TId
5343 _n_id = new_child
5344 else
5345 _n_id = null
5346 end
5347 return
5348 end
5349 if _n_expr == old_child then
5350 if new_child != null then
5351 new_child.parent = self
5352 assert new_child isa AExpr
5353 _n_expr = new_child
5354 else
5355 abort
5356 end
5357 return
5358 end
5359 end
5360
5361 redef fun visit_all(v: Visitor)
5362 do
5363 v.enter_visit(_n_kwassert)
5364 if _n_id != null then
5365 v.enter_visit(_n_id.as(not null))
5366 end
5367 v.enter_visit(_n_expr)
5368 end
5369
5370 redef fun visit_all_reverse(v: Visitor)
5371 do
5372 v.enter_visit(_n_kwassert)
5373 if _n_id != null then
5374 v.enter_visit(_n_id.as(not null))
5375 end
5376 v.enter_visit(_n_expr)
5377 end
5378 end
5379 redef class AOnceExpr
5380 redef fun n_kwonce=(n)
5381 do
5382 _n_kwonce = n
5383 n.parent = self
5384 end
5385 redef fun n_expr=(n)
5386 do
5387 _n_expr = n
5388 n.parent = self
5389 end
5390
5391 private init empty_init do end
5392
5393 init init_aonceexpr (
5394 n_kwonce: nullable TKwonce,
5395 n_expr: nullable AExpr
5396 )
5397 do
5398 empty_init
5399 _n_kwonce = n_kwonce.as(not null)
5400 n_kwonce.parent = self
5401 _n_expr = n_expr.as(not null)
5402 n_expr.parent = self
5403 end
5404
5405 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5406 do
5407 if _n_kwonce == old_child then
5408 if new_child != null then
5409 new_child.parent = self
5410 assert new_child isa TKwonce
5411 _n_kwonce = new_child
5412 else
5413 abort
5414 end
5415 return
5416 end
5417 if _n_expr == old_child then
5418 if new_child != null then
5419 new_child.parent = self
5420 assert new_child isa AExpr
5421 _n_expr = new_child
5422 else
5423 abort
5424 end
5425 return
5426 end
5427 end
5428
5429 redef fun visit_all(v: Visitor)
5430 do
5431 v.enter_visit(_n_kwonce)
5432 v.enter_visit(_n_expr)
5433 end
5434
5435 redef fun visit_all_reverse(v: Visitor)
5436 do
5437 v.enter_visit(_n_kwonce)
5438 v.enter_visit(_n_expr)
5439 end
5440 end
5441 redef class ASendExpr
5442 redef fun n_expr=(n)
5443 do
5444 _n_expr = n
5445 n.parent = self
5446 end
5447
5448 private init empty_init do end
5449
5450 init init_asendexpr (
5451 n_expr: nullable AExpr
5452 )
5453 do
5454 empty_init
5455 _n_expr = n_expr.as(not null)
5456 n_expr.parent = self
5457 end
5458
5459 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5460 do
5461 if _n_expr == old_child then
5462 if new_child != null then
5463 new_child.parent = self
5464 assert new_child isa AExpr
5465 _n_expr = new_child
5466 else
5467 abort
5468 end
5469 return
5470 end
5471 end
5472
5473 redef fun visit_all(v: Visitor)
5474 do
5475 v.enter_visit(_n_expr)
5476 end
5477
5478 redef fun visit_all_reverse(v: Visitor)
5479 do
5480 v.enter_visit(_n_expr)
5481 end
5482 end
5483 redef class ABinopExpr
5484 redef fun n_expr=(n)
5485 do
5486 _n_expr = n
5487 n.parent = self
5488 end
5489 redef fun n_expr2=(n)
5490 do
5491 _n_expr2 = n
5492 n.parent = self
5493 end
5494
5495 private init empty_init do end
5496
5497 init init_abinopexpr (
5498 n_expr: nullable AExpr,
5499 n_expr2: nullable AExpr
5500 )
5501 do
5502 empty_init
5503 _n_expr = n_expr.as(not null)
5504 n_expr.parent = self
5505 _n_expr2 = n_expr2.as(not null)
5506 n_expr2.parent = self
5507 end
5508
5509 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5510 do
5511 if _n_expr == old_child then
5512 if new_child != null then
5513 new_child.parent = self
5514 assert new_child isa AExpr
5515 _n_expr = new_child
5516 else
5517 abort
5518 end
5519 return
5520 end
5521 if _n_expr2 == old_child then
5522 if new_child != null then
5523 new_child.parent = self
5524 assert new_child isa AExpr
5525 _n_expr2 = new_child
5526 else
5527 abort
5528 end
5529 return
5530 end
5531 end
5532
5533 redef fun visit_all(v: Visitor)
5534 do
5535 v.enter_visit(_n_expr)
5536 v.enter_visit(_n_expr2)
5537 end
5538
5539 redef fun visit_all_reverse(v: Visitor)
5540 do
5541 v.enter_visit(_n_expr)
5542 v.enter_visit(_n_expr2)
5543 end
5544 end
5545 redef class AOrExpr
5546 redef fun n_expr=(n)
5547 do
5548 _n_expr = n
5549 n.parent = self
5550 end
5551 redef fun n_expr2=(n)
5552 do
5553 _n_expr2 = n
5554 n.parent = self
5555 end
5556
5557 private init empty_init do end
5558
5559 init init_aorexpr (
5560 n_expr: nullable AExpr,
5561 n_expr2: nullable AExpr
5562 )
5563 do
5564 empty_init
5565 _n_expr = n_expr.as(not null)
5566 n_expr.parent = self
5567 _n_expr2 = n_expr2.as(not null)
5568 n_expr2.parent = self
5569 end
5570
5571 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5572 do
5573 if _n_expr == old_child then
5574 if new_child != null then
5575 new_child.parent = self
5576 assert new_child isa AExpr
5577 _n_expr = new_child
5578 else
5579 abort
5580 end
5581 return
5582 end
5583 if _n_expr2 == old_child then
5584 if new_child != null then
5585 new_child.parent = self
5586 assert new_child isa AExpr
5587 _n_expr2 = new_child
5588 else
5589 abort
5590 end
5591 return
5592 end
5593 end
5594
5595 redef fun visit_all(v: Visitor)
5596 do
5597 v.enter_visit(_n_expr)
5598 v.enter_visit(_n_expr2)
5599 end
5600
5601 redef fun visit_all_reverse(v: Visitor)
5602 do
5603 v.enter_visit(_n_expr)
5604 v.enter_visit(_n_expr2)
5605 end
5606 end
5607 redef class AAndExpr
5608 redef fun n_expr=(n)
5609 do
5610 _n_expr = n
5611 n.parent = self
5612 end
5613 redef fun n_expr2=(n)
5614 do
5615 _n_expr2 = n
5616 n.parent = self
5617 end
5618
5619 private init empty_init do end
5620
5621 init init_aandexpr (
5622 n_expr: nullable AExpr,
5623 n_expr2: nullable AExpr
5624 )
5625 do
5626 empty_init
5627 _n_expr = n_expr.as(not null)
5628 n_expr.parent = self
5629 _n_expr2 = n_expr2.as(not null)
5630 n_expr2.parent = self
5631 end
5632
5633 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5634 do
5635 if _n_expr == old_child then
5636 if new_child != null then
5637 new_child.parent = self
5638 assert new_child isa AExpr
5639 _n_expr = new_child
5640 else
5641 abort
5642 end
5643 return
5644 end
5645 if _n_expr2 == old_child then
5646 if new_child != null then
5647 new_child.parent = self
5648 assert new_child isa AExpr
5649 _n_expr2 = new_child
5650 else
5651 abort
5652 end
5653 return
5654 end
5655 end
5656
5657 redef fun visit_all(v: Visitor)
5658 do
5659 v.enter_visit(_n_expr)
5660 v.enter_visit(_n_expr2)
5661 end
5662
5663 redef fun visit_all_reverse(v: Visitor)
5664 do
5665 v.enter_visit(_n_expr)
5666 v.enter_visit(_n_expr2)
5667 end
5668 end
5669 redef class ANotExpr
5670 redef fun n_kwnot=(n)
5671 do
5672 _n_kwnot = n
5673 n.parent = self
5674 end
5675 redef fun n_expr=(n)
5676 do
5677 _n_expr = n
5678 n.parent = self
5679 end
5680
5681 private init empty_init do end
5682
5683 init init_anotexpr (
5684 n_kwnot: nullable TKwnot,
5685 n_expr: nullable AExpr
5686 )
5687 do
5688 empty_init
5689 _n_kwnot = n_kwnot.as(not null)
5690 n_kwnot.parent = self
5691 _n_expr = n_expr.as(not null)
5692 n_expr.parent = self
5693 end
5694
5695 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5696 do
5697 if _n_kwnot == old_child then
5698 if new_child != null then
5699 new_child.parent = self
5700 assert new_child isa TKwnot
5701 _n_kwnot = new_child
5702 else
5703 abort
5704 end
5705 return
5706 end
5707 if _n_expr == old_child then
5708 if new_child != null then
5709 new_child.parent = self
5710 assert new_child isa AExpr
5711 _n_expr = new_child
5712 else
5713 abort
5714 end
5715 return
5716 end
5717 end
5718
5719 redef fun visit_all(v: Visitor)
5720 do
5721 v.enter_visit(_n_kwnot)
5722 v.enter_visit(_n_expr)
5723 end
5724
5725 redef fun visit_all_reverse(v: Visitor)
5726 do
5727 v.enter_visit(_n_kwnot)
5728 v.enter_visit(_n_expr)
5729 end
5730 end
5731 redef class AEqExpr
5732 redef fun n_expr=(n)
5733 do
5734 _n_expr = n
5735 n.parent = self
5736 end
5737 redef fun n_expr2=(n)
5738 do
5739 _n_expr2 = n
5740 n.parent = self
5741 end
5742
5743 private init empty_init do end
5744
5745 init init_aeqexpr (
5746 n_expr: nullable AExpr,
5747 n_expr2: nullable AExpr
5748 )
5749 do
5750 empty_init
5751 _n_expr = n_expr.as(not null)
5752 n_expr.parent = self
5753 _n_expr2 = n_expr2.as(not null)
5754 n_expr2.parent = self
5755 end
5756
5757 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5758 do
5759 if _n_expr == old_child then
5760 if new_child != null then
5761 new_child.parent = self
5762 assert new_child isa AExpr
5763 _n_expr = new_child
5764 else
5765 abort
5766 end
5767 return
5768 end
5769 if _n_expr2 == old_child then
5770 if new_child != null then
5771 new_child.parent = self
5772 assert new_child isa AExpr
5773 _n_expr2 = new_child
5774 else
5775 abort
5776 end
5777 return
5778 end
5779 end
5780
5781 redef fun visit_all(v: Visitor)
5782 do
5783 v.enter_visit(_n_expr)
5784 v.enter_visit(_n_expr2)
5785 end
5786
5787 redef fun visit_all_reverse(v: Visitor)
5788 do
5789 v.enter_visit(_n_expr)
5790 v.enter_visit(_n_expr2)
5791 end
5792 end
5793 redef class AEeExpr
5794 redef fun n_expr=(n)
5795 do
5796 _n_expr = n
5797 n.parent = self
5798 end
5799 redef fun n_expr2=(n)
5800 do
5801 _n_expr2 = n
5802 n.parent = self
5803 end
5804
5805 private init empty_init do end
5806
5807 init init_aeeexpr (
5808 n_expr: nullable AExpr,
5809 n_expr2: nullable AExpr
5810 )
5811 do
5812 empty_init
5813 _n_expr = n_expr.as(not null)
5814 n_expr.parent = self
5815 _n_expr2 = n_expr2.as(not null)
5816 n_expr2.parent = self
5817 end
5818
5819 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5820 do
5821 if _n_expr == old_child then
5822 if new_child != null then
5823 new_child.parent = self
5824 assert new_child isa AExpr
5825 _n_expr = new_child
5826 else
5827 abort
5828 end
5829 return
5830 end
5831 if _n_expr2 == old_child then
5832 if new_child != null then
5833 new_child.parent = self
5834 assert new_child isa AExpr
5835 _n_expr2 = new_child
5836 else
5837 abort
5838 end
5839 return
5840 end
5841 end
5842
5843 redef fun visit_all(v: Visitor)
5844 do
5845 v.enter_visit(_n_expr)
5846 v.enter_visit(_n_expr2)
5847 end
5848
5849 redef fun visit_all_reverse(v: Visitor)
5850 do
5851 v.enter_visit(_n_expr)
5852 v.enter_visit(_n_expr2)
5853 end
5854 end
5855 redef class ANeExpr
5856 redef fun n_expr=(n)
5857 do
5858 _n_expr = n
5859 n.parent = self
5860 end
5861 redef fun n_expr2=(n)
5862 do
5863 _n_expr2 = n
5864 n.parent = self
5865 end
5866
5867 private init empty_init do end
5868
5869 init init_aneexpr (
5870 n_expr: nullable AExpr,
5871 n_expr2: nullable AExpr
5872 )
5873 do
5874 empty_init
5875 _n_expr = n_expr.as(not null)
5876 n_expr.parent = self
5877 _n_expr2 = n_expr2.as(not null)
5878 n_expr2.parent = self
5879 end
5880
5881 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5882 do
5883 if _n_expr == old_child then
5884 if new_child != null then
5885 new_child.parent = self
5886 assert new_child isa AExpr
5887 _n_expr = new_child
5888 else
5889 abort
5890 end
5891 return
5892 end
5893 if _n_expr2 == old_child then
5894 if new_child != null then
5895 new_child.parent = self
5896 assert new_child isa AExpr
5897 _n_expr2 = new_child
5898 else
5899 abort
5900 end
5901 return
5902 end
5903 end
5904
5905 redef fun visit_all(v: Visitor)
5906 do
5907 v.enter_visit(_n_expr)
5908 v.enter_visit(_n_expr2)
5909 end
5910
5911 redef fun visit_all_reverse(v: Visitor)
5912 do
5913 v.enter_visit(_n_expr)
5914 v.enter_visit(_n_expr2)
5915 end
5916 end
5917 redef class ALtExpr
5918 redef fun n_expr=(n)
5919 do
5920 _n_expr = n
5921 n.parent = self
5922 end
5923 redef fun n_expr2=(n)
5924 do
5925 _n_expr2 = n
5926 n.parent = self
5927 end
5928
5929 private init empty_init do end
5930
5931 init init_altexpr (
5932 n_expr: nullable AExpr,
5933 n_expr2: nullable AExpr
5934 )
5935 do
5936 empty_init
5937 _n_expr = n_expr.as(not null)
5938 n_expr.parent = self
5939 _n_expr2 = n_expr2.as(not null)
5940 n_expr2.parent = self
5941 end
5942
5943 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5944 do
5945 if _n_expr == old_child then
5946 if new_child != null then
5947 new_child.parent = self
5948 assert new_child isa AExpr
5949 _n_expr = new_child
5950 else
5951 abort
5952 end
5953 return
5954 end
5955 if _n_expr2 == old_child then
5956 if new_child != null then
5957 new_child.parent = self
5958 assert new_child isa AExpr
5959 _n_expr2 = new_child
5960 else
5961 abort
5962 end
5963 return
5964 end
5965 end
5966
5967 redef fun visit_all(v: Visitor)
5968 do
5969 v.enter_visit(_n_expr)
5970 v.enter_visit(_n_expr2)
5971 end
5972
5973 redef fun visit_all_reverse(v: Visitor)
5974 do
5975 v.enter_visit(_n_expr)
5976 v.enter_visit(_n_expr2)
5977 end
5978 end
5979 redef class ALeExpr
5980 redef fun n_expr=(n)
5981 do
5982 _n_expr = n
5983 n.parent = self
5984 end
5985 redef fun n_expr2=(n)
5986 do
5987 _n_expr2 = n
5988 n.parent = self
5989 end
5990
5991 private init empty_init do end
5992
5993 init init_aleexpr (
5994 n_expr: nullable AExpr,
5995 n_expr2: nullable AExpr
5996 )
5997 do
5998 empty_init
5999 _n_expr = n_expr.as(not null)
6000 n_expr.parent = self
6001 _n_expr2 = n_expr2.as(not null)
6002 n_expr2.parent = self
6003 end
6004
6005 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6006 do
6007 if _n_expr == old_child then
6008 if new_child != null then
6009 new_child.parent = self
6010 assert new_child isa AExpr
6011 _n_expr = new_child
6012 else
6013 abort
6014 end
6015 return
6016 end
6017 if _n_expr2 == old_child then
6018 if new_child != null then
6019 new_child.parent = self
6020 assert new_child isa AExpr
6021 _n_expr2 = new_child
6022 else
6023 abort
6024 end
6025 return
6026 end
6027 end
6028
6029 redef fun visit_all(v: Visitor)
6030 do
6031 v.enter_visit(_n_expr)
6032 v.enter_visit(_n_expr2)
6033 end
6034
6035 redef fun visit_all_reverse(v: Visitor)
6036 do
6037 v.enter_visit(_n_expr)
6038 v.enter_visit(_n_expr2)
6039 end
6040 end
6041 redef class AGtExpr
6042 redef fun n_expr=(n)
6043 do
6044 _n_expr = n
6045 n.parent = self
6046 end
6047 redef fun n_expr2=(n)
6048 do
6049 _n_expr2 = n
6050 n.parent = self
6051 end
6052
6053 private init empty_init do end
6054
6055 init init_agtexpr (
6056 n_expr: nullable AExpr,
6057 n_expr2: nullable AExpr
6058 )
6059 do
6060 empty_init
6061 _n_expr = n_expr.as(not null)
6062 n_expr.parent = self
6063 _n_expr2 = n_expr2.as(not null)
6064 n_expr2.parent = self
6065 end
6066
6067 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6068 do
6069 if _n_expr == old_child then
6070 if new_child != null then
6071 new_child.parent = self
6072 assert new_child isa AExpr
6073 _n_expr = new_child
6074 else
6075 abort
6076 end
6077 return
6078 end
6079 if _n_expr2 == old_child then
6080 if new_child != null then
6081 new_child.parent = self
6082 assert new_child isa AExpr
6083 _n_expr2 = new_child
6084 else
6085 abort
6086 end
6087 return
6088 end
6089 end
6090
6091 redef fun visit_all(v: Visitor)
6092 do
6093 v.enter_visit(_n_expr)
6094 v.enter_visit(_n_expr2)
6095 end
6096
6097 redef fun visit_all_reverse(v: Visitor)
6098 do
6099 v.enter_visit(_n_expr)
6100 v.enter_visit(_n_expr2)
6101 end
6102 end
6103 redef class AGeExpr
6104 redef fun n_expr=(n)
6105 do
6106 _n_expr = n
6107 n.parent = self
6108 end
6109 redef fun n_expr2=(n)
6110 do
6111 _n_expr2 = n
6112 n.parent = self
6113 end
6114
6115 private init empty_init do end
6116
6117 init init_ageexpr (
6118 n_expr: nullable AExpr,
6119 n_expr2: nullable AExpr
6120 )
6121 do
6122 empty_init
6123 _n_expr = n_expr.as(not null)
6124 n_expr.parent = self
6125 _n_expr2 = n_expr2.as(not null)
6126 n_expr2.parent = self
6127 end
6128
6129 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6130 do
6131 if _n_expr == old_child then
6132 if new_child != null then
6133 new_child.parent = self
6134 assert new_child isa AExpr
6135 _n_expr = new_child
6136 else
6137 abort
6138 end
6139 return
6140 end
6141 if _n_expr2 == old_child then
6142 if new_child != null then
6143 new_child.parent = self
6144 assert new_child isa AExpr
6145 _n_expr2 = new_child
6146 else
6147 abort
6148 end
6149 return
6150 end
6151 end
6152
6153 redef fun visit_all(v: Visitor)
6154 do
6155 v.enter_visit(_n_expr)
6156 v.enter_visit(_n_expr2)
6157 end
6158
6159 redef fun visit_all_reverse(v: Visitor)
6160 do
6161 v.enter_visit(_n_expr)
6162 v.enter_visit(_n_expr2)
6163 end
6164 end
6165 redef class AIsaExpr
6166 redef fun n_expr=(n)
6167 do
6168 _n_expr = n
6169 n.parent = self
6170 end
6171 redef fun n_type=(n)
6172 do
6173 _n_type = n
6174 n.parent = self
6175 end
6176
6177 private init empty_init do end
6178
6179 init init_aisaexpr (
6180 n_expr: nullable AExpr,
6181 n_type: nullable AType
6182 )
6183 do
6184 empty_init
6185 _n_expr = n_expr.as(not null)
6186 n_expr.parent = self
6187 _n_type = n_type.as(not null)
6188 n_type.parent = self
6189 end
6190
6191 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6192 do
6193 if _n_expr == old_child then
6194 if new_child != null then
6195 new_child.parent = self
6196 assert new_child isa AExpr
6197 _n_expr = new_child
6198 else
6199 abort
6200 end
6201 return
6202 end
6203 if _n_type == old_child then
6204 if new_child != null then
6205 new_child.parent = self
6206 assert new_child isa AType
6207 _n_type = new_child
6208 else
6209 abort
6210 end
6211 return
6212 end
6213 end
6214
6215 redef fun visit_all(v: Visitor)
6216 do
6217 v.enter_visit(_n_expr)
6218 v.enter_visit(_n_type)
6219 end
6220
6221 redef fun visit_all_reverse(v: Visitor)
6222 do
6223 v.enter_visit(_n_expr)
6224 v.enter_visit(_n_type)
6225 end
6226 end
6227 redef class APlusExpr
6228 redef fun n_expr=(n)
6229 do
6230 _n_expr = n
6231 n.parent = self
6232 end
6233 redef fun n_expr2=(n)
6234 do
6235 _n_expr2 = n
6236 n.parent = self
6237 end
6238
6239 private init empty_init do end
6240
6241 init init_aplusexpr (
6242 n_expr: nullable AExpr,
6243 n_expr2: nullable AExpr
6244 )
6245 do
6246 empty_init
6247 _n_expr = n_expr.as(not null)
6248 n_expr.parent = self
6249 _n_expr2 = n_expr2.as(not null)
6250 n_expr2.parent = self
6251 end
6252
6253 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6254 do
6255 if _n_expr == old_child then
6256 if new_child != null then
6257 new_child.parent = self
6258 assert new_child isa AExpr
6259 _n_expr = new_child
6260 else
6261 abort
6262 end
6263 return
6264 end
6265 if _n_expr2 == old_child then
6266 if new_child != null then
6267 new_child.parent = self
6268 assert new_child isa AExpr
6269 _n_expr2 = new_child
6270 else
6271 abort
6272 end
6273 return
6274 end
6275 end
6276
6277 redef fun visit_all(v: Visitor)
6278 do
6279 v.enter_visit(_n_expr)
6280 v.enter_visit(_n_expr2)
6281 end
6282
6283 redef fun visit_all_reverse(v: Visitor)
6284 do
6285 v.enter_visit(_n_expr)
6286 v.enter_visit(_n_expr2)
6287 end
6288 end
6289 redef class AMinusExpr
6290 redef fun n_expr=(n)
6291 do
6292 _n_expr = n
6293 n.parent = self
6294 end
6295 redef fun n_expr2=(n)
6296 do
6297 _n_expr2 = n
6298 n.parent = self
6299 end
6300
6301 private init empty_init do end
6302
6303 init init_aminusexpr (
6304 n_expr: nullable AExpr,
6305 n_expr2: nullable AExpr
6306 )
6307 do
6308 empty_init
6309 _n_expr = n_expr.as(not null)
6310 n_expr.parent = self
6311 _n_expr2 = n_expr2.as(not null)
6312 n_expr2.parent = self
6313 end
6314
6315 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6316 do
6317 if _n_expr == old_child then
6318 if new_child != null then
6319 new_child.parent = self
6320 assert new_child isa AExpr
6321 _n_expr = new_child
6322 else
6323 abort
6324 end
6325 return
6326 end
6327 if _n_expr2 == old_child then
6328 if new_child != null then
6329 new_child.parent = self
6330 assert new_child isa AExpr
6331 _n_expr2 = new_child
6332 else
6333 abort
6334 end
6335 return
6336 end
6337 end
6338
6339 redef fun visit_all(v: Visitor)
6340 do
6341 v.enter_visit(_n_expr)
6342 v.enter_visit(_n_expr2)
6343 end
6344
6345 redef fun visit_all_reverse(v: Visitor)
6346 do
6347 v.enter_visit(_n_expr)
6348 v.enter_visit(_n_expr2)
6349 end
6350 end
6351 redef class AStarshipExpr
6352 redef fun n_expr=(n)
6353 do
6354 _n_expr = n
6355 n.parent = self
6356 end
6357 redef fun n_expr2=(n)
6358 do
6359 _n_expr2 = n
6360 n.parent = self
6361 end
6362
6363 private init empty_init do end
6364
6365 init init_astarshipexpr (
6366 n_expr: nullable AExpr,
6367 n_expr2: nullable AExpr
6368 )
6369 do
6370 empty_init
6371 _n_expr = n_expr.as(not null)
6372 n_expr.parent = self
6373 _n_expr2 = n_expr2.as(not null)
6374 n_expr2.parent = self
6375 end
6376
6377 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6378 do
6379 if _n_expr == old_child then
6380 if new_child != null then
6381 new_child.parent = self
6382 assert new_child isa AExpr
6383 _n_expr = new_child
6384 else
6385 abort
6386 end
6387 return
6388 end
6389 if _n_expr2 == old_child then
6390 if new_child != null then
6391 new_child.parent = self
6392 assert new_child isa AExpr
6393 _n_expr2 = new_child
6394 else
6395 abort
6396 end
6397 return
6398 end
6399 end
6400
6401 redef fun visit_all(v: Visitor)
6402 do
6403 v.enter_visit(_n_expr)
6404 v.enter_visit(_n_expr2)
6405 end
6406
6407 redef fun visit_all_reverse(v: Visitor)
6408 do
6409 v.enter_visit(_n_expr)
6410 v.enter_visit(_n_expr2)
6411 end
6412 end
6413 redef class AStarExpr
6414 redef fun n_expr=(n)
6415 do
6416 _n_expr = n
6417 n.parent = self
6418 end
6419 redef fun n_expr2=(n)
6420 do
6421 _n_expr2 = n
6422 n.parent = self
6423 end
6424
6425 private init empty_init do end
6426
6427 init init_astarexpr (
6428 n_expr: nullable AExpr,
6429 n_expr2: nullable AExpr
6430 )
6431 do
6432 empty_init
6433 _n_expr = n_expr.as(not null)
6434 n_expr.parent = self
6435 _n_expr2 = n_expr2.as(not null)
6436 n_expr2.parent = self
6437 end
6438
6439 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6440 do
6441 if _n_expr == old_child then
6442 if new_child != null then
6443 new_child.parent = self
6444 assert new_child isa AExpr
6445 _n_expr = new_child
6446 else
6447 abort
6448 end
6449 return
6450 end
6451 if _n_expr2 == old_child then
6452 if new_child != null then
6453 new_child.parent = self
6454 assert new_child isa AExpr
6455 _n_expr2 = new_child
6456 else
6457 abort
6458 end
6459 return
6460 end
6461 end
6462
6463 redef fun visit_all(v: Visitor)
6464 do
6465 v.enter_visit(_n_expr)
6466 v.enter_visit(_n_expr2)
6467 end
6468
6469 redef fun visit_all_reverse(v: Visitor)
6470 do
6471 v.enter_visit(_n_expr)
6472 v.enter_visit(_n_expr2)
6473 end
6474 end
6475 redef class ASlashExpr
6476 redef fun n_expr=(n)
6477 do
6478 _n_expr = n
6479 n.parent = self
6480 end
6481 redef fun n_expr2=(n)
6482 do
6483 _n_expr2 = n
6484 n.parent = self
6485 end
6486
6487 private init empty_init do end
6488
6489 init init_aslashexpr (
6490 n_expr: nullable AExpr,
6491 n_expr2: nullable AExpr
6492 )
6493 do
6494 empty_init
6495 _n_expr = n_expr.as(not null)
6496 n_expr.parent = self
6497 _n_expr2 = n_expr2.as(not null)
6498 n_expr2.parent = self
6499 end
6500
6501 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6502 do
6503 if _n_expr == old_child then
6504 if new_child != null then
6505 new_child.parent = self
6506 assert new_child isa AExpr
6507 _n_expr = new_child
6508 else
6509 abort
6510 end
6511 return
6512 end
6513 if _n_expr2 == old_child then
6514 if new_child != null then
6515 new_child.parent = self
6516 assert new_child isa AExpr
6517 _n_expr2 = new_child
6518 else
6519 abort
6520 end
6521 return
6522 end
6523 end
6524
6525 redef fun visit_all(v: Visitor)
6526 do
6527 v.enter_visit(_n_expr)
6528 v.enter_visit(_n_expr2)
6529 end
6530
6531 redef fun visit_all_reverse(v: Visitor)
6532 do
6533 v.enter_visit(_n_expr)
6534 v.enter_visit(_n_expr2)
6535 end
6536 end
6537 redef class APercentExpr
6538 redef fun n_expr=(n)
6539 do
6540 _n_expr = n
6541 n.parent = self
6542 end
6543 redef fun n_expr2=(n)
6544 do
6545 _n_expr2 = n
6546 n.parent = self
6547 end
6548
6549 private init empty_init do end
6550
6551 init init_apercentexpr (
6552 n_expr: nullable AExpr,
6553 n_expr2: nullable AExpr
6554 )
6555 do
6556 empty_init
6557 _n_expr = n_expr.as(not null)
6558 n_expr.parent = self
6559 _n_expr2 = n_expr2.as(not null)
6560 n_expr2.parent = self
6561 end
6562
6563 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6564 do
6565 if _n_expr == old_child then
6566 if new_child != null then
6567 new_child.parent = self
6568 assert new_child isa AExpr
6569 _n_expr = new_child
6570 else
6571 abort
6572 end
6573 return
6574 end
6575 if _n_expr2 == old_child then
6576 if new_child != null then
6577 new_child.parent = self
6578 assert new_child isa AExpr
6579 _n_expr2 = new_child
6580 else
6581 abort
6582 end
6583 return
6584 end
6585 end
6586
6587 redef fun visit_all(v: Visitor)
6588 do
6589 v.enter_visit(_n_expr)
6590 v.enter_visit(_n_expr2)
6591 end
6592
6593 redef fun visit_all_reverse(v: Visitor)
6594 do
6595 v.enter_visit(_n_expr)
6596 v.enter_visit(_n_expr2)
6597 end
6598 end
6599 redef class AUminusExpr
6600 redef fun n_minus=(n)
6601 do
6602 _n_minus = n
6603 n.parent = self
6604 end
6605 redef fun n_expr=(n)
6606 do
6607 _n_expr = n
6608 n.parent = self
6609 end
6610
6611 private init empty_init do end
6612
6613 init init_auminusexpr (
6614 n_minus: nullable TMinus,
6615 n_expr: nullable AExpr
6616 )
6617 do
6618 empty_init
6619 _n_minus = n_minus.as(not null)
6620 n_minus.parent = self
6621 _n_expr = n_expr.as(not null)
6622 n_expr.parent = self
6623 end
6624
6625 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6626 do
6627 if _n_minus == old_child then
6628 if new_child != null then
6629 new_child.parent = self
6630 assert new_child isa TMinus
6631 _n_minus = new_child
6632 else
6633 abort
6634 end
6635 return
6636 end
6637 if _n_expr == old_child then
6638 if new_child != null then
6639 new_child.parent = self
6640 assert new_child isa AExpr
6641 _n_expr = new_child
6642 else
6643 abort
6644 end
6645 return
6646 end
6647 end
6648
6649 redef fun visit_all(v: Visitor)
6650 do
6651 v.enter_visit(_n_minus)
6652 v.enter_visit(_n_expr)
6653 end
6654
6655 redef fun visit_all_reverse(v: Visitor)
6656 do
6657 v.enter_visit(_n_minus)
6658 v.enter_visit(_n_expr)
6659 end
6660 end
6661 redef class ANewExpr
6662 redef fun n_kwnew=(n)
6663 do
6664 _n_kwnew = n
6665 n.parent = self
6666 end
6667 redef fun n_type=(n)
6668 do
6669 _n_type = n
6670 n.parent = self
6671 end
6672 redef fun n_id=(n)
6673 do
6674 _n_id = n
6675 if n != null then
6676 n.parent = self
6677 end
6678 end
6679
6680 private init empty_init do end
6681
6682 init init_anewexpr (
6683 n_kwnew: nullable TKwnew,
6684 n_type: nullable AType,
6685 n_id: nullable TId,
6686 n_args: Collection[Object] # Should be Collection[AExpr]
6687 )
6688 do
6689 empty_init
6690 _n_kwnew = n_kwnew.as(not null)
6691 n_kwnew.parent = self
6692 _n_type = n_type.as(not null)
6693 n_type.parent = self
6694 _n_id = n_id
6695 if n_id != null then
6696 n_id.parent = self
6697 end
6698 for n in n_args do
6699 assert n isa AExpr
6700 _n_args.add(n)
6701 n.parent = self
6702 end
6703 end
6704
6705 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6706 do
6707 if _n_kwnew == old_child then
6708 if new_child != null then
6709 new_child.parent = self
6710 assert new_child isa TKwnew
6711 _n_kwnew = new_child
6712 else
6713 abort
6714 end
6715 return
6716 end
6717 if _n_type == old_child then
6718 if new_child != null then
6719 new_child.parent = self
6720 assert new_child isa AType
6721 _n_type = new_child
6722 else
6723 abort
6724 end
6725 return
6726 end
6727 if _n_id == old_child then
6728 if new_child != null then
6729 new_child.parent = self
6730 assert new_child isa TId
6731 _n_id = new_child
6732 else
6733 _n_id = null
6734 end
6735 return
6736 end
6737 for i in [0.._n_args.length[ do
6738 if _n_args[i] == old_child then
6739 if new_child != null then
6740 assert new_child isa AExpr
6741 _n_args[i] = new_child
6742 new_child.parent = self
6743 else
6744 _n_args.remove_at(i)
6745 end
6746 return
6747 end
6748 end
6749 end
6750
6751 redef fun visit_all(v: Visitor)
6752 do
6753 v.enter_visit(_n_kwnew)
6754 v.enter_visit(_n_type)
6755 if _n_id != null then
6756 v.enter_visit(_n_id.as(not null))
6757 end
6758 for n in _n_args do
6759 v.enter_visit(n)
6760 end
6761 end
6762
6763 redef fun visit_all_reverse(v: Visitor)
6764 do
6765 v.enter_visit(_n_kwnew)
6766 v.enter_visit(_n_type)
6767 if _n_id != null then
6768 v.enter_visit(_n_id.as(not null))
6769 end
6770 do
6771 var i = _n_args.length
6772 while i >= 0 do
6773 v.enter_visit(_n_args[i])
6774 i = i - 1
6775 end
6776 end
6777 end
6778 end
6779 redef class AAttrExpr
6780 redef fun n_expr=(n)
6781 do
6782 _n_expr = n
6783 n.parent = self
6784 end
6785 redef fun n_id=(n)
6786 do
6787 _n_id = n
6788 n.parent = self
6789 end
6790
6791 private init empty_init do end
6792
6793 init init_aattrexpr (
6794 n_expr: nullable AExpr,
6795 n_id: nullable TAttrid
6796 )
6797 do
6798 empty_init
6799 _n_expr = n_expr.as(not null)
6800 n_expr.parent = self
6801 _n_id = n_id.as(not null)
6802 n_id.parent = self
6803 end
6804
6805 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6806 do
6807 if _n_expr == old_child then
6808 if new_child != null then
6809 new_child.parent = self
6810 assert new_child isa AExpr
6811 _n_expr = new_child
6812 else
6813 abort
6814 end
6815 return
6816 end
6817 if _n_id == old_child then
6818 if new_child != null then
6819 new_child.parent = self
6820 assert new_child isa TAttrid
6821 _n_id = new_child
6822 else
6823 abort
6824 end
6825 return
6826 end
6827 end
6828
6829 redef fun visit_all(v: Visitor)
6830 do
6831 v.enter_visit(_n_expr)
6832 v.enter_visit(_n_id)
6833 end
6834
6835 redef fun visit_all_reverse(v: Visitor)
6836 do
6837 v.enter_visit(_n_expr)
6838 v.enter_visit(_n_id)
6839 end
6840 end
6841 redef class AAttrAssignExpr
6842 redef fun n_expr=(n)
6843 do
6844 _n_expr = n
6845 n.parent = self
6846 end
6847 redef fun n_id=(n)
6848 do
6849 _n_id = n
6850 n.parent = self
6851 end
6852 redef fun n_assign=(n)
6853 do
6854 _n_assign = n
6855 n.parent = self
6856 end
6857 redef fun n_value=(n)
6858 do
6859 _n_value = n
6860 n.parent = self
6861 end
6862
6863 private init empty_init do end
6864
6865 init init_aattrassignexpr (
6866 n_expr: nullable AExpr,
6867 n_id: nullable TAttrid,
6868 n_assign: nullable TAssign,
6869 n_value: nullable AExpr
6870 )
6871 do
6872 empty_init
6873 _n_expr = n_expr.as(not null)
6874 n_expr.parent = self
6875 _n_id = n_id.as(not null)
6876 n_id.parent = self
6877 _n_assign = n_assign.as(not null)
6878 n_assign.parent = self
6879 _n_value = n_value.as(not null)
6880 n_value.parent = self
6881 end
6882
6883 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6884 do
6885 if _n_expr == old_child then
6886 if new_child != null then
6887 new_child.parent = self
6888 assert new_child isa AExpr
6889 _n_expr = new_child
6890 else
6891 abort
6892 end
6893 return
6894 end
6895 if _n_id == old_child then
6896 if new_child != null then
6897 new_child.parent = self
6898 assert new_child isa TAttrid
6899 _n_id = new_child
6900 else
6901 abort
6902 end
6903 return
6904 end
6905 if _n_assign == old_child then
6906 if new_child != null then
6907 new_child.parent = self
6908 assert new_child isa TAssign
6909 _n_assign = new_child
6910 else
6911 abort
6912 end
6913 return
6914 end
6915 if _n_value == old_child then
6916 if new_child != null then
6917 new_child.parent = self
6918 assert new_child isa AExpr
6919 _n_value = new_child
6920 else
6921 abort
6922 end
6923 return
6924 end
6925 end
6926
6927 redef fun visit_all(v: Visitor)
6928 do
6929 v.enter_visit(_n_expr)
6930 v.enter_visit(_n_id)
6931 v.enter_visit(_n_assign)
6932 v.enter_visit(_n_value)
6933 end
6934
6935 redef fun visit_all_reverse(v: Visitor)
6936 do
6937 v.enter_visit(_n_expr)
6938 v.enter_visit(_n_id)
6939 v.enter_visit(_n_assign)
6940 v.enter_visit(_n_value)
6941 end
6942 end
6943 redef class AAttrReassignExpr
6944 redef fun n_expr=(n)
6945 do
6946 _n_expr = n
6947 n.parent = self
6948 end
6949 redef fun n_id=(n)
6950 do
6951 _n_id = n
6952 n.parent = self
6953 end
6954 redef fun n_assign_op=(n)
6955 do
6956 _n_assign_op = n
6957 n.parent = self
6958 end
6959 redef fun n_value=(n)
6960 do
6961 _n_value = n
6962 n.parent = self
6963 end
6964
6965 private init empty_init do end
6966
6967 init init_aattrreassignexpr (
6968 n_expr: nullable AExpr,
6969 n_id: nullable TAttrid,
6970 n_assign_op: nullable AAssignOp,
6971 n_value: nullable AExpr
6972 )
6973 do
6974 empty_init
6975 _n_expr = n_expr.as(not null)
6976 n_expr.parent = self
6977 _n_id = n_id.as(not null)
6978 n_id.parent = self
6979 _n_assign_op = n_assign_op.as(not null)
6980 n_assign_op.parent = self
6981 _n_value = n_value.as(not null)
6982 n_value.parent = self
6983 end
6984
6985 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6986 do
6987 if _n_expr == old_child then
6988 if new_child != null then
6989 new_child.parent = self
6990 assert new_child isa AExpr
6991 _n_expr = new_child
6992 else
6993 abort
6994 end
6995 return
6996 end
6997 if _n_id == old_child then
6998 if new_child != null then
6999 new_child.parent = self
7000 assert new_child isa TAttrid
7001 _n_id = new_child
7002 else
7003 abort
7004 end
7005 return
7006 end
7007 if _n_assign_op == old_child then
7008 if new_child != null then
7009 new_child.parent = self
7010 assert new_child isa AAssignOp
7011 _n_assign_op = new_child
7012 else
7013 abort
7014 end
7015 return
7016 end
7017 if _n_value == old_child then
7018 if new_child != null then
7019 new_child.parent = self
7020 assert new_child isa AExpr
7021 _n_value = new_child
7022 else
7023 abort
7024 end
7025 return
7026 end
7027 end
7028
7029 redef fun visit_all(v: Visitor)
7030 do
7031 v.enter_visit(_n_expr)
7032 v.enter_visit(_n_id)
7033 v.enter_visit(_n_assign_op)
7034 v.enter_visit(_n_value)
7035 end
7036
7037 redef fun visit_all_reverse(v: Visitor)
7038 do
7039 v.enter_visit(_n_expr)
7040 v.enter_visit(_n_id)
7041 v.enter_visit(_n_assign_op)
7042 v.enter_visit(_n_value)
7043 end
7044 end
7045 redef class ACallExpr
7046 redef fun n_expr=(n)
7047 do
7048 _n_expr = n
7049 n.parent = self
7050 end
7051 redef fun n_id=(n)
7052 do
7053 _n_id = n
7054 n.parent = self
7055 end
7056
7057 private init empty_init do end
7058
7059 init init_acallexpr (
7060 n_expr: nullable AExpr,
7061 n_id: nullable TId,
7062 n_args: Collection[Object], # Should be Collection[AExpr]
7063 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
7064 )
7065 do
7066 empty_init
7067 _n_expr = n_expr.as(not null)
7068 n_expr.parent = self
7069 _n_id = n_id.as(not null)
7070 n_id.parent = self
7071 for n in n_args do
7072 assert n isa AExpr
7073 _n_args.add(n)
7074 n.parent = self
7075 end
7076 for n in n_closure_defs do
7077 assert n isa AClosureDef
7078 _n_closure_defs.add(n)
7079 n.parent = self
7080 end
7081 end
7082
7083 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7084 do
7085 if _n_expr == old_child then
7086 if new_child != null then
7087 new_child.parent = self
7088 assert new_child isa AExpr
7089 _n_expr = new_child
7090 else
7091 abort
7092 end
7093 return
7094 end
7095 if _n_id == old_child then
7096 if new_child != null then
7097 new_child.parent = self
7098 assert new_child isa TId
7099 _n_id = new_child
7100 else
7101 abort
7102 end
7103 return
7104 end
7105 for i in [0.._n_args.length[ do
7106 if _n_args[i] == old_child then
7107 if new_child != null then
7108 assert new_child isa AExpr
7109 _n_args[i] = new_child
7110 new_child.parent = self
7111 else
7112 _n_args.remove_at(i)
7113 end
7114 return
7115 end
7116 end
7117 for i in [0.._n_closure_defs.length[ do
7118 if _n_closure_defs[i] == old_child then
7119 if new_child != null then
7120 assert new_child isa AClosureDef
7121 _n_closure_defs[i] = new_child
7122 new_child.parent = self
7123 else
7124 _n_closure_defs.remove_at(i)
7125 end
7126 return
7127 end
7128 end
7129 end
7130
7131 redef fun visit_all(v: Visitor)
7132 do
7133 v.enter_visit(_n_expr)
7134 v.enter_visit(_n_id)
7135 for n in _n_args do
7136 v.enter_visit(n)
7137 end
7138 for n in _n_closure_defs do
7139 v.enter_visit(n)
7140 end
7141 end
7142
7143 redef fun visit_all_reverse(v: Visitor)
7144 do
7145 v.enter_visit(_n_expr)
7146 v.enter_visit(_n_id)
7147 do
7148 var i = _n_args.length
7149 while i >= 0 do
7150 v.enter_visit(_n_args[i])
7151 i = i - 1
7152 end
7153 end
7154 do
7155 var i = _n_closure_defs.length
7156 while i >= 0 do
7157 v.enter_visit(_n_closure_defs[i])
7158 i = i - 1
7159 end
7160 end
7161 end
7162 end
7163 redef class ACallAssignExpr
7164 redef fun n_expr=(n)
7165 do
7166 _n_expr = n
7167 n.parent = self
7168 end
7169 redef fun n_id=(n)
7170 do
7171 _n_id = n
7172 n.parent = self
7173 end
7174 redef fun n_assign=(n)
7175 do
7176 _n_assign = n
7177 n.parent = self
7178 end
7179 redef fun n_value=(n)
7180 do
7181 _n_value = n
7182 n.parent = self
7183 end
7184
7185 private init empty_init do end
7186
7187 init init_acallassignexpr (
7188 n_expr: nullable AExpr,
7189 n_id: nullable TId,
7190 n_args: Collection[Object], # Should be Collection[AExpr]
7191 n_assign: nullable TAssign,
7192 n_value: nullable AExpr
7193 )
7194 do
7195 empty_init
7196 _n_expr = n_expr.as(not null)
7197 n_expr.parent = self
7198 _n_id = n_id.as(not null)
7199 n_id.parent = self
7200 for n in n_args do
7201 assert n isa AExpr
7202 _n_args.add(n)
7203 n.parent = self
7204 end
7205 _n_assign = n_assign.as(not null)
7206 n_assign.parent = self
7207 _n_value = n_value.as(not null)
7208 n_value.parent = self
7209 end
7210
7211 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7212 do
7213 if _n_expr == old_child then
7214 if new_child != null then
7215 new_child.parent = self
7216 assert new_child isa AExpr
7217 _n_expr = new_child
7218 else
7219 abort
7220 end
7221 return
7222 end
7223 if _n_id == old_child then
7224 if new_child != null then
7225 new_child.parent = self
7226 assert new_child isa TId
7227 _n_id = new_child
7228 else
7229 abort
7230 end
7231 return
7232 end
7233 for i in [0.._n_args.length[ do
7234 if _n_args[i] == old_child then
7235 if new_child != null then
7236 assert new_child isa AExpr
7237 _n_args[i] = new_child
7238 new_child.parent = self
7239 else
7240 _n_args.remove_at(i)
7241 end
7242 return
7243 end
7244 end
7245 if _n_assign == old_child then
7246 if new_child != null then
7247 new_child.parent = self
7248 assert new_child isa TAssign
7249 _n_assign = new_child
7250 else
7251 abort
7252 end
7253 return
7254 end
7255 if _n_value == old_child then
7256 if new_child != null then
7257 new_child.parent = self
7258 assert new_child isa AExpr
7259 _n_value = new_child
7260 else
7261 abort
7262 end
7263 return
7264 end
7265 end
7266
7267 redef fun visit_all(v: Visitor)
7268 do
7269 v.enter_visit(_n_expr)
7270 v.enter_visit(_n_id)
7271 for n in _n_args do
7272 v.enter_visit(n)
7273 end
7274 v.enter_visit(_n_assign)
7275 v.enter_visit(_n_value)
7276 end
7277
7278 redef fun visit_all_reverse(v: Visitor)
7279 do
7280 v.enter_visit(_n_expr)
7281 v.enter_visit(_n_id)
7282 do
7283 var i = _n_args.length
7284 while i >= 0 do
7285 v.enter_visit(_n_args[i])
7286 i = i - 1
7287 end
7288 end
7289 v.enter_visit(_n_assign)
7290 v.enter_visit(_n_value)
7291 end
7292 end
7293 redef class ACallReassignExpr
7294 redef fun n_expr=(n)
7295 do
7296 _n_expr = n
7297 n.parent = self
7298 end
7299 redef fun n_id=(n)
7300 do
7301 _n_id = n
7302 n.parent = self
7303 end
7304 redef fun n_assign_op=(n)
7305 do
7306 _n_assign_op = n
7307 n.parent = self
7308 end
7309 redef fun n_value=(n)
7310 do
7311 _n_value = n
7312 n.parent = self
7313 end
7314
7315 private init empty_init do end
7316
7317 init init_acallreassignexpr (
7318 n_expr: nullable AExpr,
7319 n_id: nullable TId,
7320 n_args: Collection[Object], # Should be Collection[AExpr]
7321 n_assign_op: nullable AAssignOp,
7322 n_value: nullable AExpr
7323 )
7324 do
7325 empty_init
7326 _n_expr = n_expr.as(not null)
7327 n_expr.parent = self
7328 _n_id = n_id.as(not null)
7329 n_id.parent = self
7330 for n in n_args do
7331 assert n isa AExpr
7332 _n_args.add(n)
7333 n.parent = self
7334 end
7335 _n_assign_op = n_assign_op.as(not null)
7336 n_assign_op.parent = self
7337 _n_value = n_value.as(not null)
7338 n_value.parent = self
7339 end
7340
7341 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7342 do
7343 if _n_expr == old_child then
7344 if new_child != null then
7345 new_child.parent = self
7346 assert new_child isa AExpr
7347 _n_expr = new_child
7348 else
7349 abort
7350 end
7351 return
7352 end
7353 if _n_id == old_child then
7354 if new_child != null then
7355 new_child.parent = self
7356 assert new_child isa TId
7357 _n_id = new_child
7358 else
7359 abort
7360 end
7361 return
7362 end
7363 for i in [0.._n_args.length[ do
7364 if _n_args[i] == old_child then
7365 if new_child != null then
7366 assert new_child isa AExpr
7367 _n_args[i] = new_child
7368 new_child.parent = self
7369 else
7370 _n_args.remove_at(i)
7371 end
7372 return
7373 end
7374 end
7375 if _n_assign_op == old_child then
7376 if new_child != null then
7377 new_child.parent = self
7378 assert new_child isa AAssignOp
7379 _n_assign_op = new_child
7380 else
7381 abort
7382 end
7383 return
7384 end
7385 if _n_value == old_child then
7386 if new_child != null then
7387 new_child.parent = self
7388 assert new_child isa AExpr
7389 _n_value = new_child
7390 else
7391 abort
7392 end
7393 return
7394 end
7395 end
7396
7397 redef fun visit_all(v: Visitor)
7398 do
7399 v.enter_visit(_n_expr)
7400 v.enter_visit(_n_id)
7401 for n in _n_args do
7402 v.enter_visit(n)
7403 end
7404 v.enter_visit(_n_assign_op)
7405 v.enter_visit(_n_value)
7406 end
7407
7408 redef fun visit_all_reverse(v: Visitor)
7409 do
7410 v.enter_visit(_n_expr)
7411 v.enter_visit(_n_id)
7412 do
7413 var i = _n_args.length
7414 while i >= 0 do
7415 v.enter_visit(_n_args[i])
7416 i = i - 1
7417 end
7418 end
7419 v.enter_visit(_n_assign_op)
7420 v.enter_visit(_n_value)
7421 end
7422 end
7423 redef class ASuperExpr
7424 redef fun n_qualified=(n)
7425 do
7426 _n_qualified = n
7427 if n != null then
7428 n.parent = self
7429 end
7430 end
7431 redef fun n_kwsuper=(n)
7432 do
7433 _n_kwsuper = n
7434 n.parent = self
7435 end
7436
7437 private init empty_init do end
7438
7439 init init_asuperexpr (
7440 n_qualified: nullable AQualified,
7441 n_kwsuper: nullable TKwsuper,
7442 n_args: Collection[Object] # Should be Collection[AExpr]
7443 )
7444 do
7445 empty_init
7446 _n_qualified = n_qualified
7447 if n_qualified != null then
7448 n_qualified.parent = self
7449 end
7450 _n_kwsuper = n_kwsuper.as(not null)
7451 n_kwsuper.parent = self
7452 for n in n_args do
7453 assert n isa AExpr
7454 _n_args.add(n)
7455 n.parent = self
7456 end
7457 end
7458
7459 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7460 do
7461 if _n_qualified == old_child then
7462 if new_child != null then
7463 new_child.parent = self
7464 assert new_child isa AQualified
7465 _n_qualified = new_child
7466 else
7467 _n_qualified = null
7468 end
7469 return
7470 end
7471 if _n_kwsuper == old_child then
7472 if new_child != null then
7473 new_child.parent = self
7474 assert new_child isa TKwsuper
7475 _n_kwsuper = new_child
7476 else
7477 abort
7478 end
7479 return
7480 end
7481 for i in [0.._n_args.length[ do
7482 if _n_args[i] == old_child then
7483 if new_child != null then
7484 assert new_child isa AExpr
7485 _n_args[i] = new_child
7486 new_child.parent = self
7487 else
7488 _n_args.remove_at(i)
7489 end
7490 return
7491 end
7492 end
7493 end
7494
7495 redef fun visit_all(v: Visitor)
7496 do
7497 if _n_qualified != null then
7498 v.enter_visit(_n_qualified.as(not null))
7499 end
7500 v.enter_visit(_n_kwsuper)
7501 for n in _n_args do
7502 v.enter_visit(n)
7503 end
7504 end
7505
7506 redef fun visit_all_reverse(v: Visitor)
7507 do
7508 if _n_qualified != null then
7509 v.enter_visit(_n_qualified.as(not null))
7510 end
7511 v.enter_visit(_n_kwsuper)
7512 do
7513 var i = _n_args.length
7514 while i >= 0 do
7515 v.enter_visit(_n_args[i])
7516 i = i - 1
7517 end
7518 end
7519 end
7520 end
7521 redef class AInitExpr
7522 redef fun n_expr=(n)
7523 do
7524 _n_expr = n
7525 n.parent = self
7526 end
7527 redef fun n_kwinit=(n)
7528 do
7529 _n_kwinit = n
7530 n.parent = self
7531 end
7532
7533 private init empty_init do end
7534
7535 init init_ainitexpr (
7536 n_expr: nullable AExpr,
7537 n_kwinit: nullable TKwinit,
7538 n_args: Collection[Object] # Should be Collection[AExpr]
7539 )
7540 do
7541 empty_init
7542 _n_expr = n_expr.as(not null)
7543 n_expr.parent = self
7544 _n_kwinit = n_kwinit.as(not null)
7545 n_kwinit.parent = self
7546 for n in n_args do
7547 assert n isa AExpr
7548 _n_args.add(n)
7549 n.parent = self
7550 end
7551 end
7552
7553 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7554 do
7555 if _n_expr == old_child then
7556 if new_child != null then
7557 new_child.parent = self
7558 assert new_child isa AExpr
7559 _n_expr = new_child
7560 else
7561 abort
7562 end
7563 return
7564 end
7565 if _n_kwinit == old_child then
7566 if new_child != null then
7567 new_child.parent = self
7568 assert new_child isa TKwinit
7569 _n_kwinit = new_child
7570 else
7571 abort
7572 end
7573 return
7574 end
7575 for i in [0.._n_args.length[ do
7576 if _n_args[i] == old_child then
7577 if new_child != null then
7578 assert new_child isa AExpr
7579 _n_args[i] = new_child
7580 new_child.parent = self
7581 else
7582 _n_args.remove_at(i)
7583 end
7584 return
7585 end
7586 end
7587 end
7588
7589 redef fun visit_all(v: Visitor)
7590 do
7591 v.enter_visit(_n_expr)
7592 v.enter_visit(_n_kwinit)
7593 for n in _n_args do
7594 v.enter_visit(n)
7595 end
7596 end
7597
7598 redef fun visit_all_reverse(v: Visitor)
7599 do
7600 v.enter_visit(_n_expr)
7601 v.enter_visit(_n_kwinit)
7602 do
7603 var i = _n_args.length
7604 while i >= 0 do
7605 v.enter_visit(_n_args[i])
7606 i = i - 1
7607 end
7608 end
7609 end
7610 end
7611 redef class ABraExpr
7612 redef fun n_expr=(n)
7613 do
7614 _n_expr = n
7615 n.parent = self
7616 end
7617
7618 private init empty_init do end
7619
7620 init init_abraexpr (
7621 n_expr: nullable AExpr,
7622 n_args: Collection[Object], # Should be Collection[AExpr]
7623 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
7624 )
7625 do
7626 empty_init
7627 _n_expr = n_expr.as(not null)
7628 n_expr.parent = self
7629 for n in n_args do
7630 assert n isa AExpr
7631 _n_args.add(n)
7632 n.parent = self
7633 end
7634 for n in n_closure_defs do
7635 assert n isa AClosureDef
7636 _n_closure_defs.add(n)
7637 n.parent = self
7638 end
7639 end
7640
7641 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7642 do
7643 if _n_expr == old_child then
7644 if new_child != null then
7645 new_child.parent = self
7646 assert new_child isa AExpr
7647 _n_expr = new_child
7648 else
7649 abort
7650 end
7651 return
7652 end
7653 for i in [0.._n_args.length[ do
7654 if _n_args[i] == old_child then
7655 if new_child != null then
7656 assert new_child isa AExpr
7657 _n_args[i] = new_child
7658 new_child.parent = self
7659 else
7660 _n_args.remove_at(i)
7661 end
7662 return
7663 end
7664 end
7665 for i in [0.._n_closure_defs.length[ do
7666 if _n_closure_defs[i] == old_child then
7667 if new_child != null then
7668 assert new_child isa AClosureDef
7669 _n_closure_defs[i] = new_child
7670 new_child.parent = self
7671 else
7672 _n_closure_defs.remove_at(i)
7673 end
7674 return
7675 end
7676 end
7677 end
7678
7679 redef fun visit_all(v: Visitor)
7680 do
7681 v.enter_visit(_n_expr)
7682 for n in _n_args do
7683 v.enter_visit(n)
7684 end
7685 for n in _n_closure_defs do
7686 v.enter_visit(n)
7687 end
7688 end
7689
7690 redef fun visit_all_reverse(v: Visitor)
7691 do
7692 v.enter_visit(_n_expr)
7693 do
7694 var i = _n_args.length
7695 while i >= 0 do
7696 v.enter_visit(_n_args[i])
7697 i = i - 1
7698 end
7699 end
7700 do
7701 var i = _n_closure_defs.length
7702 while i >= 0 do
7703 v.enter_visit(_n_closure_defs[i])
7704 i = i - 1
7705 end
7706 end
7707 end
7708 end
7709 redef class ABraAssignExpr
7710 redef fun n_expr=(n)
7711 do
7712 _n_expr = n
7713 n.parent = self
7714 end
7715 redef fun n_assign=(n)
7716 do
7717 _n_assign = n
7718 n.parent = self
7719 end
7720 redef fun n_value=(n)
7721 do
7722 _n_value = n
7723 n.parent = self
7724 end
7725
7726 private init empty_init do end
7727
7728 init init_abraassignexpr (
7729 n_expr: nullable AExpr,
7730 n_args: Collection[Object], # Should be Collection[AExpr]
7731 n_assign: nullable TAssign,
7732 n_value: nullable AExpr
7733 )
7734 do
7735 empty_init
7736 _n_expr = n_expr.as(not null)
7737 n_expr.parent = self
7738 for n in n_args do
7739 assert n isa AExpr
7740 _n_args.add(n)
7741 n.parent = self
7742 end
7743 _n_assign = n_assign.as(not null)
7744 n_assign.parent = self
7745 _n_value = n_value.as(not null)
7746 n_value.parent = self
7747 end
7748
7749 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7750 do
7751 if _n_expr == old_child then
7752 if new_child != null then
7753 new_child.parent = self
7754 assert new_child isa AExpr
7755 _n_expr = new_child
7756 else
7757 abort
7758 end
7759 return
7760 end
7761 for i in [0.._n_args.length[ do
7762 if _n_args[i] == old_child then
7763 if new_child != null then
7764 assert new_child isa AExpr
7765 _n_args[i] = new_child
7766 new_child.parent = self
7767 else
7768 _n_args.remove_at(i)
7769 end
7770 return
7771 end
7772 end
7773 if _n_assign == old_child then
7774 if new_child != null then
7775 new_child.parent = self
7776 assert new_child isa TAssign
7777 _n_assign = new_child
7778 else
7779 abort
7780 end
7781 return
7782 end
7783 if _n_value == old_child then
7784 if new_child != null then
7785 new_child.parent = self
7786 assert new_child isa AExpr
7787 _n_value = new_child
7788 else
7789 abort
7790 end
7791 return
7792 end
7793 end
7794
7795 redef fun visit_all(v: Visitor)
7796 do
7797 v.enter_visit(_n_expr)
7798 for n in _n_args do
7799 v.enter_visit(n)
7800 end
7801 v.enter_visit(_n_assign)
7802 v.enter_visit(_n_value)
7803 end
7804
7805 redef fun visit_all_reverse(v: Visitor)
7806 do
7807 v.enter_visit(_n_expr)
7808 do
7809 var i = _n_args.length
7810 while i >= 0 do
7811 v.enter_visit(_n_args[i])
7812 i = i - 1
7813 end
7814 end
7815 v.enter_visit(_n_assign)
7816 v.enter_visit(_n_value)
7817 end
7818 end
7819 redef class ABraReassignExpr
7820 redef fun n_expr=(n)
7821 do
7822 _n_expr = n
7823 n.parent = self
7824 end
7825 redef fun n_assign_op=(n)
7826 do
7827 _n_assign_op = n
7828 n.parent = self
7829 end
7830 redef fun n_value=(n)
7831 do
7832 _n_value = n
7833 n.parent = self
7834 end
7835
7836 private init empty_init do end
7837
7838 init init_abrareassignexpr (
7839 n_expr: nullable AExpr,
7840 n_args: Collection[Object], # Should be Collection[AExpr]
7841 n_assign_op: nullable AAssignOp,
7842 n_value: nullable AExpr
7843 )
7844 do
7845 empty_init
7846 _n_expr = n_expr.as(not null)
7847 n_expr.parent = self
7848 for n in n_args do
7849 assert n isa AExpr
7850 _n_args.add(n)
7851 n.parent = self
7852 end
7853 _n_assign_op = n_assign_op.as(not null)
7854 n_assign_op.parent = self
7855 _n_value = n_value.as(not null)
7856 n_value.parent = self
7857 end
7858
7859 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7860 do
7861 if _n_expr == old_child then
7862 if new_child != null then
7863 new_child.parent = self
7864 assert new_child isa AExpr
7865 _n_expr = new_child
7866 else
7867 abort
7868 end
7869 return
7870 end
7871 for i in [0.._n_args.length[ do
7872 if _n_args[i] == old_child then
7873 if new_child != null then
7874 assert new_child isa AExpr
7875 _n_args[i] = new_child
7876 new_child.parent = self
7877 else
7878 _n_args.remove_at(i)
7879 end
7880 return
7881 end
7882 end
7883 if _n_assign_op == old_child then
7884 if new_child != null then
7885 new_child.parent = self
7886 assert new_child isa AAssignOp
7887 _n_assign_op = new_child
7888 else
7889 abort
7890 end
7891 return
7892 end
7893 if _n_value == old_child then
7894 if new_child != null then
7895 new_child.parent = self
7896 assert new_child isa AExpr
7897 _n_value = new_child
7898 else
7899 abort
7900 end
7901 return
7902 end
7903 end
7904
7905 redef fun visit_all(v: Visitor)
7906 do
7907 v.enter_visit(_n_expr)
7908 for n in _n_args do
7909 v.enter_visit(n)
7910 end
7911 v.enter_visit(_n_assign_op)
7912 v.enter_visit(_n_value)
7913 end
7914
7915 redef fun visit_all_reverse(v: Visitor)
7916 do
7917 v.enter_visit(_n_expr)
7918 do
7919 var i = _n_args.length
7920 while i >= 0 do
7921 v.enter_visit(_n_args[i])
7922 i = i - 1
7923 end
7924 end
7925 v.enter_visit(_n_assign_op)
7926 v.enter_visit(_n_value)
7927 end
7928 end
7929 redef class AClosureCallExpr
7930 redef fun n_id=(n)
7931 do
7932 _n_id = n
7933 n.parent = self
7934 end
7935
7936 private init empty_init do end
7937
7938 init init_aclosurecallexpr (
7939 n_id: nullable TId,
7940 n_args: Collection[Object], # Should be Collection[AExpr]
7941 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
7942 )
7943 do
7944 empty_init
7945 _n_id = n_id.as(not null)
7946 n_id.parent = self
7947 for n in n_args do
7948 assert n isa AExpr
7949 _n_args.add(n)
7950 n.parent = self
7951 end
7952 for n in n_closure_defs do
7953 assert n isa AClosureDef
7954 _n_closure_defs.add(n)
7955 n.parent = self
7956 end
7957 end
7958
7959 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7960 do
7961 if _n_id == old_child then
7962 if new_child != null then
7963 new_child.parent = self
7964 assert new_child isa TId
7965 _n_id = new_child
7966 else
7967 abort
7968 end
7969 return
7970 end
7971 for i in [0.._n_args.length[ do
7972 if _n_args[i] == old_child then
7973 if new_child != null then
7974 assert new_child isa AExpr
7975 _n_args[i] = new_child
7976 new_child.parent = self
7977 else
7978 _n_args.remove_at(i)
7979 end
7980 return
7981 end
7982 end
7983 for i in [0.._n_closure_defs.length[ do
7984 if _n_closure_defs[i] == old_child then
7985 if new_child != null then
7986 assert new_child isa AClosureDef
7987 _n_closure_defs[i] = new_child
7988 new_child.parent = self
7989 else
7990 _n_closure_defs.remove_at(i)
7991 end
7992 return
7993 end
7994 end
7995 end
7996
7997 redef fun visit_all(v: Visitor)
7998 do
7999 v.enter_visit(_n_id)
8000 for n in _n_args do
8001 v.enter_visit(n)
8002 end
8003 for n in _n_closure_defs do
8004 v.enter_visit(n)
8005 end
8006 end
8007
8008 redef fun visit_all_reverse(v: Visitor)
8009 do
8010 v.enter_visit(_n_id)
8011 do
8012 var i = _n_args.length
8013 while i >= 0 do
8014 v.enter_visit(_n_args[i])
8015 i = i - 1
8016 end
8017 end
8018 do
8019 var i = _n_closure_defs.length
8020 while i >= 0 do
8021 v.enter_visit(_n_closure_defs[i])
8022 i = i - 1
8023 end
8024 end
8025 end
8026 end
8027 redef class AVarExpr
8028 redef fun n_id=(n)
8029 do
8030 _n_id = n
8031 n.parent = self
8032 end
8033
8034 private init empty_init do end
8035
8036 init init_avarexpr (
8037 n_id: nullable TId
8038 )
8039 do
8040 empty_init
8041 _n_id = n_id.as(not null)
8042 n_id.parent = self
8043 end
8044
8045 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8046 do
8047 if _n_id == old_child then
8048 if new_child != null then
8049 new_child.parent = self
8050 assert new_child isa TId
8051 _n_id = new_child
8052 else
8053 abort
8054 end
8055 return
8056 end
8057 end
8058
8059 redef fun visit_all(v: Visitor)
8060 do
8061 v.enter_visit(_n_id)
8062 end
8063
8064 redef fun visit_all_reverse(v: Visitor)
8065 do
8066 v.enter_visit(_n_id)
8067 end
8068 end
8069 redef class AVarAssignExpr
8070 redef fun n_id=(n)
8071 do
8072 _n_id = n
8073 n.parent = self
8074 end
8075 redef fun n_assign=(n)
8076 do
8077 _n_assign = n
8078 n.parent = self
8079 end
8080 redef fun n_value=(n)
8081 do
8082 _n_value = n
8083 n.parent = self
8084 end
8085
8086 private init empty_init do end
8087
8088 init init_avarassignexpr (
8089 n_id: nullable TId,
8090 n_assign: nullable TAssign,
8091 n_value: nullable AExpr
8092 )
8093 do
8094 empty_init
8095 _n_id = n_id.as(not null)
8096 n_id.parent = self
8097 _n_assign = n_assign.as(not null)
8098 n_assign.parent = self
8099 _n_value = n_value.as(not null)
8100 n_value.parent = self
8101 end
8102
8103 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8104 do
8105 if _n_id == old_child then
8106 if new_child != null then
8107 new_child.parent = self
8108 assert new_child isa TId
8109 _n_id = new_child
8110 else
8111 abort
8112 end
8113 return
8114 end
8115 if _n_assign == old_child then
8116 if new_child != null then
8117 new_child.parent = self
8118 assert new_child isa TAssign
8119 _n_assign = new_child
8120 else
8121 abort
8122 end
8123 return
8124 end
8125 if _n_value == old_child then
8126 if new_child != null then
8127 new_child.parent = self
8128 assert new_child isa AExpr
8129 _n_value = new_child
8130 else
8131 abort
8132 end
8133 return
8134 end
8135 end
8136
8137 redef fun visit_all(v: Visitor)
8138 do
8139 v.enter_visit(_n_id)
8140 v.enter_visit(_n_assign)
8141 v.enter_visit(_n_value)
8142 end
8143
8144 redef fun visit_all_reverse(v: Visitor)
8145 do
8146 v.enter_visit(_n_id)
8147 v.enter_visit(_n_assign)
8148 v.enter_visit(_n_value)
8149 end
8150 end
8151 redef class AVarReassignExpr
8152 redef fun n_id=(n)
8153 do
8154 _n_id = n
8155 n.parent = self
8156 end
8157 redef fun n_assign_op=(n)
8158 do
8159 _n_assign_op = n
8160 n.parent = self
8161 end
8162 redef fun n_value=(n)
8163 do
8164 _n_value = n
8165 n.parent = self
8166 end
8167
8168 private init empty_init do end
8169
8170 init init_avarreassignexpr (
8171 n_id: nullable TId,
8172 n_assign_op: nullable AAssignOp,
8173 n_value: nullable AExpr
8174 )
8175 do
8176 empty_init
8177 _n_id = n_id.as(not null)
8178 n_id.parent = self
8179 _n_assign_op = n_assign_op.as(not null)
8180 n_assign_op.parent = self
8181 _n_value = n_value.as(not null)
8182 n_value.parent = self
8183 end
8184
8185 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8186 do
8187 if _n_id == old_child then
8188 if new_child != null then
8189 new_child.parent = self
8190 assert new_child isa TId
8191 _n_id = new_child
8192 else
8193 abort
8194 end
8195 return
8196 end
8197 if _n_assign_op == old_child then
8198 if new_child != null then
8199 new_child.parent = self
8200 assert new_child isa AAssignOp
8201 _n_assign_op = new_child
8202 else
8203 abort
8204 end
8205 return
8206 end
8207 if _n_value == old_child then
8208 if new_child != null then
8209 new_child.parent = self
8210 assert new_child isa AExpr
8211 _n_value = new_child
8212 else
8213 abort
8214 end
8215 return
8216 end
8217 end
8218
8219 redef fun visit_all(v: Visitor)
8220 do
8221 v.enter_visit(_n_id)
8222 v.enter_visit(_n_assign_op)
8223 v.enter_visit(_n_value)
8224 end
8225
8226 redef fun visit_all_reverse(v: Visitor)
8227 do
8228 v.enter_visit(_n_id)
8229 v.enter_visit(_n_assign_op)
8230 v.enter_visit(_n_value)
8231 end
8232 end
8233 redef class ARangeExpr
8234 redef fun n_expr=(n)
8235 do
8236 _n_expr = n
8237 n.parent = self
8238 end
8239 redef fun n_expr2=(n)
8240 do
8241 _n_expr2 = n
8242 n.parent = self
8243 end
8244
8245 private init empty_init do end
8246
8247 init init_arangeexpr (
8248 n_expr: nullable AExpr,
8249 n_expr2: nullable AExpr
8250 )
8251 do
8252 empty_init
8253 _n_expr = n_expr.as(not null)
8254 n_expr.parent = self
8255 _n_expr2 = n_expr2.as(not null)
8256 n_expr2.parent = self
8257 end
8258
8259 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8260 do
8261 if _n_expr == old_child then
8262 if new_child != null then
8263 new_child.parent = self
8264 assert new_child isa AExpr
8265 _n_expr = new_child
8266 else
8267 abort
8268 end
8269 return
8270 end
8271 if _n_expr2 == old_child then
8272 if new_child != null then
8273 new_child.parent = self
8274 assert new_child isa AExpr
8275 _n_expr2 = new_child
8276 else
8277 abort
8278 end
8279 return
8280 end
8281 end
8282
8283 redef fun visit_all(v: Visitor)
8284 do
8285 v.enter_visit(_n_expr)
8286 v.enter_visit(_n_expr2)
8287 end
8288
8289 redef fun visit_all_reverse(v: Visitor)
8290 do
8291 v.enter_visit(_n_expr)
8292 v.enter_visit(_n_expr2)
8293 end
8294 end
8295 redef class ACrangeExpr
8296 redef fun n_expr=(n)
8297 do
8298 _n_expr = n
8299 n.parent = self
8300 end
8301 redef fun n_expr2=(n)
8302 do
8303 _n_expr2 = n
8304 n.parent = self
8305 end
8306
8307 private init empty_init do end
8308
8309 init init_acrangeexpr (
8310 n_expr: nullable AExpr,
8311 n_expr2: nullable AExpr
8312 )
8313 do
8314 empty_init
8315 _n_expr = n_expr.as(not null)
8316 n_expr.parent = self
8317 _n_expr2 = n_expr2.as(not null)
8318 n_expr2.parent = self
8319 end
8320
8321 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8322 do
8323 if _n_expr == old_child then
8324 if new_child != null then
8325 new_child.parent = self
8326 assert new_child isa AExpr
8327 _n_expr = new_child
8328 else
8329 abort
8330 end
8331 return
8332 end
8333 if _n_expr2 == old_child then
8334 if new_child != null then
8335 new_child.parent = self
8336 assert new_child isa AExpr
8337 _n_expr2 = new_child
8338 else
8339 abort
8340 end
8341 return
8342 end
8343 end
8344
8345 redef fun visit_all(v: Visitor)
8346 do
8347 v.enter_visit(_n_expr)
8348 v.enter_visit(_n_expr2)
8349 end
8350
8351 redef fun visit_all_reverse(v: Visitor)
8352 do
8353 v.enter_visit(_n_expr)
8354 v.enter_visit(_n_expr2)
8355 end
8356 end
8357 redef class AOrangeExpr
8358 redef fun n_expr=(n)
8359 do
8360 _n_expr = n
8361 n.parent = self
8362 end
8363 redef fun n_expr2=(n)
8364 do
8365 _n_expr2 = n
8366 n.parent = self
8367 end
8368
8369 private init empty_init do end
8370
8371 init init_aorangeexpr (
8372 n_expr: nullable AExpr,
8373 n_expr2: nullable AExpr
8374 )
8375 do
8376 empty_init
8377 _n_expr = n_expr.as(not null)
8378 n_expr.parent = self
8379 _n_expr2 = n_expr2.as(not null)
8380 n_expr2.parent = self
8381 end
8382
8383 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8384 do
8385 if _n_expr == old_child then
8386 if new_child != null then
8387 new_child.parent = self
8388 assert new_child isa AExpr
8389 _n_expr = new_child
8390 else
8391 abort
8392 end
8393 return
8394 end
8395 if _n_expr2 == old_child then
8396 if new_child != null then
8397 new_child.parent = self
8398 assert new_child isa AExpr
8399 _n_expr2 = new_child
8400 else
8401 abort
8402 end
8403 return
8404 end
8405 end
8406
8407 redef fun visit_all(v: Visitor)
8408 do
8409 v.enter_visit(_n_expr)
8410 v.enter_visit(_n_expr2)
8411 end
8412
8413 redef fun visit_all_reverse(v: Visitor)
8414 do
8415 v.enter_visit(_n_expr)
8416 v.enter_visit(_n_expr2)
8417 end
8418 end
8419 redef class AArrayExpr
8420
8421 private init empty_init do end
8422
8423 init init_aarrayexpr (
8424 n_exprs: Collection[Object] # Should be Collection[AExpr]
8425 )
8426 do
8427 empty_init
8428 for n in n_exprs do
8429 assert n isa AExpr
8430 _n_exprs.add(n)
8431 n.parent = self
8432 end
8433 end
8434
8435 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8436 do
8437 for i in [0.._n_exprs.length[ do
8438 if _n_exprs[i] == old_child then
8439 if new_child != null then
8440 assert new_child isa AExpr
8441 _n_exprs[i] = new_child
8442 new_child.parent = self
8443 else
8444 _n_exprs.remove_at(i)
8445 end
8446 return
8447 end
8448 end
8449 end
8450
8451 redef fun visit_all(v: Visitor)
8452 do
8453 for n in _n_exprs do
8454 v.enter_visit(n)
8455 end
8456 end
8457
8458 redef fun visit_all_reverse(v: Visitor)
8459 do
8460 do
8461 var i = _n_exprs.length
8462 while i >= 0 do
8463 v.enter_visit(_n_exprs[i])
8464 i = i - 1
8465 end
8466 end
8467 end
8468 end
8469 redef class ASelfExpr
8470 redef fun n_kwself=(n)
8471 do
8472 _n_kwself = n
8473 n.parent = self
8474 end
8475
8476 private init empty_init do end
8477
8478 init init_aselfexpr (
8479 n_kwself: nullable TKwself
8480 )
8481 do
8482 empty_init
8483 _n_kwself = n_kwself.as(not null)
8484 n_kwself.parent = self
8485 end
8486
8487 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8488 do
8489 if _n_kwself == old_child then
8490 if new_child != null then
8491 new_child.parent = self
8492 assert new_child isa TKwself
8493 _n_kwself = new_child
8494 else
8495 abort
8496 end
8497 return
8498 end
8499 end
8500
8501 redef fun visit_all(v: Visitor)
8502 do
8503 v.enter_visit(_n_kwself)
8504 end
8505
8506 redef fun visit_all_reverse(v: Visitor)
8507 do
8508 v.enter_visit(_n_kwself)
8509 end
8510 end
8511 redef class AImplicitSelfExpr
8512
8513 private init empty_init do end
8514
8515 init init_aimplicitselfexpr
8516 do
8517 empty_init
8518 end
8519
8520 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8521 do
8522 end
8523
8524 redef fun visit_all(v: Visitor)
8525 do
8526 end
8527
8528 redef fun visit_all_reverse(v: Visitor)
8529 do
8530 end
8531 end
8532 redef class ATrueExpr
8533 redef fun n_kwtrue=(n)
8534 do
8535 _n_kwtrue = n
8536 n.parent = self
8537 end
8538
8539 private init empty_init do end
8540
8541 init init_atrueexpr (
8542 n_kwtrue: nullable TKwtrue
8543 )
8544 do
8545 empty_init
8546 _n_kwtrue = n_kwtrue.as(not null)
8547 n_kwtrue.parent = self
8548 end
8549
8550 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8551 do
8552 if _n_kwtrue == old_child then
8553 if new_child != null then
8554 new_child.parent = self
8555 assert new_child isa TKwtrue
8556 _n_kwtrue = new_child
8557 else
8558 abort
8559 end
8560 return
8561 end
8562 end
8563
8564 redef fun visit_all(v: Visitor)
8565 do
8566 v.enter_visit(_n_kwtrue)
8567 end
8568
8569 redef fun visit_all_reverse(v: Visitor)
8570 do
8571 v.enter_visit(_n_kwtrue)
8572 end
8573 end
8574 redef class AFalseExpr
8575 redef fun n_kwfalse=(n)
8576 do
8577 _n_kwfalse = n
8578 n.parent = self
8579 end
8580
8581 private init empty_init do end
8582
8583 init init_afalseexpr (
8584 n_kwfalse: nullable TKwfalse
8585 )
8586 do
8587 empty_init
8588 _n_kwfalse = n_kwfalse.as(not null)
8589 n_kwfalse.parent = self
8590 end
8591
8592 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8593 do
8594 if _n_kwfalse == old_child then
8595 if new_child != null then
8596 new_child.parent = self
8597 assert new_child isa TKwfalse
8598 _n_kwfalse = new_child
8599 else
8600 abort
8601 end
8602 return
8603 end
8604 end
8605
8606 redef fun visit_all(v: Visitor)
8607 do
8608 v.enter_visit(_n_kwfalse)
8609 end
8610
8611 redef fun visit_all_reverse(v: Visitor)
8612 do
8613 v.enter_visit(_n_kwfalse)
8614 end
8615 end
8616 redef class ANullExpr
8617 redef fun n_kwnull=(n)
8618 do
8619 _n_kwnull = n
8620 n.parent = self
8621 end
8622
8623 private init empty_init do end
8624
8625 init init_anullexpr (
8626 n_kwnull: nullable TKwnull
8627 )
8628 do
8629 empty_init
8630 _n_kwnull = n_kwnull.as(not null)
8631 n_kwnull.parent = self
8632 end
8633
8634 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8635 do
8636 if _n_kwnull == old_child then
8637 if new_child != null then
8638 new_child.parent = self
8639 assert new_child isa TKwnull
8640 _n_kwnull = new_child
8641 else
8642 abort
8643 end
8644 return
8645 end
8646 end
8647
8648 redef fun visit_all(v: Visitor)
8649 do
8650 v.enter_visit(_n_kwnull)
8651 end
8652
8653 redef fun visit_all_reverse(v: Visitor)
8654 do
8655 v.enter_visit(_n_kwnull)
8656 end
8657 end
8658 redef class AIntExpr
8659 redef fun n_number=(n)
8660 do
8661 _n_number = n
8662 n.parent = self
8663 end
8664
8665 private init empty_init do end
8666
8667 init init_aintexpr (
8668 n_number: nullable TNumber
8669 )
8670 do
8671 empty_init
8672 _n_number = n_number.as(not null)
8673 n_number.parent = self
8674 end
8675
8676 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8677 do
8678 if _n_number == old_child then
8679 if new_child != null then
8680 new_child.parent = self
8681 assert new_child isa TNumber
8682 _n_number = new_child
8683 else
8684 abort
8685 end
8686 return
8687 end
8688 end
8689
8690 redef fun visit_all(v: Visitor)
8691 do
8692 v.enter_visit(_n_number)
8693 end
8694
8695 redef fun visit_all_reverse(v: Visitor)
8696 do
8697 v.enter_visit(_n_number)
8698 end
8699 end
8700 redef class AFloatExpr
8701 redef fun n_float=(n)
8702 do
8703 _n_float = n
8704 n.parent = self
8705 end
8706
8707 private init empty_init do end
8708
8709 init init_afloatexpr (
8710 n_float: nullable TFloat
8711 )
8712 do
8713 empty_init
8714 _n_float = n_float.as(not null)
8715 n_float.parent = self
8716 end
8717
8718 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8719 do
8720 if _n_float == old_child then
8721 if new_child != null then
8722 new_child.parent = self
8723 assert new_child isa TFloat
8724 _n_float = new_child
8725 else
8726 abort
8727 end
8728 return
8729 end
8730 end
8731
8732 redef fun visit_all(v: Visitor)
8733 do
8734 v.enter_visit(_n_float)
8735 end
8736
8737 redef fun visit_all_reverse(v: Visitor)
8738 do
8739 v.enter_visit(_n_float)
8740 end
8741 end
8742 redef class ACharExpr
8743 redef fun n_char=(n)
8744 do
8745 _n_char = n
8746 n.parent = self
8747 end
8748
8749 private init empty_init do end
8750
8751 init init_acharexpr (
8752 n_char: nullable TChar
8753 )
8754 do
8755 empty_init
8756 _n_char = n_char.as(not null)
8757 n_char.parent = self
8758 end
8759
8760 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8761 do
8762 if _n_char == old_child then
8763 if new_child != null then
8764 new_child.parent = self
8765 assert new_child isa TChar
8766 _n_char = new_child
8767 else
8768 abort
8769 end
8770 return
8771 end
8772 end
8773
8774 redef fun visit_all(v: Visitor)
8775 do
8776 v.enter_visit(_n_char)
8777 end
8778
8779 redef fun visit_all_reverse(v: Visitor)
8780 do
8781 v.enter_visit(_n_char)
8782 end
8783 end
8784 redef class AStringExpr
8785 redef fun n_string=(n)
8786 do
8787 _n_string = n
8788 n.parent = self
8789 end
8790
8791 private init empty_init do end
8792
8793 init init_astringexpr (
8794 n_string: nullable TString
8795 )
8796 do
8797 empty_init
8798 _n_string = n_string.as(not null)
8799 n_string.parent = self
8800 end
8801
8802 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8803 do
8804 if _n_string == old_child then
8805 if new_child != null then
8806 new_child.parent = self
8807 assert new_child isa TString
8808 _n_string = new_child
8809 else
8810 abort
8811 end
8812 return
8813 end
8814 end
8815
8816 redef fun visit_all(v: Visitor)
8817 do
8818 v.enter_visit(_n_string)
8819 end
8820
8821 redef fun visit_all_reverse(v: Visitor)
8822 do
8823 v.enter_visit(_n_string)
8824 end
8825 end
8826 redef class AStartStringExpr
8827 redef fun n_string=(n)
8828 do
8829 _n_string = n
8830 n.parent = self
8831 end
8832
8833 private init empty_init do end
8834
8835 init init_astartstringexpr (
8836 n_string: nullable TStartString
8837 )
8838 do
8839 empty_init
8840 _n_string = n_string.as(not null)
8841 n_string.parent = self
8842 end
8843
8844 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8845 do
8846 if _n_string == old_child then
8847 if new_child != null then
8848 new_child.parent = self
8849 assert new_child isa TStartString
8850 _n_string = new_child
8851 else
8852 abort
8853 end
8854 return
8855 end
8856 end
8857
8858 redef fun visit_all(v: Visitor)
8859 do
8860 v.enter_visit(_n_string)
8861 end
8862
8863 redef fun visit_all_reverse(v: Visitor)
8864 do
8865 v.enter_visit(_n_string)
8866 end
8867 end
8868 redef class AMidStringExpr
8869 redef fun n_string=(n)
8870 do
8871 _n_string = n
8872 n.parent = self
8873 end
8874
8875 private init empty_init do end
8876
8877 init init_amidstringexpr (
8878 n_string: nullable TMidString
8879 )
8880 do
8881 empty_init
8882 _n_string = n_string.as(not null)
8883 n_string.parent = self
8884 end
8885
8886 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8887 do
8888 if _n_string == old_child then
8889 if new_child != null then
8890 new_child.parent = self
8891 assert new_child isa TMidString
8892 _n_string = new_child
8893 else
8894 abort
8895 end
8896 return
8897 end
8898 end
8899
8900 redef fun visit_all(v: Visitor)
8901 do
8902 v.enter_visit(_n_string)
8903 end
8904
8905 redef fun visit_all_reverse(v: Visitor)
8906 do
8907 v.enter_visit(_n_string)
8908 end
8909 end
8910 redef class AEndStringExpr
8911 redef fun n_string=(n)
8912 do
8913 _n_string = n
8914 n.parent = self
8915 end
8916
8917 private init empty_init do end
8918
8919 init init_aendstringexpr (
8920 n_string: nullable TEndString
8921 )
8922 do
8923 empty_init
8924 _n_string = n_string.as(not null)
8925 n_string.parent = self
8926 end
8927
8928 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8929 do
8930 if _n_string == old_child then
8931 if new_child != null then
8932 new_child.parent = self
8933 assert new_child isa TEndString
8934 _n_string = new_child
8935 else
8936 abort
8937 end
8938 return
8939 end
8940 end
8941
8942 redef fun visit_all(v: Visitor)
8943 do
8944 v.enter_visit(_n_string)
8945 end
8946
8947 redef fun visit_all_reverse(v: Visitor)
8948 do
8949 v.enter_visit(_n_string)
8950 end
8951 end
8952 redef class ASuperstringExpr
8953
8954 private init empty_init do end
8955
8956 init init_asuperstringexpr (
8957 n_exprs: Collection[Object] # Should be Collection[AExpr]
8958 )
8959 do
8960 empty_init
8961 for n in n_exprs do
8962 assert n isa AExpr
8963 _n_exprs.add(n)
8964 n.parent = self
8965 end
8966 end
8967
8968 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8969 do
8970 for i in [0.._n_exprs.length[ do
8971 if _n_exprs[i] == old_child then
8972 if new_child != null then
8973 assert new_child isa AExpr
8974 _n_exprs[i] = new_child
8975 new_child.parent = self
8976 else
8977 _n_exprs.remove_at(i)
8978 end
8979 return
8980 end
8981 end
8982 end
8983
8984 redef fun visit_all(v: Visitor)
8985 do
8986 for n in _n_exprs do
8987 v.enter_visit(n)
8988 end
8989 end
8990
8991 redef fun visit_all_reverse(v: Visitor)
8992 do
8993 do
8994 var i = _n_exprs.length
8995 while i >= 0 do
8996 v.enter_visit(_n_exprs[i])
8997 i = i - 1
8998 end
8999 end
9000 end
9001 end
9002 redef class AParExpr
9003 redef fun n_expr=(n)
9004 do
9005 _n_expr = n
9006 n.parent = self
9007 end
9008
9009 private init empty_init do end
9010
9011 init init_aparexpr (
9012 n_expr: nullable AExpr
9013 )
9014 do
9015 empty_init
9016 _n_expr = n_expr.as(not null)
9017 n_expr.parent = self
9018 end
9019
9020 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9021 do
9022 if _n_expr == old_child then
9023 if new_child != null then
9024 new_child.parent = self
9025 assert new_child isa AExpr
9026 _n_expr = new_child
9027 else
9028 abort
9029 end
9030 return
9031 end
9032 end
9033
9034 redef fun visit_all(v: Visitor)
9035 do
9036 v.enter_visit(_n_expr)
9037 end
9038
9039 redef fun visit_all_reverse(v: Visitor)
9040 do
9041 v.enter_visit(_n_expr)
9042 end
9043 end
9044 redef class AAsCastExpr
9045 redef fun n_expr=(n)
9046 do
9047 _n_expr = n
9048 n.parent = self
9049 end
9050 redef fun n_kwas=(n)
9051 do
9052 _n_kwas = n
9053 n.parent = self
9054 end
9055 redef fun n_type=(n)
9056 do
9057 _n_type = n
9058 n.parent = self
9059 end
9060
9061 private init empty_init do end
9062
9063 init init_aascastexpr (
9064 n_expr: nullable AExpr,
9065 n_kwas: nullable TKwas,
9066 n_type: nullable AType
9067 )
9068 do
9069 empty_init
9070 _n_expr = n_expr.as(not null)
9071 n_expr.parent = self
9072 _n_kwas = n_kwas.as(not null)
9073 n_kwas.parent = self
9074 _n_type = n_type.as(not null)
9075 n_type.parent = self
9076 end
9077
9078 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9079 do
9080 if _n_expr == old_child then
9081 if new_child != null then
9082 new_child.parent = self
9083 assert new_child isa AExpr
9084 _n_expr = new_child
9085 else
9086 abort
9087 end
9088 return
9089 end
9090 if _n_kwas == old_child then
9091 if new_child != null then
9092 new_child.parent = self
9093 assert new_child isa TKwas
9094 _n_kwas = new_child
9095 else
9096 abort
9097 end
9098 return
9099 end
9100 if _n_type == old_child then
9101 if new_child != null then
9102 new_child.parent = self
9103 assert new_child isa AType
9104 _n_type = new_child
9105 else
9106 abort
9107 end
9108 return
9109 end
9110 end
9111
9112 redef fun visit_all(v: Visitor)
9113 do
9114 v.enter_visit(_n_expr)
9115 v.enter_visit(_n_kwas)
9116 v.enter_visit(_n_type)
9117 end
9118
9119 redef fun visit_all_reverse(v: Visitor)
9120 do
9121 v.enter_visit(_n_expr)
9122 v.enter_visit(_n_kwas)
9123 v.enter_visit(_n_type)
9124 end
9125 end
9126 redef class AAsNotnullExpr
9127 redef fun n_expr=(n)
9128 do
9129 _n_expr = n
9130 n.parent = self
9131 end
9132 redef fun n_kwas=(n)
9133 do
9134 _n_kwas = n
9135 n.parent = self
9136 end
9137 redef fun n_kwnot=(n)
9138 do
9139 _n_kwnot = n
9140 n.parent = self
9141 end
9142 redef fun n_kwnull=(n)
9143 do
9144 _n_kwnull = n
9145 n.parent = self
9146 end
9147
9148 private init empty_init do end
9149
9150 init init_aasnotnullexpr (
9151 n_expr: nullable AExpr,
9152 n_kwas: nullable TKwas,
9153 n_kwnot: nullable TKwnot,
9154 n_kwnull: nullable TKwnull
9155 )
9156 do
9157 empty_init
9158 _n_expr = n_expr.as(not null)
9159 n_expr.parent = self
9160 _n_kwas = n_kwas.as(not null)
9161 n_kwas.parent = self
9162 _n_kwnot = n_kwnot.as(not null)
9163 n_kwnot.parent = self
9164 _n_kwnull = n_kwnull.as(not null)
9165 n_kwnull.parent = self
9166 end
9167
9168 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9169 do
9170 if _n_expr == old_child then
9171 if new_child != null then
9172 new_child.parent = self
9173 assert new_child isa AExpr
9174 _n_expr = new_child
9175 else
9176 abort
9177 end
9178 return
9179 end
9180 if _n_kwas == old_child then
9181 if new_child != null then
9182 new_child.parent = self
9183 assert new_child isa TKwas
9184 _n_kwas = new_child
9185 else
9186 abort
9187 end
9188 return
9189 end
9190 if _n_kwnot == old_child then
9191 if new_child != null then
9192 new_child.parent = self
9193 assert new_child isa TKwnot
9194 _n_kwnot = new_child
9195 else
9196 abort
9197 end
9198 return
9199 end
9200 if _n_kwnull == old_child then
9201 if new_child != null then
9202 new_child.parent = self
9203 assert new_child isa TKwnull
9204 _n_kwnull = new_child
9205 else
9206 abort
9207 end
9208 return
9209 end
9210 end
9211
9212 redef fun visit_all(v: Visitor)
9213 do
9214 v.enter_visit(_n_expr)
9215 v.enter_visit(_n_kwas)
9216 v.enter_visit(_n_kwnot)
9217 v.enter_visit(_n_kwnull)
9218 end
9219
9220 redef fun visit_all_reverse(v: Visitor)
9221 do
9222 v.enter_visit(_n_expr)
9223 v.enter_visit(_n_kwas)
9224 v.enter_visit(_n_kwnot)
9225 v.enter_visit(_n_kwnull)
9226 end
9227 end
9228 redef class AIssetAttrExpr
9229 redef fun n_kwisset=(n)
9230 do
9231 _n_kwisset = n
9232 n.parent = self
9233 end
9234 redef fun n_expr=(n)
9235 do
9236 _n_expr = n
9237 n.parent = self
9238 end
9239 redef fun n_id=(n)
9240 do
9241 _n_id = n
9242 n.parent = self
9243 end
9244
9245 private init empty_init do end
9246
9247 init init_aissetattrexpr (
9248 n_kwisset: nullable TKwisset,
9249 n_expr: nullable AExpr,
9250 n_id: nullable TAttrid
9251 )
9252 do
9253 empty_init
9254 _n_kwisset = n_kwisset.as(not null)
9255 n_kwisset.parent = self
9256 _n_expr = n_expr.as(not null)
9257 n_expr.parent = self
9258 _n_id = n_id.as(not null)
9259 n_id.parent = self
9260 end
9261
9262 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9263 do
9264 if _n_kwisset == old_child then
9265 if new_child != null then
9266 new_child.parent = self
9267 assert new_child isa TKwisset
9268 _n_kwisset = new_child
9269 else
9270 abort
9271 end
9272 return
9273 end
9274 if _n_expr == old_child then
9275 if new_child != null then
9276 new_child.parent = self
9277 assert new_child isa AExpr
9278 _n_expr = new_child
9279 else
9280 abort
9281 end
9282 return
9283 end
9284 if _n_id == old_child then
9285 if new_child != null then
9286 new_child.parent = self
9287 assert new_child isa TAttrid
9288 _n_id = new_child
9289 else
9290 abort
9291 end
9292 return
9293 end
9294 end
9295
9296 redef fun visit_all(v: Visitor)
9297 do
9298 v.enter_visit(_n_kwisset)
9299 v.enter_visit(_n_expr)
9300 v.enter_visit(_n_id)
9301 end
9302
9303 redef fun visit_all_reverse(v: Visitor)
9304 do
9305 v.enter_visit(_n_kwisset)
9306 v.enter_visit(_n_expr)
9307 v.enter_visit(_n_id)
9308 end
9309 end
9310 redef class APlusAssignOp
9311 redef fun n_pluseq=(n)
9312 do
9313 _n_pluseq = n
9314 n.parent = self
9315 end
9316
9317 private init empty_init do end
9318
9319 init init_aplusassignop (
9320 n_pluseq: nullable TPluseq
9321 )
9322 do
9323 empty_init
9324 _n_pluseq = n_pluseq.as(not null)
9325 n_pluseq.parent = self
9326 end
9327
9328 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9329 do
9330 if _n_pluseq == old_child then
9331 if new_child != null then
9332 new_child.parent = self
9333 assert new_child isa TPluseq
9334 _n_pluseq = new_child
9335 else
9336 abort
9337 end
9338 return
9339 end
9340 end
9341
9342 redef fun visit_all(v: Visitor)
9343 do
9344 v.enter_visit(_n_pluseq)
9345 end
9346
9347 redef fun visit_all_reverse(v: Visitor)
9348 do
9349 v.enter_visit(_n_pluseq)
9350 end
9351 end
9352 redef class AMinusAssignOp
9353 redef fun n_minuseq=(n)
9354 do
9355 _n_minuseq = n
9356 n.parent = self
9357 end
9358
9359 private init empty_init do end
9360
9361 init init_aminusassignop (
9362 n_minuseq: nullable TMinuseq
9363 )
9364 do
9365 empty_init
9366 _n_minuseq = n_minuseq.as(not null)
9367 n_minuseq.parent = self
9368 end
9369
9370 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9371 do
9372 if _n_minuseq == old_child then
9373 if new_child != null then
9374 new_child.parent = self
9375 assert new_child isa TMinuseq
9376 _n_minuseq = new_child
9377 else
9378 abort
9379 end
9380 return
9381 end
9382 end
9383
9384 redef fun visit_all(v: Visitor)
9385 do
9386 v.enter_visit(_n_minuseq)
9387 end
9388
9389 redef fun visit_all_reverse(v: Visitor)
9390 do
9391 v.enter_visit(_n_minuseq)
9392 end
9393 end
9394 redef class AClosureDef
9395 redef fun n_bang=(n)
9396 do
9397 _n_bang = n
9398 n.parent = self
9399 end
9400 redef fun n_id=(n)
9401 do
9402 _n_id = n
9403 n.parent = self
9404 end
9405 redef fun n_kwdo=(n)
9406 do
9407 _n_kwdo = n
9408 n.parent = self
9409 end
9410 redef fun n_expr=(n)
9411 do
9412 _n_expr = n
9413 if n != null then
9414 n.parent = self
9415 end
9416 end
9417 redef fun n_label=(n)
9418 do
9419 _n_label = n
9420 if n != null then
9421 n.parent = self
9422 end
9423 end
9424
9425 private init empty_init do end
9426
9427 init init_aclosuredef (
9428 n_bang: nullable TBang,
9429 n_id: nullable AClosureId,
9430 n_ids: Collection[Object], # Should be Collection[TId]
9431 n_kwdo: nullable TKwdo,
9432 n_expr: nullable AExpr,
9433 n_label: nullable ALabel
9434 )
9435 do
9436 empty_init
9437 _n_bang = n_bang.as(not null)
9438 n_bang.parent = self
9439 _n_id = n_id.as(not null)
9440 n_id.parent = self
9441 for n in n_ids do
9442 assert n isa TId
9443 _n_ids.add(n)
9444 n.parent = self
9445 end
9446 _n_kwdo = n_kwdo.as(not null)
9447 n_kwdo.parent = self
9448 _n_expr = n_expr
9449 if n_expr != null then
9450 n_expr.parent = self
9451 end
9452 _n_label = n_label
9453 if n_label != null then
9454 n_label.parent = self
9455 end
9456 end
9457
9458 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9459 do
9460 if _n_bang == old_child then
9461 if new_child != null then
9462 new_child.parent = self
9463 assert new_child isa TBang
9464 _n_bang = new_child
9465 else
9466 abort
9467 end
9468 return
9469 end
9470 if _n_id == old_child then
9471 if new_child != null then
9472 new_child.parent = self
9473 assert new_child isa AClosureId
9474 _n_id = new_child
9475 else
9476 abort
9477 end
9478 return
9479 end
9480 for i in [0.._n_ids.length[ do
9481 if _n_ids[i] == old_child then
9482 if new_child != null then
9483 assert new_child isa TId
9484 _n_ids[i] = new_child
9485 new_child.parent = self
9486 else
9487 _n_ids.remove_at(i)
9488 end
9489 return
9490 end
9491 end
9492 if _n_kwdo == old_child then
9493 if new_child != null then
9494 new_child.parent = self
9495 assert new_child isa TKwdo
9496 _n_kwdo = new_child
9497 else
9498 abort
9499 end
9500 return
9501 end
9502 if _n_expr == old_child then
9503 if new_child != null then
9504 new_child.parent = self
9505 assert new_child isa AExpr
9506 _n_expr = new_child
9507 else
9508 _n_expr = null
9509 end
9510 return
9511 end
9512 if _n_label == old_child then
9513 if new_child != null then
9514 new_child.parent = self
9515 assert new_child isa ALabel
9516 _n_label = new_child
9517 else
9518 _n_label = null
9519 end
9520 return
9521 end
9522 end
9523
9524 redef fun visit_all(v: Visitor)
9525 do
9526 v.enter_visit(_n_bang)
9527 v.enter_visit(_n_id)
9528 for n in _n_ids do
9529 v.enter_visit(n)
9530 end
9531 v.enter_visit(_n_kwdo)
9532 if _n_expr != null then
9533 v.enter_visit(_n_expr.as(not null))
9534 end
9535 if _n_label != null then
9536 v.enter_visit(_n_label.as(not null))
9537 end
9538 end
9539
9540 redef fun visit_all_reverse(v: Visitor)
9541 do
9542 v.enter_visit(_n_bang)
9543 v.enter_visit(_n_id)
9544 do
9545 var i = _n_ids.length
9546 while i >= 0 do
9547 v.enter_visit(_n_ids[i])
9548 i = i - 1
9549 end
9550 end
9551 v.enter_visit(_n_kwdo)
9552 if _n_expr != null then
9553 v.enter_visit(_n_expr.as(not null))
9554 end
9555 if _n_label != null then
9556 v.enter_visit(_n_label.as(not null))
9557 end
9558 end
9559 end
9560 redef class ASimpleClosureId
9561 redef fun n_id=(n)
9562 do
9563 _n_id = n
9564 n.parent = self
9565 end
9566
9567 private init empty_init do end
9568
9569 init init_asimpleclosureid (
9570 n_id: nullable TId
9571 )
9572 do
9573 empty_init
9574 _n_id = n_id.as(not null)
9575 n_id.parent = self
9576 end
9577
9578 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9579 do
9580 if _n_id == old_child then
9581 if new_child != null then
9582 new_child.parent = self
9583 assert new_child isa TId
9584 _n_id = new_child
9585 else
9586 abort
9587 end
9588 return
9589 end
9590 end
9591
9592 redef fun visit_all(v: Visitor)
9593 do
9594 v.enter_visit(_n_id)
9595 end
9596
9597 redef fun visit_all_reverse(v: Visitor)
9598 do
9599 v.enter_visit(_n_id)
9600 end
9601 end
9602 redef class ABreakClosureId
9603 redef fun n_kwbreak=(n)
9604 do
9605 _n_kwbreak = n
9606 n.parent = self
9607 end
9608
9609 private init empty_init do end
9610
9611 init init_abreakclosureid (
9612 n_kwbreak: nullable TKwbreak
9613 )
9614 do
9615 empty_init
9616 _n_kwbreak = n_kwbreak.as(not null)
9617 n_kwbreak.parent = self
9618 end
9619
9620 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9621 do
9622 if _n_kwbreak == old_child then
9623 if new_child != null then
9624 new_child.parent = self
9625 assert new_child isa TKwbreak
9626 _n_kwbreak = new_child
9627 else
9628 abort
9629 end
9630 return
9631 end
9632 end
9633
9634 redef fun visit_all(v: Visitor)
9635 do
9636 v.enter_visit(_n_kwbreak)
9637 end
9638
9639 redef fun visit_all_reverse(v: Visitor)
9640 do
9641 v.enter_visit(_n_kwbreak)
9642 end
9643 end
9644 redef class AQualified
9645 redef fun n_classid=(n)
9646 do
9647 _n_classid = n
9648 if n != null then
9649 n.parent = self
9650 end
9651 end
9652
9653 private init empty_init do end
9654
9655 init init_aqualified (
9656 n_id: Collection[Object], # Should be Collection[TId]
9657 n_classid: nullable TClassid
9658 )
9659 do
9660 empty_init
9661 for n in n_id do
9662 assert n isa TId
9663 _n_id.add(n)
9664 n.parent = self
9665 end
9666 _n_classid = n_classid
9667 if n_classid != null then
9668 n_classid.parent = self
9669 end
9670 end
9671
9672 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9673 do
9674 for i in [0.._n_id.length[ do
9675 if _n_id[i] == old_child then
9676 if new_child != null then
9677 assert new_child isa TId
9678 _n_id[i] = new_child
9679 new_child.parent = self
9680 else
9681 _n_id.remove_at(i)
9682 end
9683 return
9684 end
9685 end
9686 if _n_classid == old_child then
9687 if new_child != null then
9688 new_child.parent = self
9689 assert new_child isa TClassid
9690 _n_classid = new_child
9691 else
9692 _n_classid = null
9693 end
9694 return
9695 end
9696 end
9697
9698 redef fun visit_all(v: Visitor)
9699 do
9700 for n in _n_id do
9701 v.enter_visit(n)
9702 end
9703 if _n_classid != null then
9704 v.enter_visit(_n_classid.as(not null))
9705 end
9706 end
9707
9708 redef fun visit_all_reverse(v: Visitor)
9709 do
9710 do
9711 var i = _n_id.length
9712 while i >= 0 do
9713 v.enter_visit(_n_id[i])
9714 i = i - 1
9715 end
9716 end
9717 if _n_classid != null then
9718 v.enter_visit(_n_classid.as(not null))
9719 end
9720 end
9721 end
9722 redef class ADoc
9723
9724 private init empty_init do end
9725
9726 init init_adoc (
9727 n_comment: Collection[Object] # Should be Collection[TComment]
9728 )
9729 do
9730 empty_init
9731 for n in n_comment do
9732 assert n isa TComment
9733 _n_comment.add(n)
9734 n.parent = self
9735 end
9736 end
9737
9738 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9739 do
9740 for i in [0.._n_comment.length[ do
9741 if _n_comment[i] == old_child then
9742 if new_child != null then
9743 assert new_child isa TComment
9744 _n_comment[i] = new_child
9745 new_child.parent = self
9746 else
9747 _n_comment.remove_at(i)
9748 end
9749 return
9750 end
9751 end
9752 end
9753
9754 redef fun visit_all(v: Visitor)
9755 do
9756 for n in _n_comment do
9757 v.enter_visit(n)
9758 end
9759 end
9760
9761 redef fun visit_all_reverse(v: Visitor)
9762 do
9763 do
9764 var i = _n_comment.length
9765 while i >= 0 do
9766 v.enter_visit(_n_comment[i])
9767 i = i - 1
9768 end
9769 end
9770 end
9771 end
9772
9773 redef class Start
9774 init(
9775 n_base: nullable AModule,
9776 n_eof: EOF)
9777 do
9778 _n_base = n_base
9779 _n_eof = n_eof
9780 end
9781
9782 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9783 do
9784 if _n_base == old_child then
9785 if new_child == null then
9786 else
9787 new_child.parent = self
9788 assert new_child isa AModule
9789 _n_base = new_child
9790 end
9791 old_child.parent = null
9792 return
9793 end
9794 end
9795
9796 redef fun visit_all(v: Visitor)
9797 do
9798 if _n_base != null then
9799 v.enter_visit(_n_base.as(not null))
9800 end
9801 v.enter_visit(_n_eof)
9802 end
9803
9804 redef fun visit_all_reverse(v: Visitor)
9805 do
9806 v.enter_visit(_n_eof)
9807 if _n_base != null then
9808 v.enter_visit(_n_base.as(not null))
9809 end
9810 end
9811 end