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