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