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