parser: oneline assignment for 'return' and 'continue'
[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 if n != null then
4332 n.parent = self
4333 end
4334 end
4335 redef fun n_expr=(n)
4336 do
4337 _n_expr = n
4338 if n != null then
4339 n.parent = self
4340 end
4341 end
4342
4343 private init empty_init do end
4344
4345 init init_areturnexpr (
4346 n_kwreturn: nullable TKwreturn,
4347 n_expr: nullable AExpr
4348 )
4349 do
4350 empty_init
4351 _n_kwreturn = n_kwreturn
4352 if n_kwreturn != null then
4353 n_kwreturn.parent = self
4354 end
4355 _n_expr = n_expr
4356 if n_expr != null then
4357 n_expr.parent = self
4358 end
4359 end
4360
4361 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4362 do
4363 if _n_kwreturn == old_child then
4364 if new_child != null then
4365 new_child.parent = self
4366 assert new_child isa TKwreturn
4367 _n_kwreturn = new_child
4368 else
4369 _n_kwreturn = null
4370 end
4371 return
4372 end
4373 if _n_expr == old_child then
4374 if new_child != null then
4375 new_child.parent = self
4376 assert new_child isa AExpr
4377 _n_expr = new_child
4378 else
4379 _n_expr = null
4380 end
4381 return
4382 end
4383 end
4384
4385 redef fun visit_all(v: Visitor)
4386 do
4387 if _n_kwreturn != null then
4388 v.enter_visit(_n_kwreturn.as(not null))
4389 end
4390 if _n_expr != null then
4391 v.enter_visit(_n_expr.as(not null))
4392 end
4393 end
4394
4395 redef fun visit_all_reverse(v: Visitor)
4396 do
4397 if _n_kwreturn != null then
4398 v.enter_visit(_n_kwreturn.as(not null))
4399 end
4400 if _n_expr != null then
4401 v.enter_visit(_n_expr.as(not null))
4402 end
4403 end
4404 end
4405 redef class ABreakExpr
4406 redef fun n_kwbreak=(n)
4407 do
4408 _n_kwbreak = n
4409 n.parent = self
4410 end
4411 redef fun n_label=(n)
4412 do
4413 _n_label = n
4414 if n != null then
4415 n.parent = self
4416 end
4417 end
4418 redef fun n_expr=(n)
4419 do
4420 _n_expr = n
4421 if n != null then
4422 n.parent = self
4423 end
4424 end
4425
4426 private init empty_init do end
4427
4428 init init_abreakexpr (
4429 n_kwbreak: nullable TKwbreak,
4430 n_label: nullable ALabel,
4431 n_expr: nullable AExpr
4432 )
4433 do
4434 empty_init
4435 _n_kwbreak = n_kwbreak.as(not null)
4436 n_kwbreak.parent = self
4437 _n_label = n_label
4438 if n_label != null then
4439 n_label.parent = self
4440 end
4441 _n_expr = n_expr
4442 if n_expr != null then
4443 n_expr.parent = self
4444 end
4445 end
4446
4447 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4448 do
4449 if _n_kwbreak == old_child then
4450 if new_child != null then
4451 new_child.parent = self
4452 assert new_child isa TKwbreak
4453 _n_kwbreak = new_child
4454 else
4455 abort
4456 end
4457 return
4458 end
4459 if _n_label == old_child then
4460 if new_child != null then
4461 new_child.parent = self
4462 assert new_child isa ALabel
4463 _n_label = new_child
4464 else
4465 _n_label = null
4466 end
4467 return
4468 end
4469 if _n_expr == old_child then
4470 if new_child != null then
4471 new_child.parent = self
4472 assert new_child isa AExpr
4473 _n_expr = new_child
4474 else
4475 _n_expr = null
4476 end
4477 return
4478 end
4479 end
4480
4481 redef fun visit_all(v: Visitor)
4482 do
4483 v.enter_visit(_n_kwbreak)
4484 if _n_label != null then
4485 v.enter_visit(_n_label.as(not null))
4486 end
4487 if _n_expr != null then
4488 v.enter_visit(_n_expr.as(not null))
4489 end
4490 end
4491
4492 redef fun visit_all_reverse(v: Visitor)
4493 do
4494 v.enter_visit(_n_kwbreak)
4495 if _n_label != null then
4496 v.enter_visit(_n_label.as(not null))
4497 end
4498 if _n_expr != null then
4499 v.enter_visit(_n_expr.as(not null))
4500 end
4501 end
4502 end
4503 redef class AAbortExpr
4504 redef fun n_kwabort=(n)
4505 do
4506 _n_kwabort = n
4507 n.parent = self
4508 end
4509
4510 private init empty_init do end
4511
4512 init init_aabortexpr (
4513 n_kwabort: nullable TKwabort
4514 )
4515 do
4516 empty_init
4517 _n_kwabort = n_kwabort.as(not null)
4518 n_kwabort.parent = self
4519 end
4520
4521 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4522 do
4523 if _n_kwabort == old_child then
4524 if new_child != null then
4525 new_child.parent = self
4526 assert new_child isa TKwabort
4527 _n_kwabort = new_child
4528 else
4529 abort
4530 end
4531 return
4532 end
4533 end
4534
4535 redef fun visit_all(v: Visitor)
4536 do
4537 v.enter_visit(_n_kwabort)
4538 end
4539
4540 redef fun visit_all_reverse(v: Visitor)
4541 do
4542 v.enter_visit(_n_kwabort)
4543 end
4544 end
4545 redef class AContinueExpr
4546 redef fun n_kwcontinue=(n)
4547 do
4548 _n_kwcontinue = n
4549 if n != null then
4550 n.parent = self
4551 end
4552 end
4553 redef fun n_label=(n)
4554 do
4555 _n_label = n
4556 if n != null then
4557 n.parent = self
4558 end
4559 end
4560 redef fun n_expr=(n)
4561 do
4562 _n_expr = n
4563 if n != null then
4564 n.parent = self
4565 end
4566 end
4567
4568 private init empty_init do end
4569
4570 init init_acontinueexpr (
4571 n_kwcontinue: nullable TKwcontinue,
4572 n_label: nullable ALabel,
4573 n_expr: nullable AExpr
4574 )
4575 do
4576 empty_init
4577 _n_kwcontinue = n_kwcontinue
4578 if n_kwcontinue != null then
4579 n_kwcontinue.parent = self
4580 end
4581 _n_label = n_label
4582 if n_label != null then
4583 n_label.parent = self
4584 end
4585 _n_expr = n_expr
4586 if n_expr != null then
4587 n_expr.parent = self
4588 end
4589 end
4590
4591 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4592 do
4593 if _n_kwcontinue == old_child then
4594 if new_child != null then
4595 new_child.parent = self
4596 assert new_child isa TKwcontinue
4597 _n_kwcontinue = new_child
4598 else
4599 _n_kwcontinue = null
4600 end
4601 return
4602 end
4603 if _n_label == old_child then
4604 if new_child != null then
4605 new_child.parent = self
4606 assert new_child isa ALabel
4607 _n_label = new_child
4608 else
4609 _n_label = null
4610 end
4611 return
4612 end
4613 if _n_expr == old_child then
4614 if new_child != null then
4615 new_child.parent = self
4616 assert new_child isa AExpr
4617 _n_expr = new_child
4618 else
4619 _n_expr = null
4620 end
4621 return
4622 end
4623 end
4624
4625 redef fun visit_all(v: Visitor)
4626 do
4627 if _n_kwcontinue != null then
4628 v.enter_visit(_n_kwcontinue.as(not null))
4629 end
4630 if _n_label != null then
4631 v.enter_visit(_n_label.as(not null))
4632 end
4633 if _n_expr != null then
4634 v.enter_visit(_n_expr.as(not null))
4635 end
4636 end
4637
4638 redef fun visit_all_reverse(v: Visitor)
4639 do
4640 if _n_kwcontinue != null then
4641 v.enter_visit(_n_kwcontinue.as(not null))
4642 end
4643 if _n_label != null then
4644 v.enter_visit(_n_label.as(not null))
4645 end
4646 if _n_expr != null then
4647 v.enter_visit(_n_expr.as(not null))
4648 end
4649 end
4650 end
4651 redef class ADoExpr
4652 redef fun n_kwdo=(n)
4653 do
4654 _n_kwdo = n
4655 n.parent = self
4656 end
4657 redef fun n_block=(n)
4658 do
4659 _n_block = n
4660 if n != null then
4661 n.parent = self
4662 end
4663 end
4664 redef fun n_label=(n)
4665 do
4666 _n_label = n
4667 if n != null then
4668 n.parent = self
4669 end
4670 end
4671
4672 private init empty_init do end
4673
4674 init init_adoexpr (
4675 n_kwdo: nullable TKwdo,
4676 n_block: nullable AExpr,
4677 n_label: nullable ALabel
4678 )
4679 do
4680 empty_init
4681 _n_kwdo = n_kwdo.as(not null)
4682 n_kwdo.parent = self
4683 _n_block = n_block
4684 if n_block != null then
4685 n_block.parent = self
4686 end
4687 _n_label = n_label
4688 if n_label != null then
4689 n_label.parent = self
4690 end
4691 end
4692
4693 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4694 do
4695 if _n_kwdo == old_child then
4696 if new_child != null then
4697 new_child.parent = self
4698 assert new_child isa TKwdo
4699 _n_kwdo = new_child
4700 else
4701 abort
4702 end
4703 return
4704 end
4705 if _n_block == old_child then
4706 if new_child != null then
4707 new_child.parent = self
4708 assert new_child isa AExpr
4709 _n_block = new_child
4710 else
4711 _n_block = null
4712 end
4713 return
4714 end
4715 if _n_label == old_child then
4716 if new_child != null then
4717 new_child.parent = self
4718 assert new_child isa ALabel
4719 _n_label = new_child
4720 else
4721 _n_label = null
4722 end
4723 return
4724 end
4725 end
4726
4727 redef fun visit_all(v: Visitor)
4728 do
4729 v.enter_visit(_n_kwdo)
4730 if _n_block != null then
4731 v.enter_visit(_n_block.as(not null))
4732 end
4733 if _n_label != null then
4734 v.enter_visit(_n_label.as(not null))
4735 end
4736 end
4737
4738 redef fun visit_all_reverse(v: Visitor)
4739 do
4740 v.enter_visit(_n_kwdo)
4741 if _n_block != null then
4742 v.enter_visit(_n_block.as(not null))
4743 end
4744 if _n_label != null then
4745 v.enter_visit(_n_label.as(not null))
4746 end
4747 end
4748 end
4749 redef class AIfExpr
4750 redef fun n_kwif=(n)
4751 do
4752 _n_kwif = n
4753 n.parent = self
4754 end
4755 redef fun n_expr=(n)
4756 do
4757 _n_expr = n
4758 n.parent = self
4759 end
4760 redef fun n_then=(n)
4761 do
4762 _n_then = n
4763 if n != null then
4764 n.parent = self
4765 end
4766 end
4767 redef fun n_else=(n)
4768 do
4769 _n_else = n
4770 if n != null then
4771 n.parent = self
4772 end
4773 end
4774
4775 private init empty_init do end
4776
4777 init init_aifexpr (
4778 n_kwif: nullable TKwif,
4779 n_expr: nullable AExpr,
4780 n_then: nullable AExpr,
4781 n_else: nullable AExpr
4782 )
4783 do
4784 empty_init
4785 _n_kwif = n_kwif.as(not null)
4786 n_kwif.parent = self
4787 _n_expr = n_expr.as(not null)
4788 n_expr.parent = self
4789 _n_then = n_then
4790 if n_then != null then
4791 n_then.parent = self
4792 end
4793 _n_else = n_else
4794 if n_else != null then
4795 n_else.parent = self
4796 end
4797 end
4798
4799 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4800 do
4801 if _n_kwif == old_child then
4802 if new_child != null then
4803 new_child.parent = self
4804 assert new_child isa TKwif
4805 _n_kwif = new_child
4806 else
4807 abort
4808 end
4809 return
4810 end
4811 if _n_expr == old_child then
4812 if new_child != null then
4813 new_child.parent = self
4814 assert new_child isa AExpr
4815 _n_expr = new_child
4816 else
4817 abort
4818 end
4819 return
4820 end
4821 if _n_then == old_child then
4822 if new_child != null then
4823 new_child.parent = self
4824 assert new_child isa AExpr
4825 _n_then = new_child
4826 else
4827 _n_then = null
4828 end
4829 return
4830 end
4831 if _n_else == old_child then
4832 if new_child != null then
4833 new_child.parent = self
4834 assert new_child isa AExpr
4835 _n_else = new_child
4836 else
4837 _n_else = null
4838 end
4839 return
4840 end
4841 end
4842
4843 redef fun visit_all(v: Visitor)
4844 do
4845 v.enter_visit(_n_kwif)
4846 v.enter_visit(_n_expr)
4847 if _n_then != null then
4848 v.enter_visit(_n_then.as(not null))
4849 end
4850 if _n_else != null then
4851 v.enter_visit(_n_else.as(not null))
4852 end
4853 end
4854
4855 redef fun visit_all_reverse(v: Visitor)
4856 do
4857 v.enter_visit(_n_kwif)
4858 v.enter_visit(_n_expr)
4859 if _n_then != null then
4860 v.enter_visit(_n_then.as(not null))
4861 end
4862 if _n_else != null then
4863 v.enter_visit(_n_else.as(not null))
4864 end
4865 end
4866 end
4867 redef class AIfexprExpr
4868 redef fun n_kwif=(n)
4869 do
4870 _n_kwif = n
4871 n.parent = self
4872 end
4873 redef fun n_expr=(n)
4874 do
4875 _n_expr = n
4876 n.parent = self
4877 end
4878 redef fun n_kwthen=(n)
4879 do
4880 _n_kwthen = n
4881 n.parent = self
4882 end
4883 redef fun n_then=(n)
4884 do
4885 _n_then = n
4886 n.parent = self
4887 end
4888 redef fun n_kwelse=(n)
4889 do
4890 _n_kwelse = n
4891 n.parent = self
4892 end
4893 redef fun n_else=(n)
4894 do
4895 _n_else = n
4896 n.parent = self
4897 end
4898
4899 private init empty_init do end
4900
4901 init init_aifexprexpr (
4902 n_kwif: nullable TKwif,
4903 n_expr: nullable AExpr,
4904 n_kwthen: nullable TKwthen,
4905 n_then: nullable AExpr,
4906 n_kwelse: nullable TKwelse,
4907 n_else: nullable AExpr
4908 )
4909 do
4910 empty_init
4911 _n_kwif = n_kwif.as(not null)
4912 n_kwif.parent = self
4913 _n_expr = n_expr.as(not null)
4914 n_expr.parent = self
4915 _n_kwthen = n_kwthen.as(not null)
4916 n_kwthen.parent = self
4917 _n_then = n_then.as(not null)
4918 n_then.parent = self
4919 _n_kwelse = n_kwelse.as(not null)
4920 n_kwelse.parent = self
4921 _n_else = n_else.as(not null)
4922 n_else.parent = self
4923 end
4924
4925 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4926 do
4927 if _n_kwif == old_child then
4928 if new_child != null then
4929 new_child.parent = self
4930 assert new_child isa TKwif
4931 _n_kwif = new_child
4932 else
4933 abort
4934 end
4935 return
4936 end
4937 if _n_expr == old_child then
4938 if new_child != null then
4939 new_child.parent = self
4940 assert new_child isa AExpr
4941 _n_expr = new_child
4942 else
4943 abort
4944 end
4945 return
4946 end
4947 if _n_kwthen == old_child then
4948 if new_child != null then
4949 new_child.parent = self
4950 assert new_child isa TKwthen
4951 _n_kwthen = new_child
4952 else
4953 abort
4954 end
4955 return
4956 end
4957 if _n_then == old_child then
4958 if new_child != null then
4959 new_child.parent = self
4960 assert new_child isa AExpr
4961 _n_then = new_child
4962 else
4963 abort
4964 end
4965 return
4966 end
4967 if _n_kwelse == old_child then
4968 if new_child != null then
4969 new_child.parent = self
4970 assert new_child isa TKwelse
4971 _n_kwelse = new_child
4972 else
4973 abort
4974 end
4975 return
4976 end
4977 if _n_else == old_child then
4978 if new_child != null then
4979 new_child.parent = self
4980 assert new_child isa AExpr
4981 _n_else = new_child
4982 else
4983 abort
4984 end
4985 return
4986 end
4987 end
4988
4989 redef fun visit_all(v: Visitor)
4990 do
4991 v.enter_visit(_n_kwif)
4992 v.enter_visit(_n_expr)
4993 v.enter_visit(_n_kwthen)
4994 v.enter_visit(_n_then)
4995 v.enter_visit(_n_kwelse)
4996 v.enter_visit(_n_else)
4997 end
4998
4999 redef fun visit_all_reverse(v: Visitor)
5000 do
5001 v.enter_visit(_n_kwif)
5002 v.enter_visit(_n_expr)
5003 v.enter_visit(_n_kwthen)
5004 v.enter_visit(_n_then)
5005 v.enter_visit(_n_kwelse)
5006 v.enter_visit(_n_else)
5007 end
5008 end
5009 redef class AWhileExpr
5010 redef fun n_kwwhile=(n)
5011 do
5012 _n_kwwhile = n
5013 n.parent = self
5014 end
5015 redef fun n_expr=(n)
5016 do
5017 _n_expr = n
5018 n.parent = self
5019 end
5020 redef fun n_kwdo=(n)
5021 do
5022 _n_kwdo = n
5023 n.parent = self
5024 end
5025 redef fun n_block=(n)
5026 do
5027 _n_block = n
5028 if n != null then
5029 n.parent = self
5030 end
5031 end
5032 redef fun n_label=(n)
5033 do
5034 _n_label = n
5035 if n != null then
5036 n.parent = self
5037 end
5038 end
5039
5040 private init empty_init do end
5041
5042 init init_awhileexpr (
5043 n_kwwhile: nullable TKwwhile,
5044 n_expr: nullable AExpr,
5045 n_kwdo: nullable TKwdo,
5046 n_block: nullable AExpr,
5047 n_label: nullable ALabel
5048 )
5049 do
5050 empty_init
5051 _n_kwwhile = n_kwwhile.as(not null)
5052 n_kwwhile.parent = self
5053 _n_expr = n_expr.as(not null)
5054 n_expr.parent = self
5055 _n_kwdo = n_kwdo.as(not null)
5056 n_kwdo.parent = self
5057 _n_block = n_block
5058 if n_block != null then
5059 n_block.parent = self
5060 end
5061 _n_label = n_label
5062 if n_label != null then
5063 n_label.parent = self
5064 end
5065 end
5066
5067 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5068 do
5069 if _n_kwwhile == old_child then
5070 if new_child != null then
5071 new_child.parent = self
5072 assert new_child isa TKwwhile
5073 _n_kwwhile = new_child
5074 else
5075 abort
5076 end
5077 return
5078 end
5079 if _n_expr == old_child then
5080 if new_child != null then
5081 new_child.parent = self
5082 assert new_child isa AExpr
5083 _n_expr = new_child
5084 else
5085 abort
5086 end
5087 return
5088 end
5089 if _n_kwdo == old_child then
5090 if new_child != null then
5091 new_child.parent = self
5092 assert new_child isa TKwdo
5093 _n_kwdo = new_child
5094 else
5095 abort
5096 end
5097 return
5098 end
5099 if _n_block == old_child then
5100 if new_child != null then
5101 new_child.parent = self
5102 assert new_child isa AExpr
5103 _n_block = new_child
5104 else
5105 _n_block = null
5106 end
5107 return
5108 end
5109 if _n_label == old_child then
5110 if new_child != null then
5111 new_child.parent = self
5112 assert new_child isa ALabel
5113 _n_label = new_child
5114 else
5115 _n_label = null
5116 end
5117 return
5118 end
5119 end
5120
5121 redef fun visit_all(v: Visitor)
5122 do
5123 v.enter_visit(_n_kwwhile)
5124 v.enter_visit(_n_expr)
5125 v.enter_visit(_n_kwdo)
5126 if _n_block != null then
5127 v.enter_visit(_n_block.as(not null))
5128 end
5129 if _n_label != null then
5130 v.enter_visit(_n_label.as(not null))
5131 end
5132 end
5133
5134 redef fun visit_all_reverse(v: Visitor)
5135 do
5136 v.enter_visit(_n_kwwhile)
5137 v.enter_visit(_n_expr)
5138 v.enter_visit(_n_kwdo)
5139 if _n_block != null then
5140 v.enter_visit(_n_block.as(not null))
5141 end
5142 if _n_label != null then
5143 v.enter_visit(_n_label.as(not null))
5144 end
5145 end
5146 end
5147 redef class AForExpr
5148 redef fun n_kwfor=(n)
5149 do
5150 _n_kwfor = n
5151 n.parent = self
5152 end
5153 redef fun n_id=(n)
5154 do
5155 _n_id = n
5156 n.parent = self
5157 end
5158 redef fun n_expr=(n)
5159 do
5160 _n_expr = n
5161 n.parent = self
5162 end
5163 redef fun n_kwdo=(n)
5164 do
5165 _n_kwdo = n
5166 n.parent = self
5167 end
5168 redef fun n_block=(n)
5169 do
5170 _n_block = n
5171 if n != null then
5172 n.parent = self
5173 end
5174 end
5175 redef fun n_label=(n)
5176 do
5177 _n_label = n
5178 if n != null then
5179 n.parent = self
5180 end
5181 end
5182
5183 private init empty_init do end
5184
5185 init init_aforexpr (
5186 n_kwfor: nullable TKwfor,
5187 n_id: nullable TId,
5188 n_expr: nullable AExpr,
5189 n_kwdo: nullable TKwdo,
5190 n_block: nullable AExpr,
5191 n_label: nullable ALabel
5192 )
5193 do
5194 empty_init
5195 _n_kwfor = n_kwfor.as(not null)
5196 n_kwfor.parent = self
5197 _n_id = n_id.as(not null)
5198 n_id.parent = self
5199 _n_expr = n_expr.as(not null)
5200 n_expr.parent = self
5201 _n_kwdo = n_kwdo.as(not null)
5202 n_kwdo.parent = self
5203 _n_block = n_block
5204 if n_block != null then
5205 n_block.parent = self
5206 end
5207 _n_label = n_label
5208 if n_label != null then
5209 n_label.parent = self
5210 end
5211 end
5212
5213 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5214 do
5215 if _n_kwfor == old_child then
5216 if new_child != null then
5217 new_child.parent = self
5218 assert new_child isa TKwfor
5219 _n_kwfor = new_child
5220 else
5221 abort
5222 end
5223 return
5224 end
5225 if _n_id == old_child then
5226 if new_child != null then
5227 new_child.parent = self
5228 assert new_child isa TId
5229 _n_id = new_child
5230 else
5231 abort
5232 end
5233 return
5234 end
5235 if _n_expr == old_child then
5236 if new_child != null then
5237 new_child.parent = self
5238 assert new_child isa AExpr
5239 _n_expr = new_child
5240 else
5241 abort
5242 end
5243 return
5244 end
5245 if _n_kwdo == old_child then
5246 if new_child != null then
5247 new_child.parent = self
5248 assert new_child isa TKwdo
5249 _n_kwdo = new_child
5250 else
5251 abort
5252 end
5253 return
5254 end
5255 if _n_block == old_child then
5256 if new_child != null then
5257 new_child.parent = self
5258 assert new_child isa AExpr
5259 _n_block = new_child
5260 else
5261 _n_block = null
5262 end
5263 return
5264 end
5265 if _n_label == old_child then
5266 if new_child != null then
5267 new_child.parent = self
5268 assert new_child isa ALabel
5269 _n_label = new_child
5270 else
5271 _n_label = null
5272 end
5273 return
5274 end
5275 end
5276
5277 redef fun visit_all(v: Visitor)
5278 do
5279 v.enter_visit(_n_kwfor)
5280 v.enter_visit(_n_id)
5281 v.enter_visit(_n_expr)
5282 v.enter_visit(_n_kwdo)
5283 if _n_block != null then
5284 v.enter_visit(_n_block.as(not null))
5285 end
5286 if _n_label != null then
5287 v.enter_visit(_n_label.as(not null))
5288 end
5289 end
5290
5291 redef fun visit_all_reverse(v: Visitor)
5292 do
5293 v.enter_visit(_n_kwfor)
5294 v.enter_visit(_n_id)
5295 v.enter_visit(_n_expr)
5296 v.enter_visit(_n_kwdo)
5297 if _n_block != null then
5298 v.enter_visit(_n_block.as(not null))
5299 end
5300 if _n_label != null then
5301 v.enter_visit(_n_label.as(not null))
5302 end
5303 end
5304 end
5305 redef class AAssertExpr
5306 redef fun n_kwassert=(n)
5307 do
5308 _n_kwassert = n
5309 n.parent = self
5310 end
5311 redef fun n_id=(n)
5312 do
5313 _n_id = n
5314 if n != null then
5315 n.parent = self
5316 end
5317 end
5318 redef fun n_expr=(n)
5319 do
5320 _n_expr = n
5321 n.parent = self
5322 end
5323
5324 private init empty_init do end
5325
5326 init init_aassertexpr (
5327 n_kwassert: nullable TKwassert,
5328 n_id: nullable TId,
5329 n_expr: nullable AExpr
5330 )
5331 do
5332 empty_init
5333 _n_kwassert = n_kwassert.as(not null)
5334 n_kwassert.parent = self
5335 _n_id = n_id
5336 if n_id != null then
5337 n_id.parent = self
5338 end
5339 _n_expr = n_expr.as(not null)
5340 n_expr.parent = self
5341 end
5342
5343 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5344 do
5345 if _n_kwassert == old_child then
5346 if new_child != null then
5347 new_child.parent = self
5348 assert new_child isa TKwassert
5349 _n_kwassert = new_child
5350 else
5351 abort
5352 end
5353 return
5354 end
5355 if _n_id == old_child then
5356 if new_child != null then
5357 new_child.parent = self
5358 assert new_child isa TId
5359 _n_id = new_child
5360 else
5361 _n_id = null
5362 end
5363 return
5364 end
5365 if _n_expr == old_child then
5366 if new_child != null then
5367 new_child.parent = self
5368 assert new_child isa AExpr
5369 _n_expr = new_child
5370 else
5371 abort
5372 end
5373 return
5374 end
5375 end
5376
5377 redef fun visit_all(v: Visitor)
5378 do
5379 v.enter_visit(_n_kwassert)
5380 if _n_id != null then
5381 v.enter_visit(_n_id.as(not null))
5382 end
5383 v.enter_visit(_n_expr)
5384 end
5385
5386 redef fun visit_all_reverse(v: Visitor)
5387 do
5388 v.enter_visit(_n_kwassert)
5389 if _n_id != null then
5390 v.enter_visit(_n_id.as(not null))
5391 end
5392 v.enter_visit(_n_expr)
5393 end
5394 end
5395 redef class AOnceExpr
5396 redef fun n_kwonce=(n)
5397 do
5398 _n_kwonce = n
5399 n.parent = self
5400 end
5401 redef fun n_expr=(n)
5402 do
5403 _n_expr = n
5404 n.parent = self
5405 end
5406
5407 private init empty_init do end
5408
5409 init init_aonceexpr (
5410 n_kwonce: nullable TKwonce,
5411 n_expr: nullable AExpr
5412 )
5413 do
5414 empty_init
5415 _n_kwonce = n_kwonce.as(not null)
5416 n_kwonce.parent = self
5417 _n_expr = n_expr.as(not null)
5418 n_expr.parent = self
5419 end
5420
5421 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5422 do
5423 if _n_kwonce == old_child then
5424 if new_child != null then
5425 new_child.parent = self
5426 assert new_child isa TKwonce
5427 _n_kwonce = new_child
5428 else
5429 abort
5430 end
5431 return
5432 end
5433 if _n_expr == old_child then
5434 if new_child != null then
5435 new_child.parent = self
5436 assert new_child isa AExpr
5437 _n_expr = new_child
5438 else
5439 abort
5440 end
5441 return
5442 end
5443 end
5444
5445 redef fun visit_all(v: Visitor)
5446 do
5447 v.enter_visit(_n_kwonce)
5448 v.enter_visit(_n_expr)
5449 end
5450
5451 redef fun visit_all_reverse(v: Visitor)
5452 do
5453 v.enter_visit(_n_kwonce)
5454 v.enter_visit(_n_expr)
5455 end
5456 end
5457 redef class ASendExpr
5458 redef fun n_expr=(n)
5459 do
5460 _n_expr = n
5461 n.parent = self
5462 end
5463
5464 private init empty_init do end
5465
5466 init init_asendexpr (
5467 n_expr: nullable AExpr
5468 )
5469 do
5470 empty_init
5471 _n_expr = n_expr.as(not null)
5472 n_expr.parent = self
5473 end
5474
5475 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5476 do
5477 if _n_expr == old_child then
5478 if new_child != null then
5479 new_child.parent = self
5480 assert new_child isa AExpr
5481 _n_expr = new_child
5482 else
5483 abort
5484 end
5485 return
5486 end
5487 end
5488
5489 redef fun visit_all(v: Visitor)
5490 do
5491 v.enter_visit(_n_expr)
5492 end
5493
5494 redef fun visit_all_reverse(v: Visitor)
5495 do
5496 v.enter_visit(_n_expr)
5497 end
5498 end
5499 redef class ABinopExpr
5500 redef fun n_expr=(n)
5501 do
5502 _n_expr = n
5503 n.parent = self
5504 end
5505 redef fun n_expr2=(n)
5506 do
5507 _n_expr2 = n
5508 n.parent = self
5509 end
5510
5511 private init empty_init do end
5512
5513 init init_abinopexpr (
5514 n_expr: nullable AExpr,
5515 n_expr2: nullable AExpr
5516 )
5517 do
5518 empty_init
5519 _n_expr = n_expr.as(not null)
5520 n_expr.parent = self
5521 _n_expr2 = n_expr2.as(not null)
5522 n_expr2.parent = self
5523 end
5524
5525 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5526 do
5527 if _n_expr == old_child then
5528 if new_child != null then
5529 new_child.parent = self
5530 assert new_child isa AExpr
5531 _n_expr = new_child
5532 else
5533 abort
5534 end
5535 return
5536 end
5537 if _n_expr2 == old_child then
5538 if new_child != null then
5539 new_child.parent = self
5540 assert new_child isa AExpr
5541 _n_expr2 = new_child
5542 else
5543 abort
5544 end
5545 return
5546 end
5547 end
5548
5549 redef fun visit_all(v: Visitor)
5550 do
5551 v.enter_visit(_n_expr)
5552 v.enter_visit(_n_expr2)
5553 end
5554
5555 redef fun visit_all_reverse(v: Visitor)
5556 do
5557 v.enter_visit(_n_expr)
5558 v.enter_visit(_n_expr2)
5559 end
5560 end
5561 redef class AOrExpr
5562 redef fun n_expr=(n)
5563 do
5564 _n_expr = n
5565 n.parent = self
5566 end
5567 redef fun n_expr2=(n)
5568 do
5569 _n_expr2 = n
5570 n.parent = self
5571 end
5572
5573 private init empty_init do end
5574
5575 init init_aorexpr (
5576 n_expr: nullable AExpr,
5577 n_expr2: nullable AExpr
5578 )
5579 do
5580 empty_init
5581 _n_expr = n_expr.as(not null)
5582 n_expr.parent = self
5583 _n_expr2 = n_expr2.as(not null)
5584 n_expr2.parent = self
5585 end
5586
5587 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5588 do
5589 if _n_expr == old_child then
5590 if new_child != null then
5591 new_child.parent = self
5592 assert new_child isa AExpr
5593 _n_expr = new_child
5594 else
5595 abort
5596 end
5597 return
5598 end
5599 if _n_expr2 == old_child then
5600 if new_child != null then
5601 new_child.parent = self
5602 assert new_child isa AExpr
5603 _n_expr2 = new_child
5604 else
5605 abort
5606 end
5607 return
5608 end
5609 end
5610
5611 redef fun visit_all(v: Visitor)
5612 do
5613 v.enter_visit(_n_expr)
5614 v.enter_visit(_n_expr2)
5615 end
5616
5617 redef fun visit_all_reverse(v: Visitor)
5618 do
5619 v.enter_visit(_n_expr)
5620 v.enter_visit(_n_expr2)
5621 end
5622 end
5623 redef class AAndExpr
5624 redef fun n_expr=(n)
5625 do
5626 _n_expr = n
5627 n.parent = self
5628 end
5629 redef fun n_expr2=(n)
5630 do
5631 _n_expr2 = n
5632 n.parent = self
5633 end
5634
5635 private init empty_init do end
5636
5637 init init_aandexpr (
5638 n_expr: nullable AExpr,
5639 n_expr2: nullable AExpr
5640 )
5641 do
5642 empty_init
5643 _n_expr = n_expr.as(not null)
5644 n_expr.parent = self
5645 _n_expr2 = n_expr2.as(not null)
5646 n_expr2.parent = self
5647 end
5648
5649 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5650 do
5651 if _n_expr == old_child then
5652 if new_child != null then
5653 new_child.parent = self
5654 assert new_child isa AExpr
5655 _n_expr = new_child
5656 else
5657 abort
5658 end
5659 return
5660 end
5661 if _n_expr2 == old_child then
5662 if new_child != null then
5663 new_child.parent = self
5664 assert new_child isa AExpr
5665 _n_expr2 = new_child
5666 else
5667 abort
5668 end
5669 return
5670 end
5671 end
5672
5673 redef fun visit_all(v: Visitor)
5674 do
5675 v.enter_visit(_n_expr)
5676 v.enter_visit(_n_expr2)
5677 end
5678
5679 redef fun visit_all_reverse(v: Visitor)
5680 do
5681 v.enter_visit(_n_expr)
5682 v.enter_visit(_n_expr2)
5683 end
5684 end
5685 redef class ANotExpr
5686 redef fun n_kwnot=(n)
5687 do
5688 _n_kwnot = n
5689 n.parent = self
5690 end
5691 redef fun n_expr=(n)
5692 do
5693 _n_expr = n
5694 n.parent = self
5695 end
5696
5697 private init empty_init do end
5698
5699 init init_anotexpr (
5700 n_kwnot: nullable TKwnot,
5701 n_expr: nullable AExpr
5702 )
5703 do
5704 empty_init
5705 _n_kwnot = n_kwnot.as(not null)
5706 n_kwnot.parent = self
5707 _n_expr = n_expr.as(not null)
5708 n_expr.parent = self
5709 end
5710
5711 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5712 do
5713 if _n_kwnot == old_child then
5714 if new_child != null then
5715 new_child.parent = self
5716 assert new_child isa TKwnot
5717 _n_kwnot = new_child
5718 else
5719 abort
5720 end
5721 return
5722 end
5723 if _n_expr == old_child then
5724 if new_child != null then
5725 new_child.parent = self
5726 assert new_child isa AExpr
5727 _n_expr = new_child
5728 else
5729 abort
5730 end
5731 return
5732 end
5733 end
5734
5735 redef fun visit_all(v: Visitor)
5736 do
5737 v.enter_visit(_n_kwnot)
5738 v.enter_visit(_n_expr)
5739 end
5740
5741 redef fun visit_all_reverse(v: Visitor)
5742 do
5743 v.enter_visit(_n_kwnot)
5744 v.enter_visit(_n_expr)
5745 end
5746 end
5747 redef class AEqExpr
5748 redef fun n_expr=(n)
5749 do
5750 _n_expr = n
5751 n.parent = self
5752 end
5753 redef fun n_expr2=(n)
5754 do
5755 _n_expr2 = n
5756 n.parent = self
5757 end
5758
5759 private init empty_init do end
5760
5761 init init_aeqexpr (
5762 n_expr: nullable AExpr,
5763 n_expr2: nullable AExpr
5764 )
5765 do
5766 empty_init
5767 _n_expr = n_expr.as(not null)
5768 n_expr.parent = self
5769 _n_expr2 = n_expr2.as(not null)
5770 n_expr2.parent = self
5771 end
5772
5773 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5774 do
5775 if _n_expr == old_child then
5776 if new_child != null then
5777 new_child.parent = self
5778 assert new_child isa AExpr
5779 _n_expr = new_child
5780 else
5781 abort
5782 end
5783 return
5784 end
5785 if _n_expr2 == old_child then
5786 if new_child != null then
5787 new_child.parent = self
5788 assert new_child isa AExpr
5789 _n_expr2 = new_child
5790 else
5791 abort
5792 end
5793 return
5794 end
5795 end
5796
5797 redef fun visit_all(v: Visitor)
5798 do
5799 v.enter_visit(_n_expr)
5800 v.enter_visit(_n_expr2)
5801 end
5802
5803 redef fun visit_all_reverse(v: Visitor)
5804 do
5805 v.enter_visit(_n_expr)
5806 v.enter_visit(_n_expr2)
5807 end
5808 end
5809 redef class AEeExpr
5810 redef fun n_expr=(n)
5811 do
5812 _n_expr = n
5813 n.parent = self
5814 end
5815 redef fun n_expr2=(n)
5816 do
5817 _n_expr2 = n
5818 n.parent = self
5819 end
5820
5821 private init empty_init do end
5822
5823 init init_aeeexpr (
5824 n_expr: nullable AExpr,
5825 n_expr2: nullable AExpr
5826 )
5827 do
5828 empty_init
5829 _n_expr = n_expr.as(not null)
5830 n_expr.parent = self
5831 _n_expr2 = n_expr2.as(not null)
5832 n_expr2.parent = self
5833 end
5834
5835 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5836 do
5837 if _n_expr == old_child then
5838 if new_child != null then
5839 new_child.parent = self
5840 assert new_child isa AExpr
5841 _n_expr = new_child
5842 else
5843 abort
5844 end
5845 return
5846 end
5847 if _n_expr2 == old_child then
5848 if new_child != null then
5849 new_child.parent = self
5850 assert new_child isa AExpr
5851 _n_expr2 = new_child
5852 else
5853 abort
5854 end
5855 return
5856 end
5857 end
5858
5859 redef fun visit_all(v: Visitor)
5860 do
5861 v.enter_visit(_n_expr)
5862 v.enter_visit(_n_expr2)
5863 end
5864
5865 redef fun visit_all_reverse(v: Visitor)
5866 do
5867 v.enter_visit(_n_expr)
5868 v.enter_visit(_n_expr2)
5869 end
5870 end
5871 redef class ANeExpr
5872 redef fun n_expr=(n)
5873 do
5874 _n_expr = n
5875 n.parent = self
5876 end
5877 redef fun n_expr2=(n)
5878 do
5879 _n_expr2 = n
5880 n.parent = self
5881 end
5882
5883 private init empty_init do end
5884
5885 init init_aneexpr (
5886 n_expr: nullable AExpr,
5887 n_expr2: nullable AExpr
5888 )
5889 do
5890 empty_init
5891 _n_expr = n_expr.as(not null)
5892 n_expr.parent = self
5893 _n_expr2 = n_expr2.as(not null)
5894 n_expr2.parent = self
5895 end
5896
5897 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5898 do
5899 if _n_expr == old_child then
5900 if new_child != null then
5901 new_child.parent = self
5902 assert new_child isa AExpr
5903 _n_expr = new_child
5904 else
5905 abort
5906 end
5907 return
5908 end
5909 if _n_expr2 == old_child then
5910 if new_child != null then
5911 new_child.parent = self
5912 assert new_child isa AExpr
5913 _n_expr2 = new_child
5914 else
5915 abort
5916 end
5917 return
5918 end
5919 end
5920
5921 redef fun visit_all(v: Visitor)
5922 do
5923 v.enter_visit(_n_expr)
5924 v.enter_visit(_n_expr2)
5925 end
5926
5927 redef fun visit_all_reverse(v: Visitor)
5928 do
5929 v.enter_visit(_n_expr)
5930 v.enter_visit(_n_expr2)
5931 end
5932 end
5933 redef class ALtExpr
5934 redef fun n_expr=(n)
5935 do
5936 _n_expr = n
5937 n.parent = self
5938 end
5939 redef fun n_expr2=(n)
5940 do
5941 _n_expr2 = n
5942 n.parent = self
5943 end
5944
5945 private init empty_init do end
5946
5947 init init_altexpr (
5948 n_expr: nullable AExpr,
5949 n_expr2: nullable AExpr
5950 )
5951 do
5952 empty_init
5953 _n_expr = n_expr.as(not null)
5954 n_expr.parent = self
5955 _n_expr2 = n_expr2.as(not null)
5956 n_expr2.parent = self
5957 end
5958
5959 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5960 do
5961 if _n_expr == old_child then
5962 if new_child != null then
5963 new_child.parent = self
5964 assert new_child isa AExpr
5965 _n_expr = new_child
5966 else
5967 abort
5968 end
5969 return
5970 end
5971 if _n_expr2 == old_child then
5972 if new_child != null then
5973 new_child.parent = self
5974 assert new_child isa AExpr
5975 _n_expr2 = new_child
5976 else
5977 abort
5978 end
5979 return
5980 end
5981 end
5982
5983 redef fun visit_all(v: Visitor)
5984 do
5985 v.enter_visit(_n_expr)
5986 v.enter_visit(_n_expr2)
5987 end
5988
5989 redef fun visit_all_reverse(v: Visitor)
5990 do
5991 v.enter_visit(_n_expr)
5992 v.enter_visit(_n_expr2)
5993 end
5994 end
5995 redef class ALeExpr
5996 redef fun n_expr=(n)
5997 do
5998 _n_expr = n
5999 n.parent = self
6000 end
6001 redef fun n_expr2=(n)
6002 do
6003 _n_expr2 = n
6004 n.parent = self
6005 end
6006
6007 private init empty_init do end
6008
6009 init init_aleexpr (
6010 n_expr: nullable AExpr,
6011 n_expr2: nullable AExpr
6012 )
6013 do
6014 empty_init
6015 _n_expr = n_expr.as(not null)
6016 n_expr.parent = self
6017 _n_expr2 = n_expr2.as(not null)
6018 n_expr2.parent = self
6019 end
6020
6021 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6022 do
6023 if _n_expr == old_child then
6024 if new_child != null then
6025 new_child.parent = self
6026 assert new_child isa AExpr
6027 _n_expr = new_child
6028 else
6029 abort
6030 end
6031 return
6032 end
6033 if _n_expr2 == old_child then
6034 if new_child != null then
6035 new_child.parent = self
6036 assert new_child isa AExpr
6037 _n_expr2 = new_child
6038 else
6039 abort
6040 end
6041 return
6042 end
6043 end
6044
6045 redef fun visit_all(v: Visitor)
6046 do
6047 v.enter_visit(_n_expr)
6048 v.enter_visit(_n_expr2)
6049 end
6050
6051 redef fun visit_all_reverse(v: Visitor)
6052 do
6053 v.enter_visit(_n_expr)
6054 v.enter_visit(_n_expr2)
6055 end
6056 end
6057 redef class AGtExpr
6058 redef fun n_expr=(n)
6059 do
6060 _n_expr = n
6061 n.parent = self
6062 end
6063 redef fun n_expr2=(n)
6064 do
6065 _n_expr2 = n
6066 n.parent = self
6067 end
6068
6069 private init empty_init do end
6070
6071 init init_agtexpr (
6072 n_expr: nullable AExpr,
6073 n_expr2: nullable AExpr
6074 )
6075 do
6076 empty_init
6077 _n_expr = n_expr.as(not null)
6078 n_expr.parent = self
6079 _n_expr2 = n_expr2.as(not null)
6080 n_expr2.parent = self
6081 end
6082
6083 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6084 do
6085 if _n_expr == old_child then
6086 if new_child != null then
6087 new_child.parent = self
6088 assert new_child isa AExpr
6089 _n_expr = new_child
6090 else
6091 abort
6092 end
6093 return
6094 end
6095 if _n_expr2 == old_child then
6096 if new_child != null then
6097 new_child.parent = self
6098 assert new_child isa AExpr
6099 _n_expr2 = new_child
6100 else
6101 abort
6102 end
6103 return
6104 end
6105 end
6106
6107 redef fun visit_all(v: Visitor)
6108 do
6109 v.enter_visit(_n_expr)
6110 v.enter_visit(_n_expr2)
6111 end
6112
6113 redef fun visit_all_reverse(v: Visitor)
6114 do
6115 v.enter_visit(_n_expr)
6116 v.enter_visit(_n_expr2)
6117 end
6118 end
6119 redef class AGeExpr
6120 redef fun n_expr=(n)
6121 do
6122 _n_expr = n
6123 n.parent = self
6124 end
6125 redef fun n_expr2=(n)
6126 do
6127 _n_expr2 = n
6128 n.parent = self
6129 end
6130
6131 private init empty_init do end
6132
6133 init init_ageexpr (
6134 n_expr: nullable AExpr,
6135 n_expr2: nullable AExpr
6136 )
6137 do
6138 empty_init
6139 _n_expr = n_expr.as(not null)
6140 n_expr.parent = self
6141 _n_expr2 = n_expr2.as(not null)
6142 n_expr2.parent = self
6143 end
6144
6145 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6146 do
6147 if _n_expr == old_child then
6148 if new_child != null then
6149 new_child.parent = self
6150 assert new_child isa AExpr
6151 _n_expr = new_child
6152 else
6153 abort
6154 end
6155 return
6156 end
6157 if _n_expr2 == old_child then
6158 if new_child != null then
6159 new_child.parent = self
6160 assert new_child isa AExpr
6161 _n_expr2 = new_child
6162 else
6163 abort
6164 end
6165 return
6166 end
6167 end
6168
6169 redef fun visit_all(v: Visitor)
6170 do
6171 v.enter_visit(_n_expr)
6172 v.enter_visit(_n_expr2)
6173 end
6174
6175 redef fun visit_all_reverse(v: Visitor)
6176 do
6177 v.enter_visit(_n_expr)
6178 v.enter_visit(_n_expr2)
6179 end
6180 end
6181 redef class AIsaExpr
6182 redef fun n_expr=(n)
6183 do
6184 _n_expr = n
6185 n.parent = self
6186 end
6187 redef fun n_type=(n)
6188 do
6189 _n_type = n
6190 n.parent = self
6191 end
6192
6193 private init empty_init do end
6194
6195 init init_aisaexpr (
6196 n_expr: nullable AExpr,
6197 n_type: nullable AType
6198 )
6199 do
6200 empty_init
6201 _n_expr = n_expr.as(not null)
6202 n_expr.parent = self
6203 _n_type = n_type.as(not null)
6204 n_type.parent = self
6205 end
6206
6207 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6208 do
6209 if _n_expr == old_child then
6210 if new_child != null then
6211 new_child.parent = self
6212 assert new_child isa AExpr
6213 _n_expr = new_child
6214 else
6215 abort
6216 end
6217 return
6218 end
6219 if _n_type == old_child then
6220 if new_child != null then
6221 new_child.parent = self
6222 assert new_child isa AType
6223 _n_type = new_child
6224 else
6225 abort
6226 end
6227 return
6228 end
6229 end
6230
6231 redef fun visit_all(v: Visitor)
6232 do
6233 v.enter_visit(_n_expr)
6234 v.enter_visit(_n_type)
6235 end
6236
6237 redef fun visit_all_reverse(v: Visitor)
6238 do
6239 v.enter_visit(_n_expr)
6240 v.enter_visit(_n_type)
6241 end
6242 end
6243 redef class APlusExpr
6244 redef fun n_expr=(n)
6245 do
6246 _n_expr = n
6247 n.parent = self
6248 end
6249 redef fun n_expr2=(n)
6250 do
6251 _n_expr2 = n
6252 n.parent = self
6253 end
6254
6255 private init empty_init do end
6256
6257 init init_aplusexpr (
6258 n_expr: nullable AExpr,
6259 n_expr2: nullable AExpr
6260 )
6261 do
6262 empty_init
6263 _n_expr = n_expr.as(not null)
6264 n_expr.parent = self
6265 _n_expr2 = n_expr2.as(not null)
6266 n_expr2.parent = self
6267 end
6268
6269 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6270 do
6271 if _n_expr == old_child then
6272 if new_child != null then
6273 new_child.parent = self
6274 assert new_child isa AExpr
6275 _n_expr = new_child
6276 else
6277 abort
6278 end
6279 return
6280 end
6281 if _n_expr2 == old_child then
6282 if new_child != null then
6283 new_child.parent = self
6284 assert new_child isa AExpr
6285 _n_expr2 = new_child
6286 else
6287 abort
6288 end
6289 return
6290 end
6291 end
6292
6293 redef fun visit_all(v: Visitor)
6294 do
6295 v.enter_visit(_n_expr)
6296 v.enter_visit(_n_expr2)
6297 end
6298
6299 redef fun visit_all_reverse(v: Visitor)
6300 do
6301 v.enter_visit(_n_expr)
6302 v.enter_visit(_n_expr2)
6303 end
6304 end
6305 redef class AMinusExpr
6306 redef fun n_expr=(n)
6307 do
6308 _n_expr = n
6309 n.parent = self
6310 end
6311 redef fun n_expr2=(n)
6312 do
6313 _n_expr2 = n
6314 n.parent = self
6315 end
6316
6317 private init empty_init do end
6318
6319 init init_aminusexpr (
6320 n_expr: nullable AExpr,
6321 n_expr2: nullable AExpr
6322 )
6323 do
6324 empty_init
6325 _n_expr = n_expr.as(not null)
6326 n_expr.parent = self
6327 _n_expr2 = n_expr2.as(not null)
6328 n_expr2.parent = self
6329 end
6330
6331 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6332 do
6333 if _n_expr == old_child then
6334 if new_child != null then
6335 new_child.parent = self
6336 assert new_child isa AExpr
6337 _n_expr = new_child
6338 else
6339 abort
6340 end
6341 return
6342 end
6343 if _n_expr2 == old_child then
6344 if new_child != null then
6345 new_child.parent = self
6346 assert new_child isa AExpr
6347 _n_expr2 = new_child
6348 else
6349 abort
6350 end
6351 return
6352 end
6353 end
6354
6355 redef fun visit_all(v: Visitor)
6356 do
6357 v.enter_visit(_n_expr)
6358 v.enter_visit(_n_expr2)
6359 end
6360
6361 redef fun visit_all_reverse(v: Visitor)
6362 do
6363 v.enter_visit(_n_expr)
6364 v.enter_visit(_n_expr2)
6365 end
6366 end
6367 redef class AStarshipExpr
6368 redef fun n_expr=(n)
6369 do
6370 _n_expr = n
6371 n.parent = self
6372 end
6373 redef fun n_expr2=(n)
6374 do
6375 _n_expr2 = n
6376 n.parent = self
6377 end
6378
6379 private init empty_init do end
6380
6381 init init_astarshipexpr (
6382 n_expr: nullable AExpr,
6383 n_expr2: nullable AExpr
6384 )
6385 do
6386 empty_init
6387 _n_expr = n_expr.as(not null)
6388 n_expr.parent = self
6389 _n_expr2 = n_expr2.as(not null)
6390 n_expr2.parent = self
6391 end
6392
6393 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6394 do
6395 if _n_expr == old_child then
6396 if new_child != null then
6397 new_child.parent = self
6398 assert new_child isa AExpr
6399 _n_expr = new_child
6400 else
6401 abort
6402 end
6403 return
6404 end
6405 if _n_expr2 == old_child then
6406 if new_child != null then
6407 new_child.parent = self
6408 assert new_child isa AExpr
6409 _n_expr2 = new_child
6410 else
6411 abort
6412 end
6413 return
6414 end
6415 end
6416
6417 redef fun visit_all(v: Visitor)
6418 do
6419 v.enter_visit(_n_expr)
6420 v.enter_visit(_n_expr2)
6421 end
6422
6423 redef fun visit_all_reverse(v: Visitor)
6424 do
6425 v.enter_visit(_n_expr)
6426 v.enter_visit(_n_expr2)
6427 end
6428 end
6429 redef class AStarExpr
6430 redef fun n_expr=(n)
6431 do
6432 _n_expr = n
6433 n.parent = self
6434 end
6435 redef fun n_expr2=(n)
6436 do
6437 _n_expr2 = n
6438 n.parent = self
6439 end
6440
6441 private init empty_init do end
6442
6443 init init_astarexpr (
6444 n_expr: nullable AExpr,
6445 n_expr2: nullable AExpr
6446 )
6447 do
6448 empty_init
6449 _n_expr = n_expr.as(not null)
6450 n_expr.parent = self
6451 _n_expr2 = n_expr2.as(not null)
6452 n_expr2.parent = self
6453 end
6454
6455 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6456 do
6457 if _n_expr == old_child then
6458 if new_child != null then
6459 new_child.parent = self
6460 assert new_child isa AExpr
6461 _n_expr = new_child
6462 else
6463 abort
6464 end
6465 return
6466 end
6467 if _n_expr2 == old_child then
6468 if new_child != null then
6469 new_child.parent = self
6470 assert new_child isa AExpr
6471 _n_expr2 = new_child
6472 else
6473 abort
6474 end
6475 return
6476 end
6477 end
6478
6479 redef fun visit_all(v: Visitor)
6480 do
6481 v.enter_visit(_n_expr)
6482 v.enter_visit(_n_expr2)
6483 end
6484
6485 redef fun visit_all_reverse(v: Visitor)
6486 do
6487 v.enter_visit(_n_expr)
6488 v.enter_visit(_n_expr2)
6489 end
6490 end
6491 redef class ASlashExpr
6492 redef fun n_expr=(n)
6493 do
6494 _n_expr = n
6495 n.parent = self
6496 end
6497 redef fun n_expr2=(n)
6498 do
6499 _n_expr2 = n
6500 n.parent = self
6501 end
6502
6503 private init empty_init do end
6504
6505 init init_aslashexpr (
6506 n_expr: nullable AExpr,
6507 n_expr2: nullable AExpr
6508 )
6509 do
6510 empty_init
6511 _n_expr = n_expr.as(not null)
6512 n_expr.parent = self
6513 _n_expr2 = n_expr2.as(not null)
6514 n_expr2.parent = self
6515 end
6516
6517 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6518 do
6519 if _n_expr == old_child then
6520 if new_child != null then
6521 new_child.parent = self
6522 assert new_child isa AExpr
6523 _n_expr = new_child
6524 else
6525 abort
6526 end
6527 return
6528 end
6529 if _n_expr2 == old_child then
6530 if new_child != null then
6531 new_child.parent = self
6532 assert new_child isa AExpr
6533 _n_expr2 = new_child
6534 else
6535 abort
6536 end
6537 return
6538 end
6539 end
6540
6541 redef fun visit_all(v: Visitor)
6542 do
6543 v.enter_visit(_n_expr)
6544 v.enter_visit(_n_expr2)
6545 end
6546
6547 redef fun visit_all_reverse(v: Visitor)
6548 do
6549 v.enter_visit(_n_expr)
6550 v.enter_visit(_n_expr2)
6551 end
6552 end
6553 redef class APercentExpr
6554 redef fun n_expr=(n)
6555 do
6556 _n_expr = n
6557 n.parent = self
6558 end
6559 redef fun n_expr2=(n)
6560 do
6561 _n_expr2 = n
6562 n.parent = self
6563 end
6564
6565 private init empty_init do end
6566
6567 init init_apercentexpr (
6568 n_expr: nullable AExpr,
6569 n_expr2: nullable AExpr
6570 )
6571 do
6572 empty_init
6573 _n_expr = n_expr.as(not null)
6574 n_expr.parent = self
6575 _n_expr2 = n_expr2.as(not null)
6576 n_expr2.parent = self
6577 end
6578
6579 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6580 do
6581 if _n_expr == old_child then
6582 if new_child != null then
6583 new_child.parent = self
6584 assert new_child isa AExpr
6585 _n_expr = new_child
6586 else
6587 abort
6588 end
6589 return
6590 end
6591 if _n_expr2 == old_child then
6592 if new_child != null then
6593 new_child.parent = self
6594 assert new_child isa AExpr
6595 _n_expr2 = new_child
6596 else
6597 abort
6598 end
6599 return
6600 end
6601 end
6602
6603 redef fun visit_all(v: Visitor)
6604 do
6605 v.enter_visit(_n_expr)
6606 v.enter_visit(_n_expr2)
6607 end
6608
6609 redef fun visit_all_reverse(v: Visitor)
6610 do
6611 v.enter_visit(_n_expr)
6612 v.enter_visit(_n_expr2)
6613 end
6614 end
6615 redef class AUminusExpr
6616 redef fun n_minus=(n)
6617 do
6618 _n_minus = n
6619 n.parent = self
6620 end
6621 redef fun n_expr=(n)
6622 do
6623 _n_expr = n
6624 n.parent = self
6625 end
6626
6627 private init empty_init do end
6628
6629 init init_auminusexpr (
6630 n_minus: nullable TMinus,
6631 n_expr: nullable AExpr
6632 )
6633 do
6634 empty_init
6635 _n_minus = n_minus.as(not null)
6636 n_minus.parent = self
6637 _n_expr = n_expr.as(not null)
6638 n_expr.parent = self
6639 end
6640
6641 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6642 do
6643 if _n_minus == old_child then
6644 if new_child != null then
6645 new_child.parent = self
6646 assert new_child isa TMinus
6647 _n_minus = new_child
6648 else
6649 abort
6650 end
6651 return
6652 end
6653 if _n_expr == old_child then
6654 if new_child != null then
6655 new_child.parent = self
6656 assert new_child isa AExpr
6657 _n_expr = new_child
6658 else
6659 abort
6660 end
6661 return
6662 end
6663 end
6664
6665 redef fun visit_all(v: Visitor)
6666 do
6667 v.enter_visit(_n_minus)
6668 v.enter_visit(_n_expr)
6669 end
6670
6671 redef fun visit_all_reverse(v: Visitor)
6672 do
6673 v.enter_visit(_n_minus)
6674 v.enter_visit(_n_expr)
6675 end
6676 end
6677 redef class ANewExpr
6678 redef fun n_kwnew=(n)
6679 do
6680 _n_kwnew = n
6681 n.parent = self
6682 end
6683 redef fun n_type=(n)
6684 do
6685 _n_type = n
6686 n.parent = self
6687 end
6688 redef fun n_id=(n)
6689 do
6690 _n_id = n
6691 if n != null then
6692 n.parent = self
6693 end
6694 end
6695
6696 private init empty_init do end
6697
6698 init init_anewexpr (
6699 n_kwnew: nullable TKwnew,
6700 n_type: nullable AType,
6701 n_id: nullable TId,
6702 n_args: Collection[Object] # Should be Collection[AExpr]
6703 )
6704 do
6705 empty_init
6706 _n_kwnew = n_kwnew.as(not null)
6707 n_kwnew.parent = self
6708 _n_type = n_type.as(not null)
6709 n_type.parent = self
6710 _n_id = n_id
6711 if n_id != null then
6712 n_id.parent = self
6713 end
6714 for n in n_args do
6715 assert n isa AExpr
6716 _n_args.add(n)
6717 n.parent = self
6718 end
6719 end
6720
6721 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6722 do
6723 if _n_kwnew == old_child then
6724 if new_child != null then
6725 new_child.parent = self
6726 assert new_child isa TKwnew
6727 _n_kwnew = new_child
6728 else
6729 abort
6730 end
6731 return
6732 end
6733 if _n_type == old_child then
6734 if new_child != null then
6735 new_child.parent = self
6736 assert new_child isa AType
6737 _n_type = new_child
6738 else
6739 abort
6740 end
6741 return
6742 end
6743 if _n_id == old_child then
6744 if new_child != null then
6745 new_child.parent = self
6746 assert new_child isa TId
6747 _n_id = new_child
6748 else
6749 _n_id = null
6750 end
6751 return
6752 end
6753 for i in [0.._n_args.length[ do
6754 if _n_args[i] == old_child then
6755 if new_child != null then
6756 assert new_child isa AExpr
6757 _n_args[i] = new_child
6758 new_child.parent = self
6759 else
6760 _n_args.remove_at(i)
6761 end
6762 return
6763 end
6764 end
6765 end
6766
6767 redef fun visit_all(v: Visitor)
6768 do
6769 v.enter_visit(_n_kwnew)
6770 v.enter_visit(_n_type)
6771 if _n_id != null then
6772 v.enter_visit(_n_id.as(not null))
6773 end
6774 for n in _n_args do
6775 v.enter_visit(n)
6776 end
6777 end
6778
6779 redef fun visit_all_reverse(v: Visitor)
6780 do
6781 v.enter_visit(_n_kwnew)
6782 v.enter_visit(_n_type)
6783 if _n_id != null then
6784 v.enter_visit(_n_id.as(not null))
6785 end
6786 do
6787 var i = _n_args.length
6788 while i >= 0 do
6789 v.enter_visit(_n_args[i])
6790 i = i - 1
6791 end
6792 end
6793 end
6794 end
6795 redef class AAttrExpr
6796 redef fun n_expr=(n)
6797 do
6798 _n_expr = n
6799 n.parent = self
6800 end
6801 redef fun n_id=(n)
6802 do
6803 _n_id = n
6804 n.parent = self
6805 end
6806
6807 private init empty_init do end
6808
6809 init init_aattrexpr (
6810 n_expr: nullable AExpr,
6811 n_id: nullable TAttrid
6812 )
6813 do
6814 empty_init
6815 _n_expr = n_expr.as(not null)
6816 n_expr.parent = self
6817 _n_id = n_id.as(not null)
6818 n_id.parent = self
6819 end
6820
6821 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6822 do
6823 if _n_expr == old_child then
6824 if new_child != null then
6825 new_child.parent = self
6826 assert new_child isa AExpr
6827 _n_expr = new_child
6828 else
6829 abort
6830 end
6831 return
6832 end
6833 if _n_id == old_child then
6834 if new_child != null then
6835 new_child.parent = self
6836 assert new_child isa TAttrid
6837 _n_id = new_child
6838 else
6839 abort
6840 end
6841 return
6842 end
6843 end
6844
6845 redef fun visit_all(v: Visitor)
6846 do
6847 v.enter_visit(_n_expr)
6848 v.enter_visit(_n_id)
6849 end
6850
6851 redef fun visit_all_reverse(v: Visitor)
6852 do
6853 v.enter_visit(_n_expr)
6854 v.enter_visit(_n_id)
6855 end
6856 end
6857 redef class AAttrAssignExpr
6858 redef fun n_expr=(n)
6859 do
6860 _n_expr = n
6861 n.parent = self
6862 end
6863 redef fun n_id=(n)
6864 do
6865 _n_id = n
6866 n.parent = self
6867 end
6868 redef fun n_assign=(n)
6869 do
6870 _n_assign = n
6871 n.parent = self
6872 end
6873 redef fun n_value=(n)
6874 do
6875 _n_value = n
6876 n.parent = self
6877 end
6878
6879 private init empty_init do end
6880
6881 init init_aattrassignexpr (
6882 n_expr: nullable AExpr,
6883 n_id: nullable TAttrid,
6884 n_assign: nullable TAssign,
6885 n_value: nullable AExpr
6886 )
6887 do
6888 empty_init
6889 _n_expr = n_expr.as(not null)
6890 n_expr.parent = self
6891 _n_id = n_id.as(not null)
6892 n_id.parent = self
6893 _n_assign = n_assign.as(not null)
6894 n_assign.parent = self
6895 _n_value = n_value.as(not null)
6896 n_value.parent = self
6897 end
6898
6899 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6900 do
6901 if _n_expr == old_child then
6902 if new_child != null then
6903 new_child.parent = self
6904 assert new_child isa AExpr
6905 _n_expr = new_child
6906 else
6907 abort
6908 end
6909 return
6910 end
6911 if _n_id == old_child then
6912 if new_child != null then
6913 new_child.parent = self
6914 assert new_child isa TAttrid
6915 _n_id = new_child
6916 else
6917 abort
6918 end
6919 return
6920 end
6921 if _n_assign == old_child then
6922 if new_child != null then
6923 new_child.parent = self
6924 assert new_child isa TAssign
6925 _n_assign = new_child
6926 else
6927 abort
6928 end
6929 return
6930 end
6931 if _n_value == old_child then
6932 if new_child != null then
6933 new_child.parent = self
6934 assert new_child isa AExpr
6935 _n_value = new_child
6936 else
6937 abort
6938 end
6939 return
6940 end
6941 end
6942
6943 redef fun visit_all(v: Visitor)
6944 do
6945 v.enter_visit(_n_expr)
6946 v.enter_visit(_n_id)
6947 v.enter_visit(_n_assign)
6948 v.enter_visit(_n_value)
6949 end
6950
6951 redef fun visit_all_reverse(v: Visitor)
6952 do
6953 v.enter_visit(_n_expr)
6954 v.enter_visit(_n_id)
6955 v.enter_visit(_n_assign)
6956 v.enter_visit(_n_value)
6957 end
6958 end
6959 redef class AAttrReassignExpr
6960 redef fun n_expr=(n)
6961 do
6962 _n_expr = n
6963 n.parent = self
6964 end
6965 redef fun n_id=(n)
6966 do
6967 _n_id = n
6968 n.parent = self
6969 end
6970 redef fun n_assign_op=(n)
6971 do
6972 _n_assign_op = n
6973 n.parent = self
6974 end
6975 redef fun n_value=(n)
6976 do
6977 _n_value = n
6978 n.parent = self
6979 end
6980
6981 private init empty_init do end
6982
6983 init init_aattrreassignexpr (
6984 n_expr: nullable AExpr,
6985 n_id: nullable TAttrid,
6986 n_assign_op: nullable AAssignOp,
6987 n_value: nullable AExpr
6988 )
6989 do
6990 empty_init
6991 _n_expr = n_expr.as(not null)
6992 n_expr.parent = self
6993 _n_id = n_id.as(not null)
6994 n_id.parent = self
6995 _n_assign_op = n_assign_op.as(not null)
6996 n_assign_op.parent = self
6997 _n_value = n_value.as(not null)
6998 n_value.parent = self
6999 end
7000
7001 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7002 do
7003 if _n_expr == old_child then
7004 if new_child != null then
7005 new_child.parent = self
7006 assert new_child isa AExpr
7007 _n_expr = new_child
7008 else
7009 abort
7010 end
7011 return
7012 end
7013 if _n_id == old_child then
7014 if new_child != null then
7015 new_child.parent = self
7016 assert new_child isa TAttrid
7017 _n_id = new_child
7018 else
7019 abort
7020 end
7021 return
7022 end
7023 if _n_assign_op == old_child then
7024 if new_child != null then
7025 new_child.parent = self
7026 assert new_child isa AAssignOp
7027 _n_assign_op = new_child
7028 else
7029 abort
7030 end
7031 return
7032 end
7033 if _n_value == old_child then
7034 if new_child != null then
7035 new_child.parent = self
7036 assert new_child isa AExpr
7037 _n_value = new_child
7038 else
7039 abort
7040 end
7041 return
7042 end
7043 end
7044
7045 redef fun visit_all(v: Visitor)
7046 do
7047 v.enter_visit(_n_expr)
7048 v.enter_visit(_n_id)
7049 v.enter_visit(_n_assign_op)
7050 v.enter_visit(_n_value)
7051 end
7052
7053 redef fun visit_all_reverse(v: Visitor)
7054 do
7055 v.enter_visit(_n_expr)
7056 v.enter_visit(_n_id)
7057 v.enter_visit(_n_assign_op)
7058 v.enter_visit(_n_value)
7059 end
7060 end
7061 redef class ACallExpr
7062 redef fun n_expr=(n)
7063 do
7064 _n_expr = n
7065 n.parent = self
7066 end
7067 redef fun n_id=(n)
7068 do
7069 _n_id = n
7070 n.parent = self
7071 end
7072
7073 private init empty_init do end
7074
7075 init init_acallexpr (
7076 n_expr: nullable AExpr,
7077 n_id: nullable TId,
7078 n_args: Collection[Object], # Should be Collection[AExpr]
7079 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
7080 )
7081 do
7082 empty_init
7083 _n_expr = n_expr.as(not null)
7084 n_expr.parent = self
7085 _n_id = n_id.as(not null)
7086 n_id.parent = self
7087 for n in n_args do
7088 assert n isa AExpr
7089 _n_args.add(n)
7090 n.parent = self
7091 end
7092 for n in n_closure_defs do
7093 assert n isa AClosureDef
7094 _n_closure_defs.add(n)
7095 n.parent = self
7096 end
7097 end
7098
7099 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7100 do
7101 if _n_expr == old_child then
7102 if new_child != null then
7103 new_child.parent = self
7104 assert new_child isa AExpr
7105 _n_expr = new_child
7106 else
7107 abort
7108 end
7109 return
7110 end
7111 if _n_id == old_child then
7112 if new_child != null then
7113 new_child.parent = self
7114 assert new_child isa TId
7115 _n_id = new_child
7116 else
7117 abort
7118 end
7119 return
7120 end
7121 for i in [0.._n_args.length[ do
7122 if _n_args[i] == old_child then
7123 if new_child != null then
7124 assert new_child isa AExpr
7125 _n_args[i] = new_child
7126 new_child.parent = self
7127 else
7128 _n_args.remove_at(i)
7129 end
7130 return
7131 end
7132 end
7133 for i in [0.._n_closure_defs.length[ do
7134 if _n_closure_defs[i] == old_child then
7135 if new_child != null then
7136 assert new_child isa AClosureDef
7137 _n_closure_defs[i] = new_child
7138 new_child.parent = self
7139 else
7140 _n_closure_defs.remove_at(i)
7141 end
7142 return
7143 end
7144 end
7145 end
7146
7147 redef fun visit_all(v: Visitor)
7148 do
7149 v.enter_visit(_n_expr)
7150 v.enter_visit(_n_id)
7151 for n in _n_args do
7152 v.enter_visit(n)
7153 end
7154 for n in _n_closure_defs do
7155 v.enter_visit(n)
7156 end
7157 end
7158
7159 redef fun visit_all_reverse(v: Visitor)
7160 do
7161 v.enter_visit(_n_expr)
7162 v.enter_visit(_n_id)
7163 do
7164 var i = _n_args.length
7165 while i >= 0 do
7166 v.enter_visit(_n_args[i])
7167 i = i - 1
7168 end
7169 end
7170 do
7171 var i = _n_closure_defs.length
7172 while i >= 0 do
7173 v.enter_visit(_n_closure_defs[i])
7174 i = i - 1
7175 end
7176 end
7177 end
7178 end
7179 redef class ACallAssignExpr
7180 redef fun n_expr=(n)
7181 do
7182 _n_expr = n
7183 n.parent = self
7184 end
7185 redef fun n_id=(n)
7186 do
7187 _n_id = n
7188 n.parent = self
7189 end
7190 redef fun n_assign=(n)
7191 do
7192 _n_assign = n
7193 n.parent = self
7194 end
7195 redef fun n_value=(n)
7196 do
7197 _n_value = n
7198 n.parent = self
7199 end
7200
7201 private init empty_init do end
7202
7203 init init_acallassignexpr (
7204 n_expr: nullable AExpr,
7205 n_id: nullable TId,
7206 n_args: Collection[Object], # Should be Collection[AExpr]
7207 n_assign: nullable TAssign,
7208 n_value: nullable AExpr
7209 )
7210 do
7211 empty_init
7212 _n_expr = n_expr.as(not null)
7213 n_expr.parent = self
7214 _n_id = n_id.as(not null)
7215 n_id.parent = self
7216 for n in n_args do
7217 assert n isa AExpr
7218 _n_args.add(n)
7219 n.parent = self
7220 end
7221 _n_assign = n_assign.as(not null)
7222 n_assign.parent = self
7223 _n_value = n_value.as(not null)
7224 n_value.parent = self
7225 end
7226
7227 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7228 do
7229 if _n_expr == old_child then
7230 if new_child != null then
7231 new_child.parent = self
7232 assert new_child isa AExpr
7233 _n_expr = new_child
7234 else
7235 abort
7236 end
7237 return
7238 end
7239 if _n_id == old_child then
7240 if new_child != null then
7241 new_child.parent = self
7242 assert new_child isa TId
7243 _n_id = new_child
7244 else
7245 abort
7246 end
7247 return
7248 end
7249 for i in [0.._n_args.length[ do
7250 if _n_args[i] == old_child then
7251 if new_child != null then
7252 assert new_child isa AExpr
7253 _n_args[i] = new_child
7254 new_child.parent = self
7255 else
7256 _n_args.remove_at(i)
7257 end
7258 return
7259 end
7260 end
7261 if _n_assign == old_child then
7262 if new_child != null then
7263 new_child.parent = self
7264 assert new_child isa TAssign
7265 _n_assign = new_child
7266 else
7267 abort
7268 end
7269 return
7270 end
7271 if _n_value == old_child then
7272 if new_child != null then
7273 new_child.parent = self
7274 assert new_child isa AExpr
7275 _n_value = new_child
7276 else
7277 abort
7278 end
7279 return
7280 end
7281 end
7282
7283 redef fun visit_all(v: Visitor)
7284 do
7285 v.enter_visit(_n_expr)
7286 v.enter_visit(_n_id)
7287 for n in _n_args do
7288 v.enter_visit(n)
7289 end
7290 v.enter_visit(_n_assign)
7291 v.enter_visit(_n_value)
7292 end
7293
7294 redef fun visit_all_reverse(v: Visitor)
7295 do
7296 v.enter_visit(_n_expr)
7297 v.enter_visit(_n_id)
7298 do
7299 var i = _n_args.length
7300 while i >= 0 do
7301 v.enter_visit(_n_args[i])
7302 i = i - 1
7303 end
7304 end
7305 v.enter_visit(_n_assign)
7306 v.enter_visit(_n_value)
7307 end
7308 end
7309 redef class ACallReassignExpr
7310 redef fun n_expr=(n)
7311 do
7312 _n_expr = n
7313 n.parent = self
7314 end
7315 redef fun n_id=(n)
7316 do
7317 _n_id = n
7318 n.parent = self
7319 end
7320 redef fun n_assign_op=(n)
7321 do
7322 _n_assign_op = n
7323 n.parent = self
7324 end
7325 redef fun n_value=(n)
7326 do
7327 _n_value = n
7328 n.parent = self
7329 end
7330
7331 private init empty_init do end
7332
7333 init init_acallreassignexpr (
7334 n_expr: nullable AExpr,
7335 n_id: nullable TId,
7336 n_args: Collection[Object], # Should be Collection[AExpr]
7337 n_assign_op: nullable AAssignOp,
7338 n_value: nullable AExpr
7339 )
7340 do
7341 empty_init
7342 _n_expr = n_expr.as(not null)
7343 n_expr.parent = self
7344 _n_id = n_id.as(not null)
7345 n_id.parent = self
7346 for n in n_args do
7347 assert n isa AExpr
7348 _n_args.add(n)
7349 n.parent = self
7350 end
7351 _n_assign_op = n_assign_op.as(not null)
7352 n_assign_op.parent = self
7353 _n_value = n_value.as(not null)
7354 n_value.parent = self
7355 end
7356
7357 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7358 do
7359 if _n_expr == old_child then
7360 if new_child != null then
7361 new_child.parent = self
7362 assert new_child isa AExpr
7363 _n_expr = new_child
7364 else
7365 abort
7366 end
7367 return
7368 end
7369 if _n_id == old_child then
7370 if new_child != null then
7371 new_child.parent = self
7372 assert new_child isa TId
7373 _n_id = new_child
7374 else
7375 abort
7376 end
7377 return
7378 end
7379 for i in [0.._n_args.length[ do
7380 if _n_args[i] == old_child then
7381 if new_child != null then
7382 assert new_child isa AExpr
7383 _n_args[i] = new_child
7384 new_child.parent = self
7385 else
7386 _n_args.remove_at(i)
7387 end
7388 return
7389 end
7390 end
7391 if _n_assign_op == old_child then
7392 if new_child != null then
7393 new_child.parent = self
7394 assert new_child isa AAssignOp
7395 _n_assign_op = new_child
7396 else
7397 abort
7398 end
7399 return
7400 end
7401 if _n_value == old_child then
7402 if new_child != null then
7403 new_child.parent = self
7404 assert new_child isa AExpr
7405 _n_value = new_child
7406 else
7407 abort
7408 end
7409 return
7410 end
7411 end
7412
7413 redef fun visit_all(v: Visitor)
7414 do
7415 v.enter_visit(_n_expr)
7416 v.enter_visit(_n_id)
7417 for n in _n_args do
7418 v.enter_visit(n)
7419 end
7420 v.enter_visit(_n_assign_op)
7421 v.enter_visit(_n_value)
7422 end
7423
7424 redef fun visit_all_reverse(v: Visitor)
7425 do
7426 v.enter_visit(_n_expr)
7427 v.enter_visit(_n_id)
7428 do
7429 var i = _n_args.length
7430 while i >= 0 do
7431 v.enter_visit(_n_args[i])
7432 i = i - 1
7433 end
7434 end
7435 v.enter_visit(_n_assign_op)
7436 v.enter_visit(_n_value)
7437 end
7438 end
7439 redef class ASuperExpr
7440 redef fun n_qualified=(n)
7441 do
7442 _n_qualified = n
7443 if n != null then
7444 n.parent = self
7445 end
7446 end
7447 redef fun n_kwsuper=(n)
7448 do
7449 _n_kwsuper = n
7450 n.parent = self
7451 end
7452
7453 private init empty_init do end
7454
7455 init init_asuperexpr (
7456 n_qualified: nullable AQualified,
7457 n_kwsuper: nullable TKwsuper,
7458 n_args: Collection[Object] # Should be Collection[AExpr]
7459 )
7460 do
7461 empty_init
7462 _n_qualified = n_qualified
7463 if n_qualified != null then
7464 n_qualified.parent = self
7465 end
7466 _n_kwsuper = n_kwsuper.as(not null)
7467 n_kwsuper.parent = self
7468 for n in n_args do
7469 assert n isa AExpr
7470 _n_args.add(n)
7471 n.parent = self
7472 end
7473 end
7474
7475 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7476 do
7477 if _n_qualified == old_child then
7478 if new_child != null then
7479 new_child.parent = self
7480 assert new_child isa AQualified
7481 _n_qualified = new_child
7482 else
7483 _n_qualified = null
7484 end
7485 return
7486 end
7487 if _n_kwsuper == old_child then
7488 if new_child != null then
7489 new_child.parent = self
7490 assert new_child isa TKwsuper
7491 _n_kwsuper = new_child
7492 else
7493 abort
7494 end
7495 return
7496 end
7497 for i in [0.._n_args.length[ do
7498 if _n_args[i] == old_child then
7499 if new_child != null then
7500 assert new_child isa AExpr
7501 _n_args[i] = new_child
7502 new_child.parent = self
7503 else
7504 _n_args.remove_at(i)
7505 end
7506 return
7507 end
7508 end
7509 end
7510
7511 redef fun visit_all(v: Visitor)
7512 do
7513 if _n_qualified != null then
7514 v.enter_visit(_n_qualified.as(not null))
7515 end
7516 v.enter_visit(_n_kwsuper)
7517 for n in _n_args do
7518 v.enter_visit(n)
7519 end
7520 end
7521
7522 redef fun visit_all_reverse(v: Visitor)
7523 do
7524 if _n_qualified != null then
7525 v.enter_visit(_n_qualified.as(not null))
7526 end
7527 v.enter_visit(_n_kwsuper)
7528 do
7529 var i = _n_args.length
7530 while i >= 0 do
7531 v.enter_visit(_n_args[i])
7532 i = i - 1
7533 end
7534 end
7535 end
7536 end
7537 redef class AInitExpr
7538 redef fun n_expr=(n)
7539 do
7540 _n_expr = n
7541 n.parent = self
7542 end
7543 redef fun n_kwinit=(n)
7544 do
7545 _n_kwinit = n
7546 n.parent = self
7547 end
7548
7549 private init empty_init do end
7550
7551 init init_ainitexpr (
7552 n_expr: nullable AExpr,
7553 n_kwinit: nullable TKwinit,
7554 n_args: Collection[Object] # Should be Collection[AExpr]
7555 )
7556 do
7557 empty_init
7558 _n_expr = n_expr.as(not null)
7559 n_expr.parent = self
7560 _n_kwinit = n_kwinit.as(not null)
7561 n_kwinit.parent = self
7562 for n in n_args do
7563 assert n isa AExpr
7564 _n_args.add(n)
7565 n.parent = self
7566 end
7567 end
7568
7569 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7570 do
7571 if _n_expr == old_child then
7572 if new_child != null then
7573 new_child.parent = self
7574 assert new_child isa AExpr
7575 _n_expr = new_child
7576 else
7577 abort
7578 end
7579 return
7580 end
7581 if _n_kwinit == old_child then
7582 if new_child != null then
7583 new_child.parent = self
7584 assert new_child isa TKwinit
7585 _n_kwinit = new_child
7586 else
7587 abort
7588 end
7589 return
7590 end
7591 for i in [0.._n_args.length[ do
7592 if _n_args[i] == old_child then
7593 if new_child != null then
7594 assert new_child isa AExpr
7595 _n_args[i] = new_child
7596 new_child.parent = self
7597 else
7598 _n_args.remove_at(i)
7599 end
7600 return
7601 end
7602 end
7603 end
7604
7605 redef fun visit_all(v: Visitor)
7606 do
7607 v.enter_visit(_n_expr)
7608 v.enter_visit(_n_kwinit)
7609 for n in _n_args do
7610 v.enter_visit(n)
7611 end
7612 end
7613
7614 redef fun visit_all_reverse(v: Visitor)
7615 do
7616 v.enter_visit(_n_expr)
7617 v.enter_visit(_n_kwinit)
7618 do
7619 var i = _n_args.length
7620 while i >= 0 do
7621 v.enter_visit(_n_args[i])
7622 i = i - 1
7623 end
7624 end
7625 end
7626 end
7627 redef class ABraExpr
7628 redef fun n_expr=(n)
7629 do
7630 _n_expr = n
7631 n.parent = self
7632 end
7633
7634 private init empty_init do end
7635
7636 init init_abraexpr (
7637 n_expr: nullable AExpr,
7638 n_args: Collection[Object], # Should be Collection[AExpr]
7639 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
7640 )
7641 do
7642 empty_init
7643 _n_expr = n_expr.as(not null)
7644 n_expr.parent = self
7645 for n in n_args do
7646 assert n isa AExpr
7647 _n_args.add(n)
7648 n.parent = self
7649 end
7650 for n in n_closure_defs do
7651 assert n isa AClosureDef
7652 _n_closure_defs.add(n)
7653 n.parent = self
7654 end
7655 end
7656
7657 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7658 do
7659 if _n_expr == old_child then
7660 if new_child != null then
7661 new_child.parent = self
7662 assert new_child isa AExpr
7663 _n_expr = new_child
7664 else
7665 abort
7666 end
7667 return
7668 end
7669 for i in [0.._n_args.length[ do
7670 if _n_args[i] == old_child then
7671 if new_child != null then
7672 assert new_child isa AExpr
7673 _n_args[i] = new_child
7674 new_child.parent = self
7675 else
7676 _n_args.remove_at(i)
7677 end
7678 return
7679 end
7680 end
7681 for i in [0.._n_closure_defs.length[ do
7682 if _n_closure_defs[i] == old_child then
7683 if new_child != null then
7684 assert new_child isa AClosureDef
7685 _n_closure_defs[i] = new_child
7686 new_child.parent = self
7687 else
7688 _n_closure_defs.remove_at(i)
7689 end
7690 return
7691 end
7692 end
7693 end
7694
7695 redef fun visit_all(v: Visitor)
7696 do
7697 v.enter_visit(_n_expr)
7698 for n in _n_args do
7699 v.enter_visit(n)
7700 end
7701 for n in _n_closure_defs do
7702 v.enter_visit(n)
7703 end
7704 end
7705
7706 redef fun visit_all_reverse(v: Visitor)
7707 do
7708 v.enter_visit(_n_expr)
7709 do
7710 var i = _n_args.length
7711 while i >= 0 do
7712 v.enter_visit(_n_args[i])
7713 i = i - 1
7714 end
7715 end
7716 do
7717 var i = _n_closure_defs.length
7718 while i >= 0 do
7719 v.enter_visit(_n_closure_defs[i])
7720 i = i - 1
7721 end
7722 end
7723 end
7724 end
7725 redef class ABraAssignExpr
7726 redef fun n_expr=(n)
7727 do
7728 _n_expr = n
7729 n.parent = self
7730 end
7731 redef fun n_assign=(n)
7732 do
7733 _n_assign = n
7734 n.parent = self
7735 end
7736 redef fun n_value=(n)
7737 do
7738 _n_value = n
7739 n.parent = self
7740 end
7741
7742 private init empty_init do end
7743
7744 init init_abraassignexpr (
7745 n_expr: nullable AExpr,
7746 n_args: Collection[Object], # Should be Collection[AExpr]
7747 n_assign: nullable TAssign,
7748 n_value: nullable AExpr
7749 )
7750 do
7751 empty_init
7752 _n_expr = n_expr.as(not null)
7753 n_expr.parent = self
7754 for n in n_args do
7755 assert n isa AExpr
7756 _n_args.add(n)
7757 n.parent = self
7758 end
7759 _n_assign = n_assign.as(not null)
7760 n_assign.parent = self
7761 _n_value = n_value.as(not null)
7762 n_value.parent = self
7763 end
7764
7765 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7766 do
7767 if _n_expr == old_child then
7768 if new_child != null then
7769 new_child.parent = self
7770 assert new_child isa AExpr
7771 _n_expr = new_child
7772 else
7773 abort
7774 end
7775 return
7776 end
7777 for i in [0.._n_args.length[ do
7778 if _n_args[i] == old_child then
7779 if new_child != null then
7780 assert new_child isa AExpr
7781 _n_args[i] = new_child
7782 new_child.parent = self
7783 else
7784 _n_args.remove_at(i)
7785 end
7786 return
7787 end
7788 end
7789 if _n_assign == old_child then
7790 if new_child != null then
7791 new_child.parent = self
7792 assert new_child isa TAssign
7793 _n_assign = new_child
7794 else
7795 abort
7796 end
7797 return
7798 end
7799 if _n_value == old_child then
7800 if new_child != null then
7801 new_child.parent = self
7802 assert new_child isa AExpr
7803 _n_value = new_child
7804 else
7805 abort
7806 end
7807 return
7808 end
7809 end
7810
7811 redef fun visit_all(v: Visitor)
7812 do
7813 v.enter_visit(_n_expr)
7814 for n in _n_args do
7815 v.enter_visit(n)
7816 end
7817 v.enter_visit(_n_assign)
7818 v.enter_visit(_n_value)
7819 end
7820
7821 redef fun visit_all_reverse(v: Visitor)
7822 do
7823 v.enter_visit(_n_expr)
7824 do
7825 var i = _n_args.length
7826 while i >= 0 do
7827 v.enter_visit(_n_args[i])
7828 i = i - 1
7829 end
7830 end
7831 v.enter_visit(_n_assign)
7832 v.enter_visit(_n_value)
7833 end
7834 end
7835 redef class ABraReassignExpr
7836 redef fun n_expr=(n)
7837 do
7838 _n_expr = n
7839 n.parent = self
7840 end
7841 redef fun n_assign_op=(n)
7842 do
7843 _n_assign_op = n
7844 n.parent = self
7845 end
7846 redef fun n_value=(n)
7847 do
7848 _n_value = n
7849 n.parent = self
7850 end
7851
7852 private init empty_init do end
7853
7854 init init_abrareassignexpr (
7855 n_expr: nullable AExpr,
7856 n_args: Collection[Object], # Should be Collection[AExpr]
7857 n_assign_op: nullable AAssignOp,
7858 n_value: nullable AExpr
7859 )
7860 do
7861 empty_init
7862 _n_expr = n_expr.as(not null)
7863 n_expr.parent = self
7864 for n in n_args do
7865 assert n isa AExpr
7866 _n_args.add(n)
7867 n.parent = self
7868 end
7869 _n_assign_op = n_assign_op.as(not null)
7870 n_assign_op.parent = self
7871 _n_value = n_value.as(not null)
7872 n_value.parent = self
7873 end
7874
7875 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7876 do
7877 if _n_expr == old_child then
7878 if new_child != null then
7879 new_child.parent = self
7880 assert new_child isa AExpr
7881 _n_expr = new_child
7882 else
7883 abort
7884 end
7885 return
7886 end
7887 for i in [0.._n_args.length[ do
7888 if _n_args[i] == old_child then
7889 if new_child != null then
7890 assert new_child isa AExpr
7891 _n_args[i] = new_child
7892 new_child.parent = self
7893 else
7894 _n_args.remove_at(i)
7895 end
7896 return
7897 end
7898 end
7899 if _n_assign_op == old_child then
7900 if new_child != null then
7901 new_child.parent = self
7902 assert new_child isa AAssignOp
7903 _n_assign_op = new_child
7904 else
7905 abort
7906 end
7907 return
7908 end
7909 if _n_value == old_child then
7910 if new_child != null then
7911 new_child.parent = self
7912 assert new_child isa AExpr
7913 _n_value = new_child
7914 else
7915 abort
7916 end
7917 return
7918 end
7919 end
7920
7921 redef fun visit_all(v: Visitor)
7922 do
7923 v.enter_visit(_n_expr)
7924 for n in _n_args do
7925 v.enter_visit(n)
7926 end
7927 v.enter_visit(_n_assign_op)
7928 v.enter_visit(_n_value)
7929 end
7930
7931 redef fun visit_all_reverse(v: Visitor)
7932 do
7933 v.enter_visit(_n_expr)
7934 do
7935 var i = _n_args.length
7936 while i >= 0 do
7937 v.enter_visit(_n_args[i])
7938 i = i - 1
7939 end
7940 end
7941 v.enter_visit(_n_assign_op)
7942 v.enter_visit(_n_value)
7943 end
7944 end
7945 redef class AClosureCallExpr
7946 redef fun n_id=(n)
7947 do
7948 _n_id = n
7949 n.parent = self
7950 end
7951
7952 private init empty_init do end
7953
7954 init init_aclosurecallexpr (
7955 n_id: nullable TId,
7956 n_args: Collection[Object], # Should be Collection[AExpr]
7957 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
7958 )
7959 do
7960 empty_init
7961 _n_id = n_id.as(not null)
7962 n_id.parent = self
7963 for n in n_args do
7964 assert n isa AExpr
7965 _n_args.add(n)
7966 n.parent = self
7967 end
7968 for n in n_closure_defs do
7969 assert n isa AClosureDef
7970 _n_closure_defs.add(n)
7971 n.parent = self
7972 end
7973 end
7974
7975 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7976 do
7977 if _n_id == old_child then
7978 if new_child != null then
7979 new_child.parent = self
7980 assert new_child isa TId
7981 _n_id = new_child
7982 else
7983 abort
7984 end
7985 return
7986 end
7987 for i in [0.._n_args.length[ do
7988 if _n_args[i] == old_child then
7989 if new_child != null then
7990 assert new_child isa AExpr
7991 _n_args[i] = new_child
7992 new_child.parent = self
7993 else
7994 _n_args.remove_at(i)
7995 end
7996 return
7997 end
7998 end
7999 for i in [0.._n_closure_defs.length[ do
8000 if _n_closure_defs[i] == old_child then
8001 if new_child != null then
8002 assert new_child isa AClosureDef
8003 _n_closure_defs[i] = new_child
8004 new_child.parent = self
8005 else
8006 _n_closure_defs.remove_at(i)
8007 end
8008 return
8009 end
8010 end
8011 end
8012
8013 redef fun visit_all(v: Visitor)
8014 do
8015 v.enter_visit(_n_id)
8016 for n in _n_args do
8017 v.enter_visit(n)
8018 end
8019 for n in _n_closure_defs do
8020 v.enter_visit(n)
8021 end
8022 end
8023
8024 redef fun visit_all_reverse(v: Visitor)
8025 do
8026 v.enter_visit(_n_id)
8027 do
8028 var i = _n_args.length
8029 while i >= 0 do
8030 v.enter_visit(_n_args[i])
8031 i = i - 1
8032 end
8033 end
8034 do
8035 var i = _n_closure_defs.length
8036 while i >= 0 do
8037 v.enter_visit(_n_closure_defs[i])
8038 i = i - 1
8039 end
8040 end
8041 end
8042 end
8043 redef class AVarExpr
8044 redef fun n_id=(n)
8045 do
8046 _n_id = n
8047 n.parent = self
8048 end
8049
8050 private init empty_init do end
8051
8052 init init_avarexpr (
8053 n_id: nullable TId
8054 )
8055 do
8056 empty_init
8057 _n_id = n_id.as(not null)
8058 n_id.parent = self
8059 end
8060
8061 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8062 do
8063 if _n_id == old_child then
8064 if new_child != null then
8065 new_child.parent = self
8066 assert new_child isa TId
8067 _n_id = new_child
8068 else
8069 abort
8070 end
8071 return
8072 end
8073 end
8074
8075 redef fun visit_all(v: Visitor)
8076 do
8077 v.enter_visit(_n_id)
8078 end
8079
8080 redef fun visit_all_reverse(v: Visitor)
8081 do
8082 v.enter_visit(_n_id)
8083 end
8084 end
8085 redef class AVarAssignExpr
8086 redef fun n_id=(n)
8087 do
8088 _n_id = n
8089 n.parent = self
8090 end
8091 redef fun n_assign=(n)
8092 do
8093 _n_assign = n
8094 n.parent = self
8095 end
8096 redef fun n_value=(n)
8097 do
8098 _n_value = n
8099 n.parent = self
8100 end
8101
8102 private init empty_init do end
8103
8104 init init_avarassignexpr (
8105 n_id: nullable TId,
8106 n_assign: nullable TAssign,
8107 n_value: nullable AExpr
8108 )
8109 do
8110 empty_init
8111 _n_id = n_id.as(not null)
8112 n_id.parent = self
8113 _n_assign = n_assign.as(not null)
8114 n_assign.parent = self
8115 _n_value = n_value.as(not null)
8116 n_value.parent = self
8117 end
8118
8119 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8120 do
8121 if _n_id == old_child then
8122 if new_child != null then
8123 new_child.parent = self
8124 assert new_child isa TId
8125 _n_id = new_child
8126 else
8127 abort
8128 end
8129 return
8130 end
8131 if _n_assign == old_child then
8132 if new_child != null then
8133 new_child.parent = self
8134 assert new_child isa TAssign
8135 _n_assign = new_child
8136 else
8137 abort
8138 end
8139 return
8140 end
8141 if _n_value == old_child then
8142 if new_child != null then
8143 new_child.parent = self
8144 assert new_child isa AExpr
8145 _n_value = new_child
8146 else
8147 abort
8148 end
8149 return
8150 end
8151 end
8152
8153 redef fun visit_all(v: Visitor)
8154 do
8155 v.enter_visit(_n_id)
8156 v.enter_visit(_n_assign)
8157 v.enter_visit(_n_value)
8158 end
8159
8160 redef fun visit_all_reverse(v: Visitor)
8161 do
8162 v.enter_visit(_n_id)
8163 v.enter_visit(_n_assign)
8164 v.enter_visit(_n_value)
8165 end
8166 end
8167 redef class AVarReassignExpr
8168 redef fun n_id=(n)
8169 do
8170 _n_id = n
8171 n.parent = self
8172 end
8173 redef fun n_assign_op=(n)
8174 do
8175 _n_assign_op = n
8176 n.parent = self
8177 end
8178 redef fun n_value=(n)
8179 do
8180 _n_value = n
8181 n.parent = self
8182 end
8183
8184 private init empty_init do end
8185
8186 init init_avarreassignexpr (
8187 n_id: nullable TId,
8188 n_assign_op: nullable AAssignOp,
8189 n_value: nullable AExpr
8190 )
8191 do
8192 empty_init
8193 _n_id = n_id.as(not null)
8194 n_id.parent = self
8195 _n_assign_op = n_assign_op.as(not null)
8196 n_assign_op.parent = self
8197 _n_value = n_value.as(not null)
8198 n_value.parent = self
8199 end
8200
8201 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8202 do
8203 if _n_id == old_child then
8204 if new_child != null then
8205 new_child.parent = self
8206 assert new_child isa TId
8207 _n_id = new_child
8208 else
8209 abort
8210 end
8211 return
8212 end
8213 if _n_assign_op == old_child then
8214 if new_child != null then
8215 new_child.parent = self
8216 assert new_child isa AAssignOp
8217 _n_assign_op = new_child
8218 else
8219 abort
8220 end
8221 return
8222 end
8223 if _n_value == old_child then
8224 if new_child != null then
8225 new_child.parent = self
8226 assert new_child isa AExpr
8227 _n_value = new_child
8228 else
8229 abort
8230 end
8231 return
8232 end
8233 end
8234
8235 redef fun visit_all(v: Visitor)
8236 do
8237 v.enter_visit(_n_id)
8238 v.enter_visit(_n_assign_op)
8239 v.enter_visit(_n_value)
8240 end
8241
8242 redef fun visit_all_reverse(v: Visitor)
8243 do
8244 v.enter_visit(_n_id)
8245 v.enter_visit(_n_assign_op)
8246 v.enter_visit(_n_value)
8247 end
8248 end
8249 redef class ARangeExpr
8250 redef fun n_expr=(n)
8251 do
8252 _n_expr = n
8253 n.parent = self
8254 end
8255 redef fun n_expr2=(n)
8256 do
8257 _n_expr2 = n
8258 n.parent = self
8259 end
8260
8261 private init empty_init do end
8262
8263 init init_arangeexpr (
8264 n_expr: nullable AExpr,
8265 n_expr2: nullable AExpr
8266 )
8267 do
8268 empty_init
8269 _n_expr = n_expr.as(not null)
8270 n_expr.parent = self
8271 _n_expr2 = n_expr2.as(not null)
8272 n_expr2.parent = self
8273 end
8274
8275 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8276 do
8277 if _n_expr == old_child then
8278 if new_child != null then
8279 new_child.parent = self
8280 assert new_child isa AExpr
8281 _n_expr = new_child
8282 else
8283 abort
8284 end
8285 return
8286 end
8287 if _n_expr2 == old_child then
8288 if new_child != null then
8289 new_child.parent = self
8290 assert new_child isa AExpr
8291 _n_expr2 = new_child
8292 else
8293 abort
8294 end
8295 return
8296 end
8297 end
8298
8299 redef fun visit_all(v: Visitor)
8300 do
8301 v.enter_visit(_n_expr)
8302 v.enter_visit(_n_expr2)
8303 end
8304
8305 redef fun visit_all_reverse(v: Visitor)
8306 do
8307 v.enter_visit(_n_expr)
8308 v.enter_visit(_n_expr2)
8309 end
8310 end
8311 redef class ACrangeExpr
8312 redef fun n_expr=(n)
8313 do
8314 _n_expr = n
8315 n.parent = self
8316 end
8317 redef fun n_expr2=(n)
8318 do
8319 _n_expr2 = n
8320 n.parent = self
8321 end
8322
8323 private init empty_init do end
8324
8325 init init_acrangeexpr (
8326 n_expr: nullable AExpr,
8327 n_expr2: nullable AExpr
8328 )
8329 do
8330 empty_init
8331 _n_expr = n_expr.as(not null)
8332 n_expr.parent = self
8333 _n_expr2 = n_expr2.as(not null)
8334 n_expr2.parent = self
8335 end
8336
8337 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8338 do
8339 if _n_expr == old_child then
8340 if new_child != null then
8341 new_child.parent = self
8342 assert new_child isa AExpr
8343 _n_expr = new_child
8344 else
8345 abort
8346 end
8347 return
8348 end
8349 if _n_expr2 == old_child then
8350 if new_child != null then
8351 new_child.parent = self
8352 assert new_child isa AExpr
8353 _n_expr2 = new_child
8354 else
8355 abort
8356 end
8357 return
8358 end
8359 end
8360
8361 redef fun visit_all(v: Visitor)
8362 do
8363 v.enter_visit(_n_expr)
8364 v.enter_visit(_n_expr2)
8365 end
8366
8367 redef fun visit_all_reverse(v: Visitor)
8368 do
8369 v.enter_visit(_n_expr)
8370 v.enter_visit(_n_expr2)
8371 end
8372 end
8373 redef class AOrangeExpr
8374 redef fun n_expr=(n)
8375 do
8376 _n_expr = n
8377 n.parent = self
8378 end
8379 redef fun n_expr2=(n)
8380 do
8381 _n_expr2 = n
8382 n.parent = self
8383 end
8384
8385 private init empty_init do end
8386
8387 init init_aorangeexpr (
8388 n_expr: nullable AExpr,
8389 n_expr2: nullable AExpr
8390 )
8391 do
8392 empty_init
8393 _n_expr = n_expr.as(not null)
8394 n_expr.parent = self
8395 _n_expr2 = n_expr2.as(not null)
8396 n_expr2.parent = self
8397 end
8398
8399 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8400 do
8401 if _n_expr == old_child then
8402 if new_child != null then
8403 new_child.parent = self
8404 assert new_child isa AExpr
8405 _n_expr = new_child
8406 else
8407 abort
8408 end
8409 return
8410 end
8411 if _n_expr2 == old_child then
8412 if new_child != null then
8413 new_child.parent = self
8414 assert new_child isa AExpr
8415 _n_expr2 = new_child
8416 else
8417 abort
8418 end
8419 return
8420 end
8421 end
8422
8423 redef fun visit_all(v: Visitor)
8424 do
8425 v.enter_visit(_n_expr)
8426 v.enter_visit(_n_expr2)
8427 end
8428
8429 redef fun visit_all_reverse(v: Visitor)
8430 do
8431 v.enter_visit(_n_expr)
8432 v.enter_visit(_n_expr2)
8433 end
8434 end
8435 redef class AArrayExpr
8436
8437 private init empty_init do end
8438
8439 init init_aarrayexpr (
8440 n_exprs: Collection[Object] # Should be Collection[AExpr]
8441 )
8442 do
8443 empty_init
8444 for n in n_exprs do
8445 assert n isa AExpr
8446 _n_exprs.add(n)
8447 n.parent = self
8448 end
8449 end
8450
8451 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8452 do
8453 for i in [0.._n_exprs.length[ do
8454 if _n_exprs[i] == old_child then
8455 if new_child != null then
8456 assert new_child isa AExpr
8457 _n_exprs[i] = new_child
8458 new_child.parent = self
8459 else
8460 _n_exprs.remove_at(i)
8461 end
8462 return
8463 end
8464 end
8465 end
8466
8467 redef fun visit_all(v: Visitor)
8468 do
8469 for n in _n_exprs do
8470 v.enter_visit(n)
8471 end
8472 end
8473
8474 redef fun visit_all_reverse(v: Visitor)
8475 do
8476 do
8477 var i = _n_exprs.length
8478 while i >= 0 do
8479 v.enter_visit(_n_exprs[i])
8480 i = i - 1
8481 end
8482 end
8483 end
8484 end
8485 redef class ASelfExpr
8486 redef fun n_kwself=(n)
8487 do
8488 _n_kwself = n
8489 n.parent = self
8490 end
8491
8492 private init empty_init do end
8493
8494 init init_aselfexpr (
8495 n_kwself: nullable TKwself
8496 )
8497 do
8498 empty_init
8499 _n_kwself = n_kwself.as(not null)
8500 n_kwself.parent = self
8501 end
8502
8503 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8504 do
8505 if _n_kwself == old_child then
8506 if new_child != null then
8507 new_child.parent = self
8508 assert new_child isa TKwself
8509 _n_kwself = new_child
8510 else
8511 abort
8512 end
8513 return
8514 end
8515 end
8516
8517 redef fun visit_all(v: Visitor)
8518 do
8519 v.enter_visit(_n_kwself)
8520 end
8521
8522 redef fun visit_all_reverse(v: Visitor)
8523 do
8524 v.enter_visit(_n_kwself)
8525 end
8526 end
8527 redef class AImplicitSelfExpr
8528
8529 private init empty_init do end
8530
8531 init init_aimplicitselfexpr
8532 do
8533 empty_init
8534 end
8535
8536 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8537 do
8538 end
8539
8540 redef fun visit_all(v: Visitor)
8541 do
8542 end
8543
8544 redef fun visit_all_reverse(v: Visitor)
8545 do
8546 end
8547 end
8548 redef class ATrueExpr
8549 redef fun n_kwtrue=(n)
8550 do
8551 _n_kwtrue = n
8552 n.parent = self
8553 end
8554
8555 private init empty_init do end
8556
8557 init init_atrueexpr (
8558 n_kwtrue: nullable TKwtrue
8559 )
8560 do
8561 empty_init
8562 _n_kwtrue = n_kwtrue.as(not null)
8563 n_kwtrue.parent = self
8564 end
8565
8566 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8567 do
8568 if _n_kwtrue == old_child then
8569 if new_child != null then
8570 new_child.parent = self
8571 assert new_child isa TKwtrue
8572 _n_kwtrue = new_child
8573 else
8574 abort
8575 end
8576 return
8577 end
8578 end
8579
8580 redef fun visit_all(v: Visitor)
8581 do
8582 v.enter_visit(_n_kwtrue)
8583 end
8584
8585 redef fun visit_all_reverse(v: Visitor)
8586 do
8587 v.enter_visit(_n_kwtrue)
8588 end
8589 end
8590 redef class AFalseExpr
8591 redef fun n_kwfalse=(n)
8592 do
8593 _n_kwfalse = n
8594 n.parent = self
8595 end
8596
8597 private init empty_init do end
8598
8599 init init_afalseexpr (
8600 n_kwfalse: nullable TKwfalse
8601 )
8602 do
8603 empty_init
8604 _n_kwfalse = n_kwfalse.as(not null)
8605 n_kwfalse.parent = self
8606 end
8607
8608 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8609 do
8610 if _n_kwfalse == old_child then
8611 if new_child != null then
8612 new_child.parent = self
8613 assert new_child isa TKwfalse
8614 _n_kwfalse = new_child
8615 else
8616 abort
8617 end
8618 return
8619 end
8620 end
8621
8622 redef fun visit_all(v: Visitor)
8623 do
8624 v.enter_visit(_n_kwfalse)
8625 end
8626
8627 redef fun visit_all_reverse(v: Visitor)
8628 do
8629 v.enter_visit(_n_kwfalse)
8630 end
8631 end
8632 redef class ANullExpr
8633 redef fun n_kwnull=(n)
8634 do
8635 _n_kwnull = n
8636 n.parent = self
8637 end
8638
8639 private init empty_init do end
8640
8641 init init_anullexpr (
8642 n_kwnull: nullable TKwnull
8643 )
8644 do
8645 empty_init
8646 _n_kwnull = n_kwnull.as(not null)
8647 n_kwnull.parent = self
8648 end
8649
8650 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8651 do
8652 if _n_kwnull == old_child then
8653 if new_child != null then
8654 new_child.parent = self
8655 assert new_child isa TKwnull
8656 _n_kwnull = new_child
8657 else
8658 abort
8659 end
8660 return
8661 end
8662 end
8663
8664 redef fun visit_all(v: Visitor)
8665 do
8666 v.enter_visit(_n_kwnull)
8667 end
8668
8669 redef fun visit_all_reverse(v: Visitor)
8670 do
8671 v.enter_visit(_n_kwnull)
8672 end
8673 end
8674 redef class AIntExpr
8675 redef fun n_number=(n)
8676 do
8677 _n_number = n
8678 n.parent = self
8679 end
8680
8681 private init empty_init do end
8682
8683 init init_aintexpr (
8684 n_number: nullable TNumber
8685 )
8686 do
8687 empty_init
8688 _n_number = n_number.as(not null)
8689 n_number.parent = self
8690 end
8691
8692 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8693 do
8694 if _n_number == old_child then
8695 if new_child != null then
8696 new_child.parent = self
8697 assert new_child isa TNumber
8698 _n_number = new_child
8699 else
8700 abort
8701 end
8702 return
8703 end
8704 end
8705
8706 redef fun visit_all(v: Visitor)
8707 do
8708 v.enter_visit(_n_number)
8709 end
8710
8711 redef fun visit_all_reverse(v: Visitor)
8712 do
8713 v.enter_visit(_n_number)
8714 end
8715 end
8716 redef class AFloatExpr
8717 redef fun n_float=(n)
8718 do
8719 _n_float = n
8720 n.parent = self
8721 end
8722
8723 private init empty_init do end
8724
8725 init init_afloatexpr (
8726 n_float: nullable TFloat
8727 )
8728 do
8729 empty_init
8730 _n_float = n_float.as(not null)
8731 n_float.parent = self
8732 end
8733
8734 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8735 do
8736 if _n_float == old_child then
8737 if new_child != null then
8738 new_child.parent = self
8739 assert new_child isa TFloat
8740 _n_float = new_child
8741 else
8742 abort
8743 end
8744 return
8745 end
8746 end
8747
8748 redef fun visit_all(v: Visitor)
8749 do
8750 v.enter_visit(_n_float)
8751 end
8752
8753 redef fun visit_all_reverse(v: Visitor)
8754 do
8755 v.enter_visit(_n_float)
8756 end
8757 end
8758 redef class ACharExpr
8759 redef fun n_char=(n)
8760 do
8761 _n_char = n
8762 n.parent = self
8763 end
8764
8765 private init empty_init do end
8766
8767 init init_acharexpr (
8768 n_char: nullable TChar
8769 )
8770 do
8771 empty_init
8772 _n_char = n_char.as(not null)
8773 n_char.parent = self
8774 end
8775
8776 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8777 do
8778 if _n_char == old_child then
8779 if new_child != null then
8780 new_child.parent = self
8781 assert new_child isa TChar
8782 _n_char = new_child
8783 else
8784 abort
8785 end
8786 return
8787 end
8788 end
8789
8790 redef fun visit_all(v: Visitor)
8791 do
8792 v.enter_visit(_n_char)
8793 end
8794
8795 redef fun visit_all_reverse(v: Visitor)
8796 do
8797 v.enter_visit(_n_char)
8798 end
8799 end
8800 redef class AStringExpr
8801 redef fun n_string=(n)
8802 do
8803 _n_string = n
8804 n.parent = self
8805 end
8806
8807 private init empty_init do end
8808
8809 init init_astringexpr (
8810 n_string: nullable TString
8811 )
8812 do
8813 empty_init
8814 _n_string = n_string.as(not null)
8815 n_string.parent = self
8816 end
8817
8818 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8819 do
8820 if _n_string == old_child then
8821 if new_child != null then
8822 new_child.parent = self
8823 assert new_child isa TString
8824 _n_string = new_child
8825 else
8826 abort
8827 end
8828 return
8829 end
8830 end
8831
8832 redef fun visit_all(v: Visitor)
8833 do
8834 v.enter_visit(_n_string)
8835 end
8836
8837 redef fun visit_all_reverse(v: Visitor)
8838 do
8839 v.enter_visit(_n_string)
8840 end
8841 end
8842 redef class AStartStringExpr
8843 redef fun n_string=(n)
8844 do
8845 _n_string = n
8846 n.parent = self
8847 end
8848
8849 private init empty_init do end
8850
8851 init init_astartstringexpr (
8852 n_string: nullable TStartString
8853 )
8854 do
8855 empty_init
8856 _n_string = n_string.as(not null)
8857 n_string.parent = self
8858 end
8859
8860 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8861 do
8862 if _n_string == old_child then
8863 if new_child != null then
8864 new_child.parent = self
8865 assert new_child isa TStartString
8866 _n_string = new_child
8867 else
8868 abort
8869 end
8870 return
8871 end
8872 end
8873
8874 redef fun visit_all(v: Visitor)
8875 do
8876 v.enter_visit(_n_string)
8877 end
8878
8879 redef fun visit_all_reverse(v: Visitor)
8880 do
8881 v.enter_visit(_n_string)
8882 end
8883 end
8884 redef class AMidStringExpr
8885 redef fun n_string=(n)
8886 do
8887 _n_string = n
8888 n.parent = self
8889 end
8890
8891 private init empty_init do end
8892
8893 init init_amidstringexpr (
8894 n_string: nullable TMidString
8895 )
8896 do
8897 empty_init
8898 _n_string = n_string.as(not null)
8899 n_string.parent = self
8900 end
8901
8902 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8903 do
8904 if _n_string == old_child then
8905 if new_child != null then
8906 new_child.parent = self
8907 assert new_child isa TMidString
8908 _n_string = new_child
8909 else
8910 abort
8911 end
8912 return
8913 end
8914 end
8915
8916 redef fun visit_all(v: Visitor)
8917 do
8918 v.enter_visit(_n_string)
8919 end
8920
8921 redef fun visit_all_reverse(v: Visitor)
8922 do
8923 v.enter_visit(_n_string)
8924 end
8925 end
8926 redef class AEndStringExpr
8927 redef fun n_string=(n)
8928 do
8929 _n_string = n
8930 n.parent = self
8931 end
8932
8933 private init empty_init do end
8934
8935 init init_aendstringexpr (
8936 n_string: nullable TEndString
8937 )
8938 do
8939 empty_init
8940 _n_string = n_string.as(not null)
8941 n_string.parent = self
8942 end
8943
8944 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8945 do
8946 if _n_string == old_child then
8947 if new_child != null then
8948 new_child.parent = self
8949 assert new_child isa TEndString
8950 _n_string = new_child
8951 else
8952 abort
8953 end
8954 return
8955 end
8956 end
8957
8958 redef fun visit_all(v: Visitor)
8959 do
8960 v.enter_visit(_n_string)
8961 end
8962
8963 redef fun visit_all_reverse(v: Visitor)
8964 do
8965 v.enter_visit(_n_string)
8966 end
8967 end
8968 redef class ASuperstringExpr
8969
8970 private init empty_init do end
8971
8972 init init_asuperstringexpr (
8973 n_exprs: Collection[Object] # Should be Collection[AExpr]
8974 )
8975 do
8976 empty_init
8977 for n in n_exprs do
8978 assert n isa AExpr
8979 _n_exprs.add(n)
8980 n.parent = self
8981 end
8982 end
8983
8984 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
8985 do
8986 for i in [0.._n_exprs.length[ do
8987 if _n_exprs[i] == old_child then
8988 if new_child != null then
8989 assert new_child isa AExpr
8990 _n_exprs[i] = new_child
8991 new_child.parent = self
8992 else
8993 _n_exprs.remove_at(i)
8994 end
8995 return
8996 end
8997 end
8998 end
8999
9000 redef fun visit_all(v: Visitor)
9001 do
9002 for n in _n_exprs do
9003 v.enter_visit(n)
9004 end
9005 end
9006
9007 redef fun visit_all_reverse(v: Visitor)
9008 do
9009 do
9010 var i = _n_exprs.length
9011 while i >= 0 do
9012 v.enter_visit(_n_exprs[i])
9013 i = i - 1
9014 end
9015 end
9016 end
9017 end
9018 redef class AParExpr
9019 redef fun n_expr=(n)
9020 do
9021 _n_expr = n
9022 n.parent = self
9023 end
9024
9025 private init empty_init do end
9026
9027 init init_aparexpr (
9028 n_expr: nullable AExpr
9029 )
9030 do
9031 empty_init
9032 _n_expr = n_expr.as(not null)
9033 n_expr.parent = self
9034 end
9035
9036 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9037 do
9038 if _n_expr == old_child then
9039 if new_child != null then
9040 new_child.parent = self
9041 assert new_child isa AExpr
9042 _n_expr = new_child
9043 else
9044 abort
9045 end
9046 return
9047 end
9048 end
9049
9050 redef fun visit_all(v: Visitor)
9051 do
9052 v.enter_visit(_n_expr)
9053 end
9054
9055 redef fun visit_all_reverse(v: Visitor)
9056 do
9057 v.enter_visit(_n_expr)
9058 end
9059 end
9060 redef class AAsCastExpr
9061 redef fun n_expr=(n)
9062 do
9063 _n_expr = n
9064 n.parent = self
9065 end
9066 redef fun n_kwas=(n)
9067 do
9068 _n_kwas = n
9069 n.parent = self
9070 end
9071 redef fun n_type=(n)
9072 do
9073 _n_type = n
9074 n.parent = self
9075 end
9076
9077 private init empty_init do end
9078
9079 init init_aascastexpr (
9080 n_expr: nullable AExpr,
9081 n_kwas: nullable TKwas,
9082 n_type: nullable AType
9083 )
9084 do
9085 empty_init
9086 _n_expr = n_expr.as(not null)
9087 n_expr.parent = self
9088 _n_kwas = n_kwas.as(not null)
9089 n_kwas.parent = self
9090 _n_type = n_type.as(not null)
9091 n_type.parent = self
9092 end
9093
9094 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9095 do
9096 if _n_expr == old_child then
9097 if new_child != null then
9098 new_child.parent = self
9099 assert new_child isa AExpr
9100 _n_expr = new_child
9101 else
9102 abort
9103 end
9104 return
9105 end
9106 if _n_kwas == old_child then
9107 if new_child != null then
9108 new_child.parent = self
9109 assert new_child isa TKwas
9110 _n_kwas = new_child
9111 else
9112 abort
9113 end
9114 return
9115 end
9116 if _n_type == old_child then
9117 if new_child != null then
9118 new_child.parent = self
9119 assert new_child isa AType
9120 _n_type = new_child
9121 else
9122 abort
9123 end
9124 return
9125 end
9126 end
9127
9128 redef fun visit_all(v: Visitor)
9129 do
9130 v.enter_visit(_n_expr)
9131 v.enter_visit(_n_kwas)
9132 v.enter_visit(_n_type)
9133 end
9134
9135 redef fun visit_all_reverse(v: Visitor)
9136 do
9137 v.enter_visit(_n_expr)
9138 v.enter_visit(_n_kwas)
9139 v.enter_visit(_n_type)
9140 end
9141 end
9142 redef class AAsNotnullExpr
9143 redef fun n_expr=(n)
9144 do
9145 _n_expr = n
9146 n.parent = self
9147 end
9148 redef fun n_kwas=(n)
9149 do
9150 _n_kwas = n
9151 n.parent = self
9152 end
9153 redef fun n_kwnot=(n)
9154 do
9155 _n_kwnot = n
9156 n.parent = self
9157 end
9158 redef fun n_kwnull=(n)
9159 do
9160 _n_kwnull = n
9161 n.parent = self
9162 end
9163
9164 private init empty_init do end
9165
9166 init init_aasnotnullexpr (
9167 n_expr: nullable AExpr,
9168 n_kwas: nullable TKwas,
9169 n_kwnot: nullable TKwnot,
9170 n_kwnull: nullable TKwnull
9171 )
9172 do
9173 empty_init
9174 _n_expr = n_expr.as(not null)
9175 n_expr.parent = self
9176 _n_kwas = n_kwas.as(not null)
9177 n_kwas.parent = self
9178 _n_kwnot = n_kwnot.as(not null)
9179 n_kwnot.parent = self
9180 _n_kwnull = n_kwnull.as(not null)
9181 n_kwnull.parent = self
9182 end
9183
9184 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9185 do
9186 if _n_expr == old_child then
9187 if new_child != null then
9188 new_child.parent = self
9189 assert new_child isa AExpr
9190 _n_expr = new_child
9191 else
9192 abort
9193 end
9194 return
9195 end
9196 if _n_kwas == old_child then
9197 if new_child != null then
9198 new_child.parent = self
9199 assert new_child isa TKwas
9200 _n_kwas = new_child
9201 else
9202 abort
9203 end
9204 return
9205 end
9206 if _n_kwnot == old_child then
9207 if new_child != null then
9208 new_child.parent = self
9209 assert new_child isa TKwnot
9210 _n_kwnot = new_child
9211 else
9212 abort
9213 end
9214 return
9215 end
9216 if _n_kwnull == old_child then
9217 if new_child != null then
9218 new_child.parent = self
9219 assert new_child isa TKwnull
9220 _n_kwnull = new_child
9221 else
9222 abort
9223 end
9224 return
9225 end
9226 end
9227
9228 redef fun visit_all(v: Visitor)
9229 do
9230 v.enter_visit(_n_expr)
9231 v.enter_visit(_n_kwas)
9232 v.enter_visit(_n_kwnot)
9233 v.enter_visit(_n_kwnull)
9234 end
9235
9236 redef fun visit_all_reverse(v: Visitor)
9237 do
9238 v.enter_visit(_n_expr)
9239 v.enter_visit(_n_kwas)
9240 v.enter_visit(_n_kwnot)
9241 v.enter_visit(_n_kwnull)
9242 end
9243 end
9244 redef class AIssetAttrExpr
9245 redef fun n_kwisset=(n)
9246 do
9247 _n_kwisset = n
9248 n.parent = self
9249 end
9250 redef fun n_expr=(n)
9251 do
9252 _n_expr = n
9253 n.parent = self
9254 end
9255 redef fun n_id=(n)
9256 do
9257 _n_id = n
9258 n.parent = self
9259 end
9260
9261 private init empty_init do end
9262
9263 init init_aissetattrexpr (
9264 n_kwisset: nullable TKwisset,
9265 n_expr: nullable AExpr,
9266 n_id: nullable TAttrid
9267 )
9268 do
9269 empty_init
9270 _n_kwisset = n_kwisset.as(not null)
9271 n_kwisset.parent = self
9272 _n_expr = n_expr.as(not null)
9273 n_expr.parent = self
9274 _n_id = n_id.as(not null)
9275 n_id.parent = self
9276 end
9277
9278 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9279 do
9280 if _n_kwisset == old_child then
9281 if new_child != null then
9282 new_child.parent = self
9283 assert new_child isa TKwisset
9284 _n_kwisset = new_child
9285 else
9286 abort
9287 end
9288 return
9289 end
9290 if _n_expr == old_child then
9291 if new_child != null then
9292 new_child.parent = self
9293 assert new_child isa AExpr
9294 _n_expr = new_child
9295 else
9296 abort
9297 end
9298 return
9299 end
9300 if _n_id == old_child then
9301 if new_child != null then
9302 new_child.parent = self
9303 assert new_child isa TAttrid
9304 _n_id = new_child
9305 else
9306 abort
9307 end
9308 return
9309 end
9310 end
9311
9312 redef fun visit_all(v: Visitor)
9313 do
9314 v.enter_visit(_n_kwisset)
9315 v.enter_visit(_n_expr)
9316 v.enter_visit(_n_id)
9317 end
9318
9319 redef fun visit_all_reverse(v: Visitor)
9320 do
9321 v.enter_visit(_n_kwisset)
9322 v.enter_visit(_n_expr)
9323 v.enter_visit(_n_id)
9324 end
9325 end
9326 redef class APlusAssignOp
9327 redef fun n_pluseq=(n)
9328 do
9329 _n_pluseq = n
9330 n.parent = self
9331 end
9332
9333 private init empty_init do end
9334
9335 init init_aplusassignop (
9336 n_pluseq: nullable TPluseq
9337 )
9338 do
9339 empty_init
9340 _n_pluseq = n_pluseq.as(not null)
9341 n_pluseq.parent = self
9342 end
9343
9344 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9345 do
9346 if _n_pluseq == old_child then
9347 if new_child != null then
9348 new_child.parent = self
9349 assert new_child isa TPluseq
9350 _n_pluseq = new_child
9351 else
9352 abort
9353 end
9354 return
9355 end
9356 end
9357
9358 redef fun visit_all(v: Visitor)
9359 do
9360 v.enter_visit(_n_pluseq)
9361 end
9362
9363 redef fun visit_all_reverse(v: Visitor)
9364 do
9365 v.enter_visit(_n_pluseq)
9366 end
9367 end
9368 redef class AMinusAssignOp
9369 redef fun n_minuseq=(n)
9370 do
9371 _n_minuseq = n
9372 n.parent = self
9373 end
9374
9375 private init empty_init do end
9376
9377 init init_aminusassignop (
9378 n_minuseq: nullable TMinuseq
9379 )
9380 do
9381 empty_init
9382 _n_minuseq = n_minuseq.as(not null)
9383 n_minuseq.parent = self
9384 end
9385
9386 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9387 do
9388 if _n_minuseq == old_child then
9389 if new_child != null then
9390 new_child.parent = self
9391 assert new_child isa TMinuseq
9392 _n_minuseq = new_child
9393 else
9394 abort
9395 end
9396 return
9397 end
9398 end
9399
9400 redef fun visit_all(v: Visitor)
9401 do
9402 v.enter_visit(_n_minuseq)
9403 end
9404
9405 redef fun visit_all_reverse(v: Visitor)
9406 do
9407 v.enter_visit(_n_minuseq)
9408 end
9409 end
9410 redef class AClosureDef
9411 redef fun n_bang=(n)
9412 do
9413 _n_bang = n
9414 n.parent = self
9415 end
9416 redef fun n_id=(n)
9417 do
9418 _n_id = n
9419 n.parent = self
9420 end
9421 redef fun n_kwdo=(n)
9422 do
9423 _n_kwdo = n
9424 if n != null then
9425 n.parent = self
9426 end
9427 end
9428 redef fun n_expr=(n)
9429 do
9430 _n_expr = n
9431 if n != null then
9432 n.parent = self
9433 end
9434 end
9435 redef fun n_label=(n)
9436 do
9437 _n_label = n
9438 if n != null then
9439 n.parent = self
9440 end
9441 end
9442
9443 private init empty_init do end
9444
9445 init init_aclosuredef (
9446 n_bang: nullable TBang,
9447 n_id: nullable AClosureId,
9448 n_ids: Collection[Object], # Should be Collection[TId]
9449 n_kwdo: nullable TKwdo,
9450 n_expr: nullable AExpr,
9451 n_label: nullable ALabel
9452 )
9453 do
9454 empty_init
9455 _n_bang = n_bang.as(not null)
9456 n_bang.parent = self
9457 _n_id = n_id.as(not null)
9458 n_id.parent = self
9459 for n in n_ids do
9460 assert n isa TId
9461 _n_ids.add(n)
9462 n.parent = self
9463 end
9464 _n_kwdo = n_kwdo
9465 if n_kwdo != null then
9466 n_kwdo.parent = self
9467 end
9468 _n_expr = n_expr
9469 if n_expr != null then
9470 n_expr.parent = self
9471 end
9472 _n_label = n_label
9473 if n_label != null then
9474 n_label.parent = self
9475 end
9476 end
9477
9478 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9479 do
9480 if _n_bang == old_child then
9481 if new_child != null then
9482 new_child.parent = self
9483 assert new_child isa TBang
9484 _n_bang = new_child
9485 else
9486 abort
9487 end
9488 return
9489 end
9490 if _n_id == old_child then
9491 if new_child != null then
9492 new_child.parent = self
9493 assert new_child isa AClosureId
9494 _n_id = new_child
9495 else
9496 abort
9497 end
9498 return
9499 end
9500 for i in [0.._n_ids.length[ do
9501 if _n_ids[i] == old_child then
9502 if new_child != null then
9503 assert new_child isa TId
9504 _n_ids[i] = new_child
9505 new_child.parent = self
9506 else
9507 _n_ids.remove_at(i)
9508 end
9509 return
9510 end
9511 end
9512 if _n_kwdo == old_child then
9513 if new_child != null then
9514 new_child.parent = self
9515 assert new_child isa TKwdo
9516 _n_kwdo = new_child
9517 else
9518 _n_kwdo = null
9519 end
9520 return
9521 end
9522 if _n_expr == old_child then
9523 if new_child != null then
9524 new_child.parent = self
9525 assert new_child isa AExpr
9526 _n_expr = new_child
9527 else
9528 _n_expr = null
9529 end
9530 return
9531 end
9532 if _n_label == old_child then
9533 if new_child != null then
9534 new_child.parent = self
9535 assert new_child isa ALabel
9536 _n_label = new_child
9537 else
9538 _n_label = null
9539 end
9540 return
9541 end
9542 end
9543
9544 redef fun visit_all(v: Visitor)
9545 do
9546 v.enter_visit(_n_bang)
9547 v.enter_visit(_n_id)
9548 for n in _n_ids do
9549 v.enter_visit(n)
9550 end
9551 if _n_kwdo != null then
9552 v.enter_visit(_n_kwdo.as(not null))
9553 end
9554 if _n_expr != null then
9555 v.enter_visit(_n_expr.as(not null))
9556 end
9557 if _n_label != null then
9558 v.enter_visit(_n_label.as(not null))
9559 end
9560 end
9561
9562 redef fun visit_all_reverse(v: Visitor)
9563 do
9564 v.enter_visit(_n_bang)
9565 v.enter_visit(_n_id)
9566 do
9567 var i = _n_ids.length
9568 while i >= 0 do
9569 v.enter_visit(_n_ids[i])
9570 i = i - 1
9571 end
9572 end
9573 if _n_kwdo != null then
9574 v.enter_visit(_n_kwdo.as(not null))
9575 end
9576 if _n_expr != null then
9577 v.enter_visit(_n_expr.as(not null))
9578 end
9579 if _n_label != null then
9580 v.enter_visit(_n_label.as(not null))
9581 end
9582 end
9583 end
9584 redef class ASimpleClosureId
9585 redef fun n_id=(n)
9586 do
9587 _n_id = n
9588 n.parent = self
9589 end
9590
9591 private init empty_init do end
9592
9593 init init_asimpleclosureid (
9594 n_id: nullable TId
9595 )
9596 do
9597 empty_init
9598 _n_id = n_id.as(not null)
9599 n_id.parent = self
9600 end
9601
9602 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9603 do
9604 if _n_id == old_child then
9605 if new_child != null then
9606 new_child.parent = self
9607 assert new_child isa TId
9608 _n_id = new_child
9609 else
9610 abort
9611 end
9612 return
9613 end
9614 end
9615
9616 redef fun visit_all(v: Visitor)
9617 do
9618 v.enter_visit(_n_id)
9619 end
9620
9621 redef fun visit_all_reverse(v: Visitor)
9622 do
9623 v.enter_visit(_n_id)
9624 end
9625 end
9626 redef class ABreakClosureId
9627 redef fun n_kwbreak=(n)
9628 do
9629 _n_kwbreak = n
9630 n.parent = self
9631 end
9632
9633 private init empty_init do end
9634
9635 init init_abreakclosureid (
9636 n_kwbreak: nullable TKwbreak
9637 )
9638 do
9639 empty_init
9640 _n_kwbreak = n_kwbreak.as(not null)
9641 n_kwbreak.parent = self
9642 end
9643
9644 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9645 do
9646 if _n_kwbreak == old_child then
9647 if new_child != null then
9648 new_child.parent = self
9649 assert new_child isa TKwbreak
9650 _n_kwbreak = new_child
9651 else
9652 abort
9653 end
9654 return
9655 end
9656 end
9657
9658 redef fun visit_all(v: Visitor)
9659 do
9660 v.enter_visit(_n_kwbreak)
9661 end
9662
9663 redef fun visit_all_reverse(v: Visitor)
9664 do
9665 v.enter_visit(_n_kwbreak)
9666 end
9667 end
9668 redef class AQualified
9669 redef fun n_classid=(n)
9670 do
9671 _n_classid = n
9672 if n != null then
9673 n.parent = self
9674 end
9675 end
9676
9677 private init empty_init do end
9678
9679 init init_aqualified (
9680 n_id: Collection[Object], # Should be Collection[TId]
9681 n_classid: nullable TClassid
9682 )
9683 do
9684 empty_init
9685 for n in n_id do
9686 assert n isa TId
9687 _n_id.add(n)
9688 n.parent = self
9689 end
9690 _n_classid = n_classid
9691 if n_classid != null then
9692 n_classid.parent = self
9693 end
9694 end
9695
9696 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9697 do
9698 for i in [0.._n_id.length[ do
9699 if _n_id[i] == old_child then
9700 if new_child != null then
9701 assert new_child isa TId
9702 _n_id[i] = new_child
9703 new_child.parent = self
9704 else
9705 _n_id.remove_at(i)
9706 end
9707 return
9708 end
9709 end
9710 if _n_classid == old_child then
9711 if new_child != null then
9712 new_child.parent = self
9713 assert new_child isa TClassid
9714 _n_classid = new_child
9715 else
9716 _n_classid = null
9717 end
9718 return
9719 end
9720 end
9721
9722 redef fun visit_all(v: Visitor)
9723 do
9724 for n in _n_id do
9725 v.enter_visit(n)
9726 end
9727 if _n_classid != null then
9728 v.enter_visit(_n_classid.as(not null))
9729 end
9730 end
9731
9732 redef fun visit_all_reverse(v: Visitor)
9733 do
9734 do
9735 var i = _n_id.length
9736 while i >= 0 do
9737 v.enter_visit(_n_id[i])
9738 i = i - 1
9739 end
9740 end
9741 if _n_classid != null then
9742 v.enter_visit(_n_classid.as(not null))
9743 end
9744 end
9745 end
9746 redef class ADoc
9747
9748 private init empty_init do end
9749
9750 init init_adoc (
9751 n_comment: Collection[Object] # Should be Collection[TComment]
9752 )
9753 do
9754 empty_init
9755 for n in n_comment do
9756 assert n isa TComment
9757 _n_comment.add(n)
9758 n.parent = self
9759 end
9760 end
9761
9762 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9763 do
9764 for i in [0.._n_comment.length[ do
9765 if _n_comment[i] == old_child then
9766 if new_child != null then
9767 assert new_child isa TComment
9768 _n_comment[i] = new_child
9769 new_child.parent = self
9770 else
9771 _n_comment.remove_at(i)
9772 end
9773 return
9774 end
9775 end
9776 end
9777
9778 redef fun visit_all(v: Visitor)
9779 do
9780 for n in _n_comment do
9781 v.enter_visit(n)
9782 end
9783 end
9784
9785 redef fun visit_all_reverse(v: Visitor)
9786 do
9787 do
9788 var i = _n_comment.length
9789 while i >= 0 do
9790 v.enter_visit(_n_comment[i])
9791 i = i - 1
9792 end
9793 end
9794 end
9795 end
9796
9797 redef class Start
9798 init(
9799 n_base: nullable AModule,
9800 n_eof: EOF)
9801 do
9802 _n_base = n_base
9803 _n_eof = n_eof
9804 end
9805
9806 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
9807 do
9808 if _n_base == old_child then
9809 if new_child == null then
9810 else
9811 new_child.parent = self
9812 assert new_child isa AModule
9813 _n_base = new_child
9814 end
9815 old_child.parent = null
9816 return
9817 end
9818 end
9819
9820 redef fun visit_all(v: Visitor)
9821 do
9822 if _n_base != null then
9823 v.enter_visit(_n_base.as(not null))
9824 end
9825 v.enter_visit(_n_eof)
9826 end
9827
9828 redef fun visit_all_reverse(v: Visitor)
9829 do
9830 v.enter_visit(_n_eof)
9831 if _n_base != null then
9832 v.enter_visit(_n_base.as(not null))
9833 end
9834 end
9835 end