parser: remove useless methods from generated parser code
[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 end
33
34 redef class Token
35 redef fun visit_all(v: Visitor) do end
36 redef fun replace_child(old_child: ANode, new_child: nullable ANode) do end
37 end
38
39 redef class Prod
40 redef fun replace_with(n: ANode)
41 do
42 super
43 assert n isa Prod
44 n.location = location
45 end
46 end
47
48 # Abstract standard visitor
49 class Visitor
50 # What the visitor do when a node is visited
51 # Concrete visitors should redefine this method.
52 protected fun visit(e: nullable ANode) is abstract
53
54 # Ask the visitor to visit a given node.
55 # Usually automatically called by visit_all* methods.
56 # This methos should not be redefined
57 fun enter_visit(e: nullable ANode)
58 do
59 var old = _current_node
60 _current_node = e
61 visit(e)
62 _current_node = old
63 end
64
65 # The current visited node
66 readable var _current_node: nullable ANode = null
67 end
68
69 redef class AModule
70 private init empty_init do end
71
72 init init_amodule (
73 n_packagedecl: nullable APackagedecl,
74 n_imports: Collection[Object], # Should be Collection[AImport]
75 n_classdefs: Collection[Object] # Should be Collection[AClassdef]
76 )
77 do
78 empty_init
79 _n_packagedecl = n_packagedecl
80 if n_packagedecl != null then
81 n_packagedecl.parent = self
82 end
83 for n in n_imports do
84 assert n isa AImport
85 _n_imports.add(n)
86 n.parent = self
87 end
88 for n in n_classdefs do
89 assert n isa AClassdef
90 _n_classdefs.add(n)
91 n.parent = self
92 end
93 end
94
95 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
96 do
97 if _n_packagedecl == old_child then
98 if new_child != null then
99 new_child.parent = self
100 assert new_child isa APackagedecl
101 _n_packagedecl = new_child
102 else
103 _n_packagedecl = null
104 end
105 return
106 end
107 for i in [0.._n_imports.length[ do
108 if _n_imports[i] == old_child then
109 if new_child != null then
110 assert new_child isa AImport
111 _n_imports[i] = new_child
112 new_child.parent = self
113 else
114 _n_imports.remove_at(i)
115 end
116 return
117 end
118 end
119 for i in [0.._n_classdefs.length[ do
120 if _n_classdefs[i] == old_child then
121 if new_child != null then
122 assert new_child isa AClassdef
123 _n_classdefs[i] = new_child
124 new_child.parent = self
125 else
126 _n_classdefs.remove_at(i)
127 end
128 return
129 end
130 end
131 end
132
133 redef fun visit_all(v: Visitor)
134 do
135 if _n_packagedecl != null then
136 v.enter_visit(_n_packagedecl.as(not null))
137 end
138 for n in _n_imports do
139 v.enter_visit(n)
140 end
141 for n in _n_classdefs do
142 v.enter_visit(n)
143 end
144 end
145 end
146 redef class APackagedecl
147 private init empty_init do end
148
149 init init_apackagedecl (
150 n_doc: nullable ADoc,
151 n_kwpackage: nullable TKwpackage,
152 n_id: nullable TId
153 )
154 do
155 empty_init
156 _n_doc = n_doc
157 if n_doc != null then
158 n_doc.parent = self
159 end
160 _n_kwpackage = n_kwpackage.as(not null)
161 n_kwpackage.parent = self
162 _n_id = n_id.as(not null)
163 n_id.parent = self
164 end
165
166 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
167 do
168 if _n_doc == old_child then
169 if new_child != null then
170 new_child.parent = self
171 assert new_child isa ADoc
172 _n_doc = new_child
173 else
174 _n_doc = null
175 end
176 return
177 end
178 if _n_kwpackage == old_child then
179 if new_child != null then
180 new_child.parent = self
181 assert new_child isa TKwpackage
182 _n_kwpackage = new_child
183 else
184 abort
185 end
186 return
187 end
188 if _n_id == old_child then
189 if new_child != null then
190 new_child.parent = self
191 assert new_child isa TId
192 _n_id = new_child
193 else
194 abort
195 end
196 return
197 end
198 end
199
200 redef fun visit_all(v: Visitor)
201 do
202 if _n_doc != null then
203 v.enter_visit(_n_doc.as(not null))
204 end
205 v.enter_visit(_n_kwpackage)
206 v.enter_visit(_n_id)
207 end
208 end
209 redef class AStdImport
210 private init empty_init do end
211
212 init init_astdimport (
213 n_visibility: nullable AVisibility,
214 n_kwimport: nullable TKwimport,
215 n_id: nullable TId
216 )
217 do
218 empty_init
219 _n_visibility = n_visibility.as(not null)
220 n_visibility.parent = self
221 _n_kwimport = n_kwimport.as(not null)
222 n_kwimport.parent = self
223 _n_id = n_id.as(not null)
224 n_id.parent = self
225 end
226
227 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
228 do
229 if _n_visibility == old_child then
230 if new_child != null then
231 new_child.parent = self
232 assert new_child isa AVisibility
233 _n_visibility = new_child
234 else
235 abort
236 end
237 return
238 end
239 if _n_kwimport == old_child then
240 if new_child != null then
241 new_child.parent = self
242 assert new_child isa TKwimport
243 _n_kwimport = new_child
244 else
245 abort
246 end
247 return
248 end
249 if _n_id == old_child then
250 if new_child != null then
251 new_child.parent = self
252 assert new_child isa TId
253 _n_id = new_child
254 else
255 abort
256 end
257 return
258 end
259 end
260
261 redef fun visit_all(v: Visitor)
262 do
263 v.enter_visit(_n_visibility)
264 v.enter_visit(_n_kwimport)
265 v.enter_visit(_n_id)
266 end
267 end
268 redef class ANoImport
269 private init empty_init do end
270
271 init init_anoimport (
272 n_visibility: nullable AVisibility,
273 n_kwimport: nullable TKwimport,
274 n_kwend: nullable TKwend
275 )
276 do
277 empty_init
278 _n_visibility = n_visibility.as(not null)
279 n_visibility.parent = self
280 _n_kwimport = n_kwimport.as(not null)
281 n_kwimport.parent = self
282 _n_kwend = n_kwend.as(not null)
283 n_kwend.parent = self
284 end
285
286 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
287 do
288 if _n_visibility == old_child then
289 if new_child != null then
290 new_child.parent = self
291 assert new_child isa AVisibility
292 _n_visibility = new_child
293 else
294 abort
295 end
296 return
297 end
298 if _n_kwimport == old_child then
299 if new_child != null then
300 new_child.parent = self
301 assert new_child isa TKwimport
302 _n_kwimport = new_child
303 else
304 abort
305 end
306 return
307 end
308 if _n_kwend == old_child then
309 if new_child != null then
310 new_child.parent = self
311 assert new_child isa TKwend
312 _n_kwend = new_child
313 else
314 abort
315 end
316 return
317 end
318 end
319
320 redef fun visit_all(v: Visitor)
321 do
322 v.enter_visit(_n_visibility)
323 v.enter_visit(_n_kwimport)
324 v.enter_visit(_n_kwend)
325 end
326 end
327 redef class APublicVisibility
328 private init empty_init do end
329
330 init init_apublicvisibility
331 do
332 empty_init
333 end
334
335 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
336 do
337 end
338
339 redef fun visit_all(v: Visitor)
340 do
341 end
342 end
343 redef class APrivateVisibility
344 private init empty_init do end
345
346 init init_aprivatevisibility (
347 n_kwprivate: nullable TKwprivate
348 )
349 do
350 empty_init
351 _n_kwprivate = n_kwprivate.as(not null)
352 n_kwprivate.parent = self
353 end
354
355 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
356 do
357 if _n_kwprivate == old_child then
358 if new_child != null then
359 new_child.parent = self
360 assert new_child isa TKwprivate
361 _n_kwprivate = new_child
362 else
363 abort
364 end
365 return
366 end
367 end
368
369 redef fun visit_all(v: Visitor)
370 do
371 v.enter_visit(_n_kwprivate)
372 end
373 end
374 redef class AProtectedVisibility
375 private init empty_init do end
376
377 init init_aprotectedvisibility (
378 n_kwprotected: nullable TKwprotected
379 )
380 do
381 empty_init
382 _n_kwprotected = n_kwprotected.as(not null)
383 n_kwprotected.parent = self
384 end
385
386 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
387 do
388 if _n_kwprotected == old_child then
389 if new_child != null then
390 new_child.parent = self
391 assert new_child isa TKwprotected
392 _n_kwprotected = new_child
393 else
394 abort
395 end
396 return
397 end
398 end
399
400 redef fun visit_all(v: Visitor)
401 do
402 v.enter_visit(_n_kwprotected)
403 end
404 end
405 redef class AIntrudeVisibility
406 private init empty_init do end
407
408 init init_aintrudevisibility (
409 n_kwintrude: nullable TKwintrude
410 )
411 do
412 empty_init
413 _n_kwintrude = n_kwintrude.as(not null)
414 n_kwintrude.parent = self
415 end
416
417 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
418 do
419 if _n_kwintrude == old_child then
420 if new_child != null then
421 new_child.parent = self
422 assert new_child isa TKwintrude
423 _n_kwintrude = new_child
424 else
425 abort
426 end
427 return
428 end
429 end
430
431 redef fun visit_all(v: Visitor)
432 do
433 v.enter_visit(_n_kwintrude)
434 end
435 end
436 redef class AStdClassdef
437 private init empty_init do end
438
439 init init_astdclassdef (
440 n_doc: nullable ADoc,
441 n_kwredef: nullable TKwredef,
442 n_visibility: nullable AVisibility,
443 n_classkind: nullable AClasskind,
444 n_id: nullable TClassid,
445 n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
446 n_superclasses: Collection[Object], # Should be Collection[ASuperclass]
447 n_propdefs: Collection[Object] # Should be Collection[APropdef]
448 )
449 do
450 empty_init
451 _n_doc = n_doc
452 if n_doc != null then
453 n_doc.parent = self
454 end
455 _n_kwredef = n_kwredef
456 if n_kwredef != null then
457 n_kwredef.parent = self
458 end
459 _n_visibility = n_visibility.as(not null)
460 n_visibility.parent = self
461 _n_classkind = n_classkind.as(not null)
462 n_classkind.parent = self
463 _n_id = n_id
464 if n_id != null then
465 n_id.parent = self
466 end
467 for n in n_formaldefs do
468 assert n isa AFormaldef
469 _n_formaldefs.add(n)
470 n.parent = self
471 end
472 for n in n_superclasses do
473 assert n isa ASuperclass
474 _n_superclasses.add(n)
475 n.parent = self
476 end
477 for n in n_propdefs do
478 assert n isa APropdef
479 _n_propdefs.add(n)
480 n.parent = self
481 end
482 end
483
484 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
485 do
486 if _n_doc == old_child then
487 if new_child != null then
488 new_child.parent = self
489 assert new_child isa ADoc
490 _n_doc = new_child
491 else
492 _n_doc = null
493 end
494 return
495 end
496 if _n_kwredef == old_child then
497 if new_child != null then
498 new_child.parent = self
499 assert new_child isa TKwredef
500 _n_kwredef = new_child
501 else
502 _n_kwredef = null
503 end
504 return
505 end
506 if _n_visibility == old_child then
507 if new_child != null then
508 new_child.parent = self
509 assert new_child isa AVisibility
510 _n_visibility = new_child
511 else
512 abort
513 end
514 return
515 end
516 if _n_classkind == old_child then
517 if new_child != null then
518 new_child.parent = self
519 assert new_child isa AClasskind
520 _n_classkind = new_child
521 else
522 abort
523 end
524 return
525 end
526 if _n_id == old_child then
527 if new_child != null then
528 new_child.parent = self
529 assert new_child isa TClassid
530 _n_id = new_child
531 else
532 _n_id = null
533 end
534 return
535 end
536 for i in [0.._n_formaldefs.length[ do
537 if _n_formaldefs[i] == old_child then
538 if new_child != null then
539 assert new_child isa AFormaldef
540 _n_formaldefs[i] = new_child
541 new_child.parent = self
542 else
543 _n_formaldefs.remove_at(i)
544 end
545 return
546 end
547 end
548 for i in [0.._n_superclasses.length[ do
549 if _n_superclasses[i] == old_child then
550 if new_child != null then
551 assert new_child isa ASuperclass
552 _n_superclasses[i] = new_child
553 new_child.parent = self
554 else
555 _n_superclasses.remove_at(i)
556 end
557 return
558 end
559 end
560 for i in [0.._n_propdefs.length[ do
561 if _n_propdefs[i] == old_child then
562 if new_child != null then
563 assert new_child isa APropdef
564 _n_propdefs[i] = new_child
565 new_child.parent = self
566 else
567 _n_propdefs.remove_at(i)
568 end
569 return
570 end
571 end
572 end
573
574 redef fun visit_all(v: Visitor)
575 do
576 if _n_doc != null then
577 v.enter_visit(_n_doc.as(not null))
578 end
579 if _n_kwredef != null then
580 v.enter_visit(_n_kwredef.as(not null))
581 end
582 v.enter_visit(_n_visibility)
583 v.enter_visit(_n_classkind)
584 if _n_id != null then
585 v.enter_visit(_n_id.as(not null))
586 end
587 for n in _n_formaldefs do
588 v.enter_visit(n)
589 end
590 for n in _n_superclasses do
591 v.enter_visit(n)
592 end
593 for n in _n_propdefs do
594 v.enter_visit(n)
595 end
596 end
597 end
598 redef class ATopClassdef
599 private init empty_init do end
600
601 init init_atopclassdef (
602 n_propdefs: Collection[Object] # Should be Collection[APropdef]
603 )
604 do
605 empty_init
606 for n in n_propdefs do
607 assert n isa APropdef
608 _n_propdefs.add(n)
609 n.parent = self
610 end
611 end
612
613 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
614 do
615 for i in [0.._n_propdefs.length[ do
616 if _n_propdefs[i] == old_child then
617 if new_child != null then
618 assert new_child isa APropdef
619 _n_propdefs[i] = new_child
620 new_child.parent = self
621 else
622 _n_propdefs.remove_at(i)
623 end
624 return
625 end
626 end
627 end
628
629 redef fun visit_all(v: Visitor)
630 do
631 for n in _n_propdefs do
632 v.enter_visit(n)
633 end
634 end
635 end
636 redef class AMainClassdef
637 private init empty_init do end
638
639 init init_amainclassdef (
640 n_propdefs: Collection[Object] # Should be Collection[APropdef]
641 )
642 do
643 empty_init
644 for n in n_propdefs do
645 assert n isa APropdef
646 _n_propdefs.add(n)
647 n.parent = self
648 end
649 end
650
651 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
652 do
653 for i in [0.._n_propdefs.length[ do
654 if _n_propdefs[i] == old_child then
655 if new_child != null then
656 assert new_child isa APropdef
657 _n_propdefs[i] = new_child
658 new_child.parent = self
659 else
660 _n_propdefs.remove_at(i)
661 end
662 return
663 end
664 end
665 end
666
667 redef fun visit_all(v: Visitor)
668 do
669 for n in _n_propdefs do
670 v.enter_visit(n)
671 end
672 end
673 end
674 redef class AConcreteClasskind
675 private init empty_init do end
676
677 init init_aconcreteclasskind (
678 n_kwclass: nullable TKwclass
679 )
680 do
681 empty_init
682 _n_kwclass = n_kwclass.as(not null)
683 n_kwclass.parent = self
684 end
685
686 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
687 do
688 if _n_kwclass == old_child then
689 if new_child != null then
690 new_child.parent = self
691 assert new_child isa TKwclass
692 _n_kwclass = new_child
693 else
694 abort
695 end
696 return
697 end
698 end
699
700 redef fun visit_all(v: Visitor)
701 do
702 v.enter_visit(_n_kwclass)
703 end
704 end
705 redef class AAbstractClasskind
706 private init empty_init do end
707
708 init init_aabstractclasskind (
709 n_kwabstract: nullable TKwabstract,
710 n_kwclass: nullable TKwclass
711 )
712 do
713 empty_init
714 _n_kwabstract = n_kwabstract.as(not null)
715 n_kwabstract.parent = self
716 _n_kwclass = n_kwclass.as(not null)
717 n_kwclass.parent = self
718 end
719
720 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
721 do
722 if _n_kwabstract == old_child then
723 if new_child != null then
724 new_child.parent = self
725 assert new_child isa TKwabstract
726 _n_kwabstract = new_child
727 else
728 abort
729 end
730 return
731 end
732 if _n_kwclass == old_child then
733 if new_child != null then
734 new_child.parent = self
735 assert new_child isa TKwclass
736 _n_kwclass = new_child
737 else
738 abort
739 end
740 return
741 end
742 end
743
744 redef fun visit_all(v: Visitor)
745 do
746 v.enter_visit(_n_kwabstract)
747 v.enter_visit(_n_kwclass)
748 end
749 end
750 redef class AInterfaceClasskind
751 private init empty_init do end
752
753 init init_ainterfaceclasskind (
754 n_kwinterface: nullable TKwinterface
755 )
756 do
757 empty_init
758 _n_kwinterface = n_kwinterface.as(not null)
759 n_kwinterface.parent = self
760 end
761
762 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
763 do
764 if _n_kwinterface == old_child then
765 if new_child != null then
766 new_child.parent = self
767 assert new_child isa TKwinterface
768 _n_kwinterface = new_child
769 else
770 abort
771 end
772 return
773 end
774 end
775
776 redef fun visit_all(v: Visitor)
777 do
778 v.enter_visit(_n_kwinterface)
779 end
780 end
781 redef class AUniversalClasskind
782 private init empty_init do end
783
784 init init_auniversalclasskind (
785 n_kwuniversal: nullable TKwuniversal
786 )
787 do
788 empty_init
789 _n_kwuniversal = n_kwuniversal.as(not null)
790 n_kwuniversal.parent = self
791 end
792
793 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
794 do
795 if _n_kwuniversal == old_child then
796 if new_child != null then
797 new_child.parent = self
798 assert new_child isa TKwuniversal
799 _n_kwuniversal = new_child
800 else
801 abort
802 end
803 return
804 end
805 end
806
807 redef fun visit_all(v: Visitor)
808 do
809 v.enter_visit(_n_kwuniversal)
810 end
811 end
812 redef class AFormaldef
813 private init empty_init do end
814
815 init init_aformaldef (
816 n_id: nullable TClassid,
817 n_type: nullable AType
818 )
819 do
820 empty_init
821 _n_id = n_id.as(not null)
822 n_id.parent = self
823 _n_type = n_type
824 if n_type != null then
825 n_type.parent = self
826 end
827 end
828
829 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
830 do
831 if _n_id == old_child then
832 if new_child != null then
833 new_child.parent = self
834 assert new_child isa TClassid
835 _n_id = new_child
836 else
837 abort
838 end
839 return
840 end
841 if _n_type == old_child then
842 if new_child != null then
843 new_child.parent = self
844 assert new_child isa AType
845 _n_type = new_child
846 else
847 _n_type = null
848 end
849 return
850 end
851 end
852
853 redef fun visit_all(v: Visitor)
854 do
855 v.enter_visit(_n_id)
856 if _n_type != null then
857 v.enter_visit(_n_type.as(not null))
858 end
859 end
860 end
861 redef class ASuperclass
862 private init empty_init do end
863
864 init init_asuperclass (
865 n_kwspecial: nullable TKwspecial,
866 n_type: nullable AType
867 )
868 do
869 empty_init
870 _n_kwspecial = n_kwspecial.as(not null)
871 n_kwspecial.parent = self
872 _n_type = n_type.as(not null)
873 n_type.parent = self
874 end
875
876 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
877 do
878 if _n_kwspecial == old_child then
879 if new_child != null then
880 new_child.parent = self
881 assert new_child isa TKwspecial
882 _n_kwspecial = new_child
883 else
884 abort
885 end
886 return
887 end
888 if _n_type == old_child then
889 if new_child != null then
890 new_child.parent = self
891 assert new_child isa AType
892 _n_type = new_child
893 else
894 abort
895 end
896 return
897 end
898 end
899
900 redef fun visit_all(v: Visitor)
901 do
902 v.enter_visit(_n_kwspecial)
903 v.enter_visit(_n_type)
904 end
905 end
906 redef class AAttrPropdef
907 private init empty_init do end
908
909 init init_aattrpropdef (
910 n_doc: nullable ADoc,
911 n_readable: nullable AAble,
912 n_writable: nullable AAble,
913 n_kwredef: nullable TKwredef,
914 n_visibility: nullable AVisibility,
915 n_kwvar: nullable TKwvar,
916 n_id: nullable TAttrid,
917 n_type: nullable AType,
918 n_expr: nullable AExpr
919 )
920 do
921 empty_init
922 _n_doc = n_doc
923 if n_doc != null then
924 n_doc.parent = self
925 end
926 _n_readable = n_readable
927 if n_readable != null then
928 n_readable.parent = self
929 end
930 _n_writable = n_writable
931 if n_writable != null then
932 n_writable.parent = self
933 end
934 _n_kwredef = n_kwredef
935 if n_kwredef != null then
936 n_kwredef.parent = self
937 end
938 _n_visibility = n_visibility.as(not null)
939 n_visibility.parent = self
940 _n_kwvar = n_kwvar.as(not null)
941 n_kwvar.parent = self
942 _n_id = n_id.as(not null)
943 n_id.parent = self
944 _n_type = n_type
945 if n_type != null then
946 n_type.parent = self
947 end
948 _n_expr = n_expr
949 if n_expr != null then
950 n_expr.parent = self
951 end
952 end
953
954 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
955 do
956 if _n_doc == old_child then
957 if new_child != null then
958 new_child.parent = self
959 assert new_child isa ADoc
960 _n_doc = new_child
961 else
962 _n_doc = null
963 end
964 return
965 end
966 if _n_readable == old_child then
967 if new_child != null then
968 new_child.parent = self
969 assert new_child isa AAble
970 _n_readable = new_child
971 else
972 _n_readable = null
973 end
974 return
975 end
976 if _n_writable == old_child then
977 if new_child != null then
978 new_child.parent = self
979 assert new_child isa AAble
980 _n_writable = new_child
981 else
982 _n_writable = null
983 end
984 return
985 end
986 if _n_kwredef == old_child then
987 if new_child != null then
988 new_child.parent = self
989 assert new_child isa TKwredef
990 _n_kwredef = new_child
991 else
992 _n_kwredef = null
993 end
994 return
995 end
996 if _n_visibility == old_child then
997 if new_child != null then
998 new_child.parent = self
999 assert new_child isa AVisibility
1000 _n_visibility = new_child
1001 else
1002 abort
1003 end
1004 return
1005 end
1006 if _n_kwvar == old_child then
1007 if new_child != null then
1008 new_child.parent = self
1009 assert new_child isa TKwvar
1010 _n_kwvar = new_child
1011 else
1012 abort
1013 end
1014 return
1015 end
1016 if _n_id == old_child then
1017 if new_child != null then
1018 new_child.parent = self
1019 assert new_child isa TAttrid
1020 _n_id = new_child
1021 else
1022 abort
1023 end
1024 return
1025 end
1026 if _n_type == old_child then
1027 if new_child != null then
1028 new_child.parent = self
1029 assert new_child isa AType
1030 _n_type = new_child
1031 else
1032 _n_type = null
1033 end
1034 return
1035 end
1036 if _n_expr == old_child then
1037 if new_child != null then
1038 new_child.parent = self
1039 assert new_child isa AExpr
1040 _n_expr = new_child
1041 else
1042 _n_expr = null
1043 end
1044 return
1045 end
1046 end
1047
1048 redef fun visit_all(v: Visitor)
1049 do
1050 if _n_doc != null then
1051 v.enter_visit(_n_doc.as(not null))
1052 end
1053 if _n_readable != null then
1054 v.enter_visit(_n_readable.as(not null))
1055 end
1056 if _n_writable != null then
1057 v.enter_visit(_n_writable.as(not null))
1058 end
1059 if _n_kwredef != null then
1060 v.enter_visit(_n_kwredef.as(not null))
1061 end
1062 v.enter_visit(_n_visibility)
1063 v.enter_visit(_n_kwvar)
1064 v.enter_visit(_n_id)
1065 if _n_type != null then
1066 v.enter_visit(_n_type.as(not null))
1067 end
1068 if _n_expr != null then
1069 v.enter_visit(_n_expr.as(not null))
1070 end
1071 end
1072 end
1073 redef class AMethPropdef
1074 private init empty_init do end
1075
1076 init init_amethpropdef (
1077 n_doc: nullable ADoc,
1078 n_kwredef: nullable TKwredef,
1079 n_visibility: nullable AVisibility,
1080 n_methid: nullable AMethid,
1081 n_signature: nullable ASignature
1082 )
1083 do
1084 empty_init
1085 _n_doc = n_doc
1086 if n_doc != null then
1087 n_doc.parent = self
1088 end
1089 _n_kwredef = n_kwredef
1090 if n_kwredef != null then
1091 n_kwredef.parent = self
1092 end
1093 _n_visibility = n_visibility.as(not null)
1094 n_visibility.parent = self
1095 _n_methid = n_methid.as(not null)
1096 n_methid.parent = self
1097 _n_signature = n_signature.as(not null)
1098 n_signature.parent = self
1099 end
1100
1101 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1102 do
1103 if _n_doc == old_child then
1104 if new_child != null then
1105 new_child.parent = self
1106 assert new_child isa ADoc
1107 _n_doc = new_child
1108 else
1109 _n_doc = null
1110 end
1111 return
1112 end
1113 if _n_kwredef == old_child then
1114 if new_child != null then
1115 new_child.parent = self
1116 assert new_child isa TKwredef
1117 _n_kwredef = new_child
1118 else
1119 _n_kwredef = null
1120 end
1121 return
1122 end
1123 if _n_visibility == old_child then
1124 if new_child != null then
1125 new_child.parent = self
1126 assert new_child isa AVisibility
1127 _n_visibility = new_child
1128 else
1129 abort
1130 end
1131 return
1132 end
1133 if _n_methid == old_child then
1134 if new_child != null then
1135 new_child.parent = self
1136 assert new_child isa AMethid
1137 _n_methid = new_child
1138 else
1139 abort
1140 end
1141 return
1142 end
1143 if _n_signature == old_child then
1144 if new_child != null then
1145 new_child.parent = self
1146 assert new_child isa ASignature
1147 _n_signature = new_child
1148 else
1149 abort
1150 end
1151 return
1152 end
1153 end
1154
1155 redef fun visit_all(v: Visitor)
1156 do
1157 if _n_doc != null then
1158 v.enter_visit(_n_doc.as(not null))
1159 end
1160 if _n_kwredef != null then
1161 v.enter_visit(_n_kwredef.as(not null))
1162 end
1163 v.enter_visit(_n_visibility)
1164 v.enter_visit(_n_methid)
1165 v.enter_visit(_n_signature)
1166 end
1167 end
1168 redef class ADeferredMethPropdef
1169 private init empty_init do end
1170
1171 init init_adeferredmethpropdef (
1172 n_doc: nullable ADoc,
1173 n_kwredef: nullable TKwredef,
1174 n_visibility: nullable AVisibility,
1175 n_kwmeth: nullable TKwmeth,
1176 n_methid: nullable AMethid,
1177 n_signature: nullable ASignature
1178 )
1179 do
1180 empty_init
1181 _n_doc = n_doc
1182 if n_doc != null then
1183 n_doc.parent = self
1184 end
1185 _n_kwredef = n_kwredef
1186 if n_kwredef != null then
1187 n_kwredef.parent = self
1188 end
1189 _n_visibility = n_visibility.as(not null)
1190 n_visibility.parent = self
1191 _n_kwmeth = n_kwmeth.as(not null)
1192 n_kwmeth.parent = self
1193 _n_methid = n_methid.as(not null)
1194 n_methid.parent = self
1195 _n_signature = n_signature.as(not null)
1196 n_signature.parent = self
1197 end
1198
1199 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1200 do
1201 if _n_doc == old_child then
1202 if new_child != null then
1203 new_child.parent = self
1204 assert new_child isa ADoc
1205 _n_doc = new_child
1206 else
1207 _n_doc = null
1208 end
1209 return
1210 end
1211 if _n_kwredef == old_child then
1212 if new_child != null then
1213 new_child.parent = self
1214 assert new_child isa TKwredef
1215 _n_kwredef = new_child
1216 else
1217 _n_kwredef = null
1218 end
1219 return
1220 end
1221 if _n_visibility == old_child then
1222 if new_child != null then
1223 new_child.parent = self
1224 assert new_child isa AVisibility
1225 _n_visibility = new_child
1226 else
1227 abort
1228 end
1229 return
1230 end
1231 if _n_kwmeth == old_child then
1232 if new_child != null then
1233 new_child.parent = self
1234 assert new_child isa TKwmeth
1235 _n_kwmeth = new_child
1236 else
1237 abort
1238 end
1239 return
1240 end
1241 if _n_methid == old_child then
1242 if new_child != null then
1243 new_child.parent = self
1244 assert new_child isa AMethid
1245 _n_methid = new_child
1246 else
1247 abort
1248 end
1249 return
1250 end
1251 if _n_signature == old_child then
1252 if new_child != null then
1253 new_child.parent = self
1254 assert new_child isa ASignature
1255 _n_signature = new_child
1256 else
1257 abort
1258 end
1259 return
1260 end
1261 end
1262
1263 redef fun visit_all(v: Visitor)
1264 do
1265 if _n_doc != null then
1266 v.enter_visit(_n_doc.as(not null))
1267 end
1268 if _n_kwredef != null then
1269 v.enter_visit(_n_kwredef.as(not null))
1270 end
1271 v.enter_visit(_n_visibility)
1272 v.enter_visit(_n_kwmeth)
1273 v.enter_visit(_n_methid)
1274 v.enter_visit(_n_signature)
1275 end
1276 end
1277 redef class AInternMethPropdef
1278 private init empty_init do end
1279
1280 init init_ainternmethpropdef (
1281 n_doc: nullable ADoc,
1282 n_kwredef: nullable TKwredef,
1283 n_visibility: nullable AVisibility,
1284 n_kwmeth: nullable TKwmeth,
1285 n_methid: nullable AMethid,
1286 n_signature: nullable ASignature
1287 )
1288 do
1289 empty_init
1290 _n_doc = n_doc
1291 if n_doc != null then
1292 n_doc.parent = self
1293 end
1294 _n_kwredef = n_kwredef
1295 if n_kwredef != null then
1296 n_kwredef.parent = self
1297 end
1298 _n_visibility = n_visibility.as(not null)
1299 n_visibility.parent = self
1300 _n_kwmeth = n_kwmeth.as(not null)
1301 n_kwmeth.parent = self
1302 _n_methid = n_methid.as(not null)
1303 n_methid.parent = self
1304 _n_signature = n_signature.as(not null)
1305 n_signature.parent = self
1306 end
1307
1308 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1309 do
1310 if _n_doc == old_child then
1311 if new_child != null then
1312 new_child.parent = self
1313 assert new_child isa ADoc
1314 _n_doc = new_child
1315 else
1316 _n_doc = null
1317 end
1318 return
1319 end
1320 if _n_kwredef == old_child then
1321 if new_child != null then
1322 new_child.parent = self
1323 assert new_child isa TKwredef
1324 _n_kwredef = new_child
1325 else
1326 _n_kwredef = null
1327 end
1328 return
1329 end
1330 if _n_visibility == old_child then
1331 if new_child != null then
1332 new_child.parent = self
1333 assert new_child isa AVisibility
1334 _n_visibility = new_child
1335 else
1336 abort
1337 end
1338 return
1339 end
1340 if _n_kwmeth == old_child then
1341 if new_child != null then
1342 new_child.parent = self
1343 assert new_child isa TKwmeth
1344 _n_kwmeth = new_child
1345 else
1346 abort
1347 end
1348 return
1349 end
1350 if _n_methid == old_child then
1351 if new_child != null then
1352 new_child.parent = self
1353 assert new_child isa AMethid
1354 _n_methid = new_child
1355 else
1356 abort
1357 end
1358 return
1359 end
1360 if _n_signature == old_child then
1361 if new_child != null then
1362 new_child.parent = self
1363 assert new_child isa ASignature
1364 _n_signature = new_child
1365 else
1366 abort
1367 end
1368 return
1369 end
1370 end
1371
1372 redef fun visit_all(v: Visitor)
1373 do
1374 if _n_doc != null then
1375 v.enter_visit(_n_doc.as(not null))
1376 end
1377 if _n_kwredef != null then
1378 v.enter_visit(_n_kwredef.as(not null))
1379 end
1380 v.enter_visit(_n_visibility)
1381 v.enter_visit(_n_kwmeth)
1382 v.enter_visit(_n_methid)
1383 v.enter_visit(_n_signature)
1384 end
1385 end
1386 redef class AExternMethPropdef
1387 private init empty_init do end
1388
1389 init init_aexternmethpropdef (
1390 n_doc: nullable ADoc,
1391 n_kwredef: nullable TKwredef,
1392 n_visibility: nullable AVisibility,
1393 n_kwmeth: nullable TKwmeth,
1394 n_methid: nullable AMethid,
1395 n_signature: nullable ASignature,
1396 n_extern: nullable TString
1397 )
1398 do
1399 empty_init
1400 _n_doc = n_doc
1401 if n_doc != null then
1402 n_doc.parent = self
1403 end
1404 _n_kwredef = n_kwredef
1405 if n_kwredef != null then
1406 n_kwredef.parent = self
1407 end
1408 _n_visibility = n_visibility.as(not null)
1409 n_visibility.parent = self
1410 _n_kwmeth = n_kwmeth.as(not null)
1411 n_kwmeth.parent = self
1412 _n_methid = n_methid.as(not null)
1413 n_methid.parent = self
1414 _n_signature = n_signature.as(not null)
1415 n_signature.parent = self
1416 _n_extern = n_extern
1417 if n_extern != null then
1418 n_extern.parent = self
1419 end
1420 end
1421
1422 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1423 do
1424 if _n_doc == old_child then
1425 if new_child != null then
1426 new_child.parent = self
1427 assert new_child isa ADoc
1428 _n_doc = new_child
1429 else
1430 _n_doc = null
1431 end
1432 return
1433 end
1434 if _n_kwredef == old_child then
1435 if new_child != null then
1436 new_child.parent = self
1437 assert new_child isa TKwredef
1438 _n_kwredef = new_child
1439 else
1440 _n_kwredef = null
1441 end
1442 return
1443 end
1444 if _n_visibility == old_child then
1445 if new_child != null then
1446 new_child.parent = self
1447 assert new_child isa AVisibility
1448 _n_visibility = new_child
1449 else
1450 abort
1451 end
1452 return
1453 end
1454 if _n_kwmeth == old_child then
1455 if new_child != null then
1456 new_child.parent = self
1457 assert new_child isa TKwmeth
1458 _n_kwmeth = new_child
1459 else
1460 abort
1461 end
1462 return
1463 end
1464 if _n_methid == old_child then
1465 if new_child != null then
1466 new_child.parent = self
1467 assert new_child isa AMethid
1468 _n_methid = new_child
1469 else
1470 abort
1471 end
1472 return
1473 end
1474 if _n_signature == old_child then
1475 if new_child != null then
1476 new_child.parent = self
1477 assert new_child isa ASignature
1478 _n_signature = new_child
1479 else
1480 abort
1481 end
1482 return
1483 end
1484 if _n_extern == old_child then
1485 if new_child != null then
1486 new_child.parent = self
1487 assert new_child isa TString
1488 _n_extern = new_child
1489 else
1490 _n_extern = null
1491 end
1492 return
1493 end
1494 end
1495
1496 redef fun visit_all(v: Visitor)
1497 do
1498 if _n_doc != null then
1499 v.enter_visit(_n_doc.as(not null))
1500 end
1501 if _n_kwredef != null then
1502 v.enter_visit(_n_kwredef.as(not null))
1503 end
1504 v.enter_visit(_n_visibility)
1505 v.enter_visit(_n_kwmeth)
1506 v.enter_visit(_n_methid)
1507 v.enter_visit(_n_signature)
1508 if _n_extern != null then
1509 v.enter_visit(_n_extern.as(not null))
1510 end
1511 end
1512 end
1513 redef class AConcreteMethPropdef
1514 private init empty_init do end
1515
1516 init init_aconcretemethpropdef (
1517 n_doc: nullable ADoc,
1518 n_kwredef: nullable TKwredef,
1519 n_visibility: nullable AVisibility,
1520 n_kwmeth: nullable TKwmeth,
1521 n_methid: nullable AMethid,
1522 n_signature: nullable ASignature,
1523 n_block: nullable AExpr
1524 )
1525 do
1526 empty_init
1527 _n_doc = n_doc
1528 if n_doc != null then
1529 n_doc.parent = self
1530 end
1531 _n_kwredef = n_kwredef
1532 if n_kwredef != null then
1533 n_kwredef.parent = self
1534 end
1535 _n_visibility = n_visibility.as(not null)
1536 n_visibility.parent = self
1537 _n_kwmeth = n_kwmeth.as(not null)
1538 n_kwmeth.parent = self
1539 _n_methid = n_methid.as(not null)
1540 n_methid.parent = self
1541 _n_signature = n_signature.as(not null)
1542 n_signature.parent = self
1543 _n_block = n_block
1544 if n_block != null then
1545 n_block.parent = self
1546 end
1547 end
1548
1549 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1550 do
1551 if _n_doc == old_child then
1552 if new_child != null then
1553 new_child.parent = self
1554 assert new_child isa ADoc
1555 _n_doc = new_child
1556 else
1557 _n_doc = null
1558 end
1559 return
1560 end
1561 if _n_kwredef == old_child then
1562 if new_child != null then
1563 new_child.parent = self
1564 assert new_child isa TKwredef
1565 _n_kwredef = new_child
1566 else
1567 _n_kwredef = null
1568 end
1569 return
1570 end
1571 if _n_visibility == old_child then
1572 if new_child != null then
1573 new_child.parent = self
1574 assert new_child isa AVisibility
1575 _n_visibility = new_child
1576 else
1577 abort
1578 end
1579 return
1580 end
1581 if _n_kwmeth == old_child then
1582 if new_child != null then
1583 new_child.parent = self
1584 assert new_child isa TKwmeth
1585 _n_kwmeth = new_child
1586 else
1587 abort
1588 end
1589 return
1590 end
1591 if _n_methid == old_child then
1592 if new_child != null then
1593 new_child.parent = self
1594 assert new_child isa AMethid
1595 _n_methid = new_child
1596 else
1597 abort
1598 end
1599 return
1600 end
1601 if _n_signature == old_child then
1602 if new_child != null then
1603 new_child.parent = self
1604 assert new_child isa ASignature
1605 _n_signature = new_child
1606 else
1607 abort
1608 end
1609 return
1610 end
1611 if _n_block == old_child then
1612 if new_child != null then
1613 new_child.parent = self
1614 assert new_child isa AExpr
1615 _n_block = new_child
1616 else
1617 _n_block = null
1618 end
1619 return
1620 end
1621 end
1622
1623 redef fun visit_all(v: Visitor)
1624 do
1625 if _n_doc != null then
1626 v.enter_visit(_n_doc.as(not null))
1627 end
1628 if _n_kwredef != null then
1629 v.enter_visit(_n_kwredef.as(not null))
1630 end
1631 v.enter_visit(_n_visibility)
1632 v.enter_visit(_n_kwmeth)
1633 v.enter_visit(_n_methid)
1634 v.enter_visit(_n_signature)
1635 if _n_block != null then
1636 v.enter_visit(_n_block.as(not null))
1637 end
1638 end
1639 end
1640 redef class AConcreteInitPropdef
1641 private init empty_init do end
1642
1643 init init_aconcreteinitpropdef (
1644 n_doc: nullable ADoc,
1645 n_kwredef: nullable TKwredef,
1646 n_visibility: nullable AVisibility,
1647 n_kwinit: nullable TKwinit,
1648 n_methid: nullable AMethid,
1649 n_signature: nullable ASignature,
1650 n_block: nullable AExpr
1651 )
1652 do
1653 empty_init
1654 _n_doc = n_doc
1655 if n_doc != null then
1656 n_doc.parent = self
1657 end
1658 _n_kwredef = n_kwredef
1659 if n_kwredef != null then
1660 n_kwredef.parent = self
1661 end
1662 _n_visibility = n_visibility.as(not null)
1663 n_visibility.parent = self
1664 _n_kwinit = n_kwinit.as(not null)
1665 n_kwinit.parent = self
1666 _n_methid = n_methid
1667 if n_methid != null then
1668 n_methid.parent = self
1669 end
1670 _n_signature = n_signature.as(not null)
1671 n_signature.parent = self
1672 _n_block = n_block
1673 if n_block != null then
1674 n_block.parent = self
1675 end
1676 end
1677
1678 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1679 do
1680 if _n_doc == old_child then
1681 if new_child != null then
1682 new_child.parent = self
1683 assert new_child isa ADoc
1684 _n_doc = new_child
1685 else
1686 _n_doc = null
1687 end
1688 return
1689 end
1690 if _n_kwredef == old_child then
1691 if new_child != null then
1692 new_child.parent = self
1693 assert new_child isa TKwredef
1694 _n_kwredef = new_child
1695 else
1696 _n_kwredef = null
1697 end
1698 return
1699 end
1700 if _n_visibility == old_child then
1701 if new_child != null then
1702 new_child.parent = self
1703 assert new_child isa AVisibility
1704 _n_visibility = new_child
1705 else
1706 abort
1707 end
1708 return
1709 end
1710 if _n_kwinit == old_child then
1711 if new_child != null then
1712 new_child.parent = self
1713 assert new_child isa TKwinit
1714 _n_kwinit = new_child
1715 else
1716 abort
1717 end
1718 return
1719 end
1720 if _n_methid == old_child then
1721 if new_child != null then
1722 new_child.parent = self
1723 assert new_child isa AMethid
1724 _n_methid = new_child
1725 else
1726 _n_methid = null
1727 end
1728 return
1729 end
1730 if _n_signature == old_child then
1731 if new_child != null then
1732 new_child.parent = self
1733 assert new_child isa ASignature
1734 _n_signature = new_child
1735 else
1736 abort
1737 end
1738 return
1739 end
1740 if _n_block == old_child then
1741 if new_child != null then
1742 new_child.parent = self
1743 assert new_child isa AExpr
1744 _n_block = new_child
1745 else
1746 _n_block = null
1747 end
1748 return
1749 end
1750 end
1751
1752 redef fun visit_all(v: Visitor)
1753 do
1754 if _n_doc != null then
1755 v.enter_visit(_n_doc.as(not null))
1756 end
1757 if _n_kwredef != null then
1758 v.enter_visit(_n_kwredef.as(not null))
1759 end
1760 v.enter_visit(_n_visibility)
1761 v.enter_visit(_n_kwinit)
1762 if _n_methid != null then
1763 v.enter_visit(_n_methid.as(not null))
1764 end
1765 v.enter_visit(_n_signature)
1766 if _n_block != null then
1767 v.enter_visit(_n_block.as(not null))
1768 end
1769 end
1770 end
1771 redef class AMainMethPropdef
1772 private init empty_init do end
1773
1774 init init_amainmethpropdef (
1775 n_kwredef: nullable TKwredef,
1776 n_block: nullable AExpr
1777 )
1778 do
1779 empty_init
1780 _n_kwredef = n_kwredef
1781 if n_kwredef != null then
1782 n_kwredef.parent = self
1783 end
1784 _n_block = n_block
1785 if n_block != null then
1786 n_block.parent = self
1787 end
1788 end
1789
1790 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1791 do
1792 if _n_kwredef == old_child then
1793 if new_child != null then
1794 new_child.parent = self
1795 assert new_child isa TKwredef
1796 _n_kwredef = new_child
1797 else
1798 _n_kwredef = null
1799 end
1800 return
1801 end
1802 if _n_block == old_child then
1803 if new_child != null then
1804 new_child.parent = self
1805 assert new_child isa AExpr
1806 _n_block = new_child
1807 else
1808 _n_block = null
1809 end
1810 return
1811 end
1812 end
1813
1814 redef fun visit_all(v: Visitor)
1815 do
1816 if _n_kwredef != null then
1817 v.enter_visit(_n_kwredef.as(not null))
1818 end
1819 if _n_block != null then
1820 v.enter_visit(_n_block.as(not null))
1821 end
1822 end
1823 end
1824 redef class ATypePropdef
1825 private init empty_init do end
1826
1827 init init_atypepropdef (
1828 n_doc: nullable ADoc,
1829 n_kwredef: nullable TKwredef,
1830 n_visibility: nullable AVisibility,
1831 n_kwtype: nullable TKwtype,
1832 n_id: nullable TClassid,
1833 n_type: nullable AType
1834 )
1835 do
1836 empty_init
1837 _n_doc = n_doc
1838 if n_doc != null then
1839 n_doc.parent = self
1840 end
1841 _n_kwredef = n_kwredef
1842 if n_kwredef != null then
1843 n_kwredef.parent = self
1844 end
1845 _n_visibility = n_visibility.as(not null)
1846 n_visibility.parent = self
1847 _n_kwtype = n_kwtype.as(not null)
1848 n_kwtype.parent = self
1849 _n_id = n_id.as(not null)
1850 n_id.parent = self
1851 _n_type = n_type.as(not null)
1852 n_type.parent = self
1853 end
1854
1855 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1856 do
1857 if _n_doc == old_child then
1858 if new_child != null then
1859 new_child.parent = self
1860 assert new_child isa ADoc
1861 _n_doc = new_child
1862 else
1863 _n_doc = null
1864 end
1865 return
1866 end
1867 if _n_kwredef == old_child then
1868 if new_child != null then
1869 new_child.parent = self
1870 assert new_child isa TKwredef
1871 _n_kwredef = new_child
1872 else
1873 _n_kwredef = null
1874 end
1875 return
1876 end
1877 if _n_visibility == old_child then
1878 if new_child != null then
1879 new_child.parent = self
1880 assert new_child isa AVisibility
1881 _n_visibility = new_child
1882 else
1883 abort
1884 end
1885 return
1886 end
1887 if _n_kwtype == old_child then
1888 if new_child != null then
1889 new_child.parent = self
1890 assert new_child isa TKwtype
1891 _n_kwtype = new_child
1892 else
1893 abort
1894 end
1895 return
1896 end
1897 if _n_id == old_child then
1898 if new_child != null then
1899 new_child.parent = self
1900 assert new_child isa TClassid
1901 _n_id = new_child
1902 else
1903 abort
1904 end
1905 return
1906 end
1907 if _n_type == old_child then
1908 if new_child != null then
1909 new_child.parent = self
1910 assert new_child isa AType
1911 _n_type = new_child
1912 else
1913 abort
1914 end
1915 return
1916 end
1917 end
1918
1919 redef fun visit_all(v: Visitor)
1920 do
1921 if _n_doc != null then
1922 v.enter_visit(_n_doc.as(not null))
1923 end
1924 if _n_kwredef != null then
1925 v.enter_visit(_n_kwredef.as(not null))
1926 end
1927 v.enter_visit(_n_visibility)
1928 v.enter_visit(_n_kwtype)
1929 v.enter_visit(_n_id)
1930 v.enter_visit(_n_type)
1931 end
1932 end
1933 redef class AReadAble
1934 private init empty_init do end
1935
1936 init init_areadable (
1937 n_kwredef: nullable TKwredef,
1938 n_kwreadable: nullable TKwreadable
1939 )
1940 do
1941 empty_init
1942 _n_kwredef = n_kwredef
1943 if n_kwredef != null then
1944 n_kwredef.parent = self
1945 end
1946 _n_kwreadable = n_kwreadable.as(not null)
1947 n_kwreadable.parent = self
1948 end
1949
1950 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
1951 do
1952 if _n_kwredef == old_child then
1953 if new_child != null then
1954 new_child.parent = self
1955 assert new_child isa TKwredef
1956 _n_kwredef = new_child
1957 else
1958 _n_kwredef = null
1959 end
1960 return
1961 end
1962 if _n_kwreadable == old_child then
1963 if new_child != null then
1964 new_child.parent = self
1965 assert new_child isa TKwreadable
1966 _n_kwreadable = new_child
1967 else
1968 abort
1969 end
1970 return
1971 end
1972 end
1973
1974 redef fun visit_all(v: Visitor)
1975 do
1976 if _n_kwredef != null then
1977 v.enter_visit(_n_kwredef.as(not null))
1978 end
1979 v.enter_visit(_n_kwreadable)
1980 end
1981 end
1982 redef class AWriteAble
1983 private init empty_init do end
1984
1985 init init_awriteable (
1986 n_kwredef: nullable TKwredef,
1987 n_kwwritable: nullable TKwwritable
1988 )
1989 do
1990 empty_init
1991 _n_kwredef = n_kwredef
1992 if n_kwredef != null then
1993 n_kwredef.parent = self
1994 end
1995 _n_kwwritable = n_kwwritable.as(not null)
1996 n_kwwritable.parent = self
1997 end
1998
1999 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2000 do
2001 if _n_kwredef == old_child then
2002 if new_child != null then
2003 new_child.parent = self
2004 assert new_child isa TKwredef
2005 _n_kwredef = new_child
2006 else
2007 _n_kwredef = null
2008 end
2009 return
2010 end
2011 if _n_kwwritable == old_child then
2012 if new_child != null then
2013 new_child.parent = self
2014 assert new_child isa TKwwritable
2015 _n_kwwritable = new_child
2016 else
2017 abort
2018 end
2019 return
2020 end
2021 end
2022
2023 redef fun visit_all(v: Visitor)
2024 do
2025 if _n_kwredef != null then
2026 v.enter_visit(_n_kwredef.as(not null))
2027 end
2028 v.enter_visit(_n_kwwritable)
2029 end
2030 end
2031 redef class AIdMethid
2032 private init empty_init do end
2033
2034 init init_aidmethid (
2035 n_id: nullable TId
2036 )
2037 do
2038 empty_init
2039 _n_id = n_id.as(not null)
2040 n_id.parent = self
2041 end
2042
2043 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2044 do
2045 if _n_id == old_child then
2046 if new_child != null then
2047 new_child.parent = self
2048 assert new_child isa TId
2049 _n_id = new_child
2050 else
2051 abort
2052 end
2053 return
2054 end
2055 end
2056
2057 redef fun visit_all(v: Visitor)
2058 do
2059 v.enter_visit(_n_id)
2060 end
2061 end
2062 redef class APlusMethid
2063 private init empty_init do end
2064
2065 init init_aplusmethid (
2066 n_plus: nullable TPlus
2067 )
2068 do
2069 empty_init
2070 _n_plus = n_plus.as(not null)
2071 n_plus.parent = self
2072 end
2073
2074 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2075 do
2076 if _n_plus == old_child then
2077 if new_child != null then
2078 new_child.parent = self
2079 assert new_child isa TPlus
2080 _n_plus = new_child
2081 else
2082 abort
2083 end
2084 return
2085 end
2086 end
2087
2088 redef fun visit_all(v: Visitor)
2089 do
2090 v.enter_visit(_n_plus)
2091 end
2092 end
2093 redef class AMinusMethid
2094 private init empty_init do end
2095
2096 init init_aminusmethid (
2097 n_minus: nullable TMinus
2098 )
2099 do
2100 empty_init
2101 _n_minus = n_minus.as(not null)
2102 n_minus.parent = self
2103 end
2104
2105 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2106 do
2107 if _n_minus == old_child then
2108 if new_child != null then
2109 new_child.parent = self
2110 assert new_child isa TMinus
2111 _n_minus = new_child
2112 else
2113 abort
2114 end
2115 return
2116 end
2117 end
2118
2119 redef fun visit_all(v: Visitor)
2120 do
2121 v.enter_visit(_n_minus)
2122 end
2123 end
2124 redef class AStarMethid
2125 private init empty_init do end
2126
2127 init init_astarmethid (
2128 n_star: nullable TStar
2129 )
2130 do
2131 empty_init
2132 _n_star = n_star.as(not null)
2133 n_star.parent = self
2134 end
2135
2136 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2137 do
2138 if _n_star == old_child then
2139 if new_child != null then
2140 new_child.parent = self
2141 assert new_child isa TStar
2142 _n_star = new_child
2143 else
2144 abort
2145 end
2146 return
2147 end
2148 end
2149
2150 redef fun visit_all(v: Visitor)
2151 do
2152 v.enter_visit(_n_star)
2153 end
2154 end
2155 redef class ASlashMethid
2156 private init empty_init do end
2157
2158 init init_aslashmethid (
2159 n_slash: nullable TSlash
2160 )
2161 do
2162 empty_init
2163 _n_slash = n_slash.as(not null)
2164 n_slash.parent = self
2165 end
2166
2167 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2168 do
2169 if _n_slash == old_child then
2170 if new_child != null then
2171 new_child.parent = self
2172 assert new_child isa TSlash
2173 _n_slash = new_child
2174 else
2175 abort
2176 end
2177 return
2178 end
2179 end
2180
2181 redef fun visit_all(v: Visitor)
2182 do
2183 v.enter_visit(_n_slash)
2184 end
2185 end
2186 redef class APercentMethid
2187 private init empty_init do end
2188
2189 init init_apercentmethid (
2190 n_percent: nullable TPercent
2191 )
2192 do
2193 empty_init
2194 _n_percent = n_percent.as(not null)
2195 n_percent.parent = self
2196 end
2197
2198 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2199 do
2200 if _n_percent == old_child then
2201 if new_child != null then
2202 new_child.parent = self
2203 assert new_child isa TPercent
2204 _n_percent = new_child
2205 else
2206 abort
2207 end
2208 return
2209 end
2210 end
2211
2212 redef fun visit_all(v: Visitor)
2213 do
2214 v.enter_visit(_n_percent)
2215 end
2216 end
2217 redef class AEqMethid
2218 private init empty_init do end
2219
2220 init init_aeqmethid (
2221 n_eq: nullable TEq
2222 )
2223 do
2224 empty_init
2225 _n_eq = n_eq.as(not null)
2226 n_eq.parent = self
2227 end
2228
2229 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2230 do
2231 if _n_eq == old_child then
2232 if new_child != null then
2233 new_child.parent = self
2234 assert new_child isa TEq
2235 _n_eq = new_child
2236 else
2237 abort
2238 end
2239 return
2240 end
2241 end
2242
2243 redef fun visit_all(v: Visitor)
2244 do
2245 v.enter_visit(_n_eq)
2246 end
2247 end
2248 redef class ANeMethid
2249 private init empty_init do end
2250
2251 init init_anemethid (
2252 n_ne: nullable TNe
2253 )
2254 do
2255 empty_init
2256 _n_ne = n_ne.as(not null)
2257 n_ne.parent = self
2258 end
2259
2260 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2261 do
2262 if _n_ne == old_child then
2263 if new_child != null then
2264 new_child.parent = self
2265 assert new_child isa TNe
2266 _n_ne = new_child
2267 else
2268 abort
2269 end
2270 return
2271 end
2272 end
2273
2274 redef fun visit_all(v: Visitor)
2275 do
2276 v.enter_visit(_n_ne)
2277 end
2278 end
2279 redef class ALeMethid
2280 private init empty_init do end
2281
2282 init init_alemethid (
2283 n_le: nullable TLe
2284 )
2285 do
2286 empty_init
2287 _n_le = n_le.as(not null)
2288 n_le.parent = self
2289 end
2290
2291 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2292 do
2293 if _n_le == old_child then
2294 if new_child != null then
2295 new_child.parent = self
2296 assert new_child isa TLe
2297 _n_le = new_child
2298 else
2299 abort
2300 end
2301 return
2302 end
2303 end
2304
2305 redef fun visit_all(v: Visitor)
2306 do
2307 v.enter_visit(_n_le)
2308 end
2309 end
2310 redef class AGeMethid
2311 private init empty_init do end
2312
2313 init init_agemethid (
2314 n_ge: nullable TGe
2315 )
2316 do
2317 empty_init
2318 _n_ge = n_ge.as(not null)
2319 n_ge.parent = self
2320 end
2321
2322 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2323 do
2324 if _n_ge == old_child then
2325 if new_child != null then
2326 new_child.parent = self
2327 assert new_child isa TGe
2328 _n_ge = new_child
2329 else
2330 abort
2331 end
2332 return
2333 end
2334 end
2335
2336 redef fun visit_all(v: Visitor)
2337 do
2338 v.enter_visit(_n_ge)
2339 end
2340 end
2341 redef class ALtMethid
2342 private init empty_init do end
2343
2344 init init_altmethid (
2345 n_lt: nullable TLt
2346 )
2347 do
2348 empty_init
2349 _n_lt = n_lt.as(not null)
2350 n_lt.parent = self
2351 end
2352
2353 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2354 do
2355 if _n_lt == old_child then
2356 if new_child != null then
2357 new_child.parent = self
2358 assert new_child isa TLt
2359 _n_lt = new_child
2360 else
2361 abort
2362 end
2363 return
2364 end
2365 end
2366
2367 redef fun visit_all(v: Visitor)
2368 do
2369 v.enter_visit(_n_lt)
2370 end
2371 end
2372 redef class AGtMethid
2373 private init empty_init do end
2374
2375 init init_agtmethid (
2376 n_gt: nullable TGt
2377 )
2378 do
2379 empty_init
2380 _n_gt = n_gt.as(not null)
2381 n_gt.parent = self
2382 end
2383
2384 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2385 do
2386 if _n_gt == old_child then
2387 if new_child != null then
2388 new_child.parent = self
2389 assert new_child isa TGt
2390 _n_gt = new_child
2391 else
2392 abort
2393 end
2394 return
2395 end
2396 end
2397
2398 redef fun visit_all(v: Visitor)
2399 do
2400 v.enter_visit(_n_gt)
2401 end
2402 end
2403 redef class ABraMethid
2404 private init empty_init do end
2405
2406 init init_abramethid (
2407 n_obra: nullable TObra,
2408 n_cbra: nullable TCbra
2409 )
2410 do
2411 empty_init
2412 _n_obra = n_obra.as(not null)
2413 n_obra.parent = self
2414 _n_cbra = n_cbra.as(not null)
2415 n_cbra.parent = self
2416 end
2417
2418 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2419 do
2420 if _n_obra == old_child then
2421 if new_child != null then
2422 new_child.parent = self
2423 assert new_child isa TObra
2424 _n_obra = new_child
2425 else
2426 abort
2427 end
2428 return
2429 end
2430 if _n_cbra == old_child then
2431 if new_child != null then
2432 new_child.parent = self
2433 assert new_child isa TCbra
2434 _n_cbra = new_child
2435 else
2436 abort
2437 end
2438 return
2439 end
2440 end
2441
2442 redef fun visit_all(v: Visitor)
2443 do
2444 v.enter_visit(_n_obra)
2445 v.enter_visit(_n_cbra)
2446 end
2447 end
2448 redef class AStarshipMethid
2449 private init empty_init do end
2450
2451 init init_astarshipmethid (
2452 n_starship: nullable TStarship
2453 )
2454 do
2455 empty_init
2456 _n_starship = n_starship.as(not null)
2457 n_starship.parent = self
2458 end
2459
2460 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2461 do
2462 if _n_starship == old_child then
2463 if new_child != null then
2464 new_child.parent = self
2465 assert new_child isa TStarship
2466 _n_starship = new_child
2467 else
2468 abort
2469 end
2470 return
2471 end
2472 end
2473
2474 redef fun visit_all(v: Visitor)
2475 do
2476 v.enter_visit(_n_starship)
2477 end
2478 end
2479 redef class AAssignMethid
2480 private init empty_init do end
2481
2482 init init_aassignmethid (
2483 n_id: nullable TId,
2484 n_assign: nullable TAssign
2485 )
2486 do
2487 empty_init
2488 _n_id = n_id.as(not null)
2489 n_id.parent = self
2490 _n_assign = n_assign.as(not null)
2491 n_assign.parent = self
2492 end
2493
2494 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2495 do
2496 if _n_id == old_child then
2497 if new_child != null then
2498 new_child.parent = self
2499 assert new_child isa TId
2500 _n_id = new_child
2501 else
2502 abort
2503 end
2504 return
2505 end
2506 if _n_assign == old_child then
2507 if new_child != null then
2508 new_child.parent = self
2509 assert new_child isa TAssign
2510 _n_assign = new_child
2511 else
2512 abort
2513 end
2514 return
2515 end
2516 end
2517
2518 redef fun visit_all(v: Visitor)
2519 do
2520 v.enter_visit(_n_id)
2521 v.enter_visit(_n_assign)
2522 end
2523 end
2524 redef class ABraassignMethid
2525 private init empty_init do end
2526
2527 init init_abraassignmethid (
2528 n_obra: nullable TObra,
2529 n_cbra: nullable TCbra,
2530 n_assign: nullable TAssign
2531 )
2532 do
2533 empty_init
2534 _n_obra = n_obra.as(not null)
2535 n_obra.parent = self
2536 _n_cbra = n_cbra.as(not null)
2537 n_cbra.parent = self
2538 _n_assign = n_assign.as(not null)
2539 n_assign.parent = self
2540 end
2541
2542 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2543 do
2544 if _n_obra == old_child then
2545 if new_child != null then
2546 new_child.parent = self
2547 assert new_child isa TObra
2548 _n_obra = new_child
2549 else
2550 abort
2551 end
2552 return
2553 end
2554 if _n_cbra == old_child then
2555 if new_child != null then
2556 new_child.parent = self
2557 assert new_child isa TCbra
2558 _n_cbra = new_child
2559 else
2560 abort
2561 end
2562 return
2563 end
2564 if _n_assign == old_child then
2565 if new_child != null then
2566 new_child.parent = self
2567 assert new_child isa TAssign
2568 _n_assign = new_child
2569 else
2570 abort
2571 end
2572 return
2573 end
2574 end
2575
2576 redef fun visit_all(v: Visitor)
2577 do
2578 v.enter_visit(_n_obra)
2579 v.enter_visit(_n_cbra)
2580 v.enter_visit(_n_assign)
2581 end
2582 end
2583 redef class ASignature
2584 private init empty_init do end
2585
2586 init init_asignature (
2587 n_params: Collection[Object], # Should be Collection[AParam]
2588 n_type: nullable AType,
2589 n_closure_decls: Collection[Object] # Should be Collection[AClosureDecl]
2590 )
2591 do
2592 empty_init
2593 for n in n_params do
2594 assert n isa AParam
2595 _n_params.add(n)
2596 n.parent = self
2597 end
2598 _n_type = n_type
2599 if n_type != null then
2600 n_type.parent = self
2601 end
2602 for n in n_closure_decls do
2603 assert n isa AClosureDecl
2604 _n_closure_decls.add(n)
2605 n.parent = self
2606 end
2607 end
2608
2609 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2610 do
2611 for i in [0.._n_params.length[ do
2612 if _n_params[i] == old_child then
2613 if new_child != null then
2614 assert new_child isa AParam
2615 _n_params[i] = new_child
2616 new_child.parent = self
2617 else
2618 _n_params.remove_at(i)
2619 end
2620 return
2621 end
2622 end
2623 if _n_type == old_child then
2624 if new_child != null then
2625 new_child.parent = self
2626 assert new_child isa AType
2627 _n_type = new_child
2628 else
2629 _n_type = null
2630 end
2631 return
2632 end
2633 for i in [0.._n_closure_decls.length[ do
2634 if _n_closure_decls[i] == old_child then
2635 if new_child != null then
2636 assert new_child isa AClosureDecl
2637 _n_closure_decls[i] = new_child
2638 new_child.parent = self
2639 else
2640 _n_closure_decls.remove_at(i)
2641 end
2642 return
2643 end
2644 end
2645 end
2646
2647 redef fun visit_all(v: Visitor)
2648 do
2649 for n in _n_params do
2650 v.enter_visit(n)
2651 end
2652 if _n_type != null then
2653 v.enter_visit(_n_type.as(not null))
2654 end
2655 for n in _n_closure_decls do
2656 v.enter_visit(n)
2657 end
2658 end
2659 end
2660 redef class AParam
2661 private init empty_init do end
2662
2663 init init_aparam (
2664 n_id: nullable TId,
2665 n_type: nullable AType,
2666 n_dotdotdot: nullable TDotdotdot
2667 )
2668 do
2669 empty_init
2670 _n_id = n_id.as(not null)
2671 n_id.parent = self
2672 _n_type = n_type
2673 if n_type != null then
2674 n_type.parent = self
2675 end
2676 _n_dotdotdot = n_dotdotdot
2677 if n_dotdotdot != null then
2678 n_dotdotdot.parent = self
2679 end
2680 end
2681
2682 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2683 do
2684 if _n_id == old_child then
2685 if new_child != null then
2686 new_child.parent = self
2687 assert new_child isa TId
2688 _n_id = new_child
2689 else
2690 abort
2691 end
2692 return
2693 end
2694 if _n_type == old_child then
2695 if new_child != null then
2696 new_child.parent = self
2697 assert new_child isa AType
2698 _n_type = new_child
2699 else
2700 _n_type = null
2701 end
2702 return
2703 end
2704 if _n_dotdotdot == old_child then
2705 if new_child != null then
2706 new_child.parent = self
2707 assert new_child isa TDotdotdot
2708 _n_dotdotdot = new_child
2709 else
2710 _n_dotdotdot = null
2711 end
2712 return
2713 end
2714 end
2715
2716 redef fun visit_all(v: Visitor)
2717 do
2718 v.enter_visit(_n_id)
2719 if _n_type != null then
2720 v.enter_visit(_n_type.as(not null))
2721 end
2722 if _n_dotdotdot != null then
2723 v.enter_visit(_n_dotdotdot.as(not null))
2724 end
2725 end
2726 end
2727 redef class AClosureDecl
2728 private init empty_init do end
2729
2730 init init_aclosuredecl (
2731 n_kwbreak: nullable TKwbreak,
2732 n_bang: nullable TBang,
2733 n_id: nullable TId,
2734 n_signature: nullable ASignature,
2735 n_expr: nullable AExpr
2736 )
2737 do
2738 empty_init
2739 _n_kwbreak = n_kwbreak
2740 if n_kwbreak != null then
2741 n_kwbreak.parent = self
2742 end
2743 _n_bang = n_bang.as(not null)
2744 n_bang.parent = self
2745 _n_id = n_id.as(not null)
2746 n_id.parent = self
2747 _n_signature = n_signature.as(not null)
2748 n_signature.parent = self
2749 _n_expr = n_expr
2750 if n_expr != null then
2751 n_expr.parent = self
2752 end
2753 end
2754
2755 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2756 do
2757 if _n_kwbreak == old_child then
2758 if new_child != null then
2759 new_child.parent = self
2760 assert new_child isa TKwbreak
2761 _n_kwbreak = new_child
2762 else
2763 _n_kwbreak = null
2764 end
2765 return
2766 end
2767 if _n_bang == old_child then
2768 if new_child != null then
2769 new_child.parent = self
2770 assert new_child isa TBang
2771 _n_bang = new_child
2772 else
2773 abort
2774 end
2775 return
2776 end
2777 if _n_id == old_child then
2778 if new_child != null then
2779 new_child.parent = self
2780 assert new_child isa TId
2781 _n_id = new_child
2782 else
2783 abort
2784 end
2785 return
2786 end
2787 if _n_signature == old_child then
2788 if new_child != null then
2789 new_child.parent = self
2790 assert new_child isa ASignature
2791 _n_signature = new_child
2792 else
2793 abort
2794 end
2795 return
2796 end
2797 if _n_expr == old_child then
2798 if new_child != null then
2799 new_child.parent = self
2800 assert new_child isa AExpr
2801 _n_expr = new_child
2802 else
2803 _n_expr = null
2804 end
2805 return
2806 end
2807 end
2808
2809 redef fun visit_all(v: Visitor)
2810 do
2811 if _n_kwbreak != null then
2812 v.enter_visit(_n_kwbreak.as(not null))
2813 end
2814 v.enter_visit(_n_bang)
2815 v.enter_visit(_n_id)
2816 v.enter_visit(_n_signature)
2817 if _n_expr != null then
2818 v.enter_visit(_n_expr.as(not null))
2819 end
2820 end
2821 end
2822 redef class AType
2823 private init empty_init do end
2824
2825 init init_atype (
2826 n_kwnullable: nullable TKwnullable,
2827 n_id: nullable TClassid,
2828 n_types: Collection[Object] # Should be Collection[AType]
2829 )
2830 do
2831 empty_init
2832 _n_kwnullable = n_kwnullable
2833 if n_kwnullable != null then
2834 n_kwnullable.parent = self
2835 end
2836 _n_id = n_id.as(not null)
2837 n_id.parent = self
2838 for n in n_types do
2839 assert n isa AType
2840 _n_types.add(n)
2841 n.parent = self
2842 end
2843 end
2844
2845 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2846 do
2847 if _n_kwnullable == old_child then
2848 if new_child != null then
2849 new_child.parent = self
2850 assert new_child isa TKwnullable
2851 _n_kwnullable = new_child
2852 else
2853 _n_kwnullable = null
2854 end
2855 return
2856 end
2857 if _n_id == old_child then
2858 if new_child != null then
2859 new_child.parent = self
2860 assert new_child isa TClassid
2861 _n_id = new_child
2862 else
2863 abort
2864 end
2865 return
2866 end
2867 for i in [0.._n_types.length[ do
2868 if _n_types[i] == old_child then
2869 if new_child != null then
2870 assert new_child isa AType
2871 _n_types[i] = new_child
2872 new_child.parent = self
2873 else
2874 _n_types.remove_at(i)
2875 end
2876 return
2877 end
2878 end
2879 end
2880
2881 redef fun visit_all(v: Visitor)
2882 do
2883 if _n_kwnullable != null then
2884 v.enter_visit(_n_kwnullable.as(not null))
2885 end
2886 v.enter_visit(_n_id)
2887 for n in _n_types do
2888 v.enter_visit(n)
2889 end
2890 end
2891 end
2892 redef class ALabel
2893 private init empty_init do end
2894
2895 init init_alabel (
2896 n_kwlabel: nullable TKwlabel,
2897 n_id: nullable TId
2898 )
2899 do
2900 empty_init
2901 _n_kwlabel = n_kwlabel.as(not null)
2902 n_kwlabel.parent = self
2903 _n_id = n_id.as(not null)
2904 n_id.parent = self
2905 end
2906
2907 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2908 do
2909 if _n_kwlabel == old_child then
2910 if new_child != null then
2911 new_child.parent = self
2912 assert new_child isa TKwlabel
2913 _n_kwlabel = new_child
2914 else
2915 abort
2916 end
2917 return
2918 end
2919 if _n_id == old_child then
2920 if new_child != null then
2921 new_child.parent = self
2922 assert new_child isa TId
2923 _n_id = new_child
2924 else
2925 abort
2926 end
2927 return
2928 end
2929 end
2930
2931 redef fun visit_all(v: Visitor)
2932 do
2933 v.enter_visit(_n_kwlabel)
2934 v.enter_visit(_n_id)
2935 end
2936 end
2937 redef class ABlockExpr
2938 private init empty_init do end
2939
2940 init init_ablockexpr (
2941 n_expr: Collection[Object] # Should be Collection[AExpr]
2942 )
2943 do
2944 empty_init
2945 for n in n_expr do
2946 assert n isa AExpr
2947 _n_expr.add(n)
2948 n.parent = self
2949 end
2950 end
2951
2952 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
2953 do
2954 for i in [0.._n_expr.length[ do
2955 if _n_expr[i] == old_child then
2956 if new_child != null then
2957 assert new_child isa AExpr
2958 _n_expr[i] = new_child
2959 new_child.parent = self
2960 else
2961 _n_expr.remove_at(i)
2962 end
2963 return
2964 end
2965 end
2966 end
2967
2968 redef fun visit_all(v: Visitor)
2969 do
2970 for n in _n_expr do
2971 v.enter_visit(n)
2972 end
2973 end
2974 end
2975 redef class AVardeclExpr
2976 private init empty_init do end
2977
2978 init init_avardeclexpr (
2979 n_kwvar: nullable TKwvar,
2980 n_id: nullable TId,
2981 n_type: nullable AType,
2982 n_assign: nullable TAssign,
2983 n_expr: nullable AExpr
2984 )
2985 do
2986 empty_init
2987 _n_kwvar = n_kwvar.as(not null)
2988 n_kwvar.parent = self
2989 _n_id = n_id.as(not null)
2990 n_id.parent = self
2991 _n_type = n_type
2992 if n_type != null then
2993 n_type.parent = self
2994 end
2995 _n_assign = n_assign
2996 if n_assign != null then
2997 n_assign.parent = self
2998 end
2999 _n_expr = n_expr
3000 if n_expr != null then
3001 n_expr.parent = self
3002 end
3003 end
3004
3005 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3006 do
3007 if _n_kwvar == old_child then
3008 if new_child != null then
3009 new_child.parent = self
3010 assert new_child isa TKwvar
3011 _n_kwvar = new_child
3012 else
3013 abort
3014 end
3015 return
3016 end
3017 if _n_id == old_child then
3018 if new_child != null then
3019 new_child.parent = self
3020 assert new_child isa TId
3021 _n_id = new_child
3022 else
3023 abort
3024 end
3025 return
3026 end
3027 if _n_type == old_child then
3028 if new_child != null then
3029 new_child.parent = self
3030 assert new_child isa AType
3031 _n_type = new_child
3032 else
3033 _n_type = null
3034 end
3035 return
3036 end
3037 if _n_assign == old_child then
3038 if new_child != null then
3039 new_child.parent = self
3040 assert new_child isa TAssign
3041 _n_assign = new_child
3042 else
3043 _n_assign = null
3044 end
3045 return
3046 end
3047 if _n_expr == old_child then
3048 if new_child != null then
3049 new_child.parent = self
3050 assert new_child isa AExpr
3051 _n_expr = new_child
3052 else
3053 _n_expr = null
3054 end
3055 return
3056 end
3057 end
3058
3059 redef fun visit_all(v: Visitor)
3060 do
3061 v.enter_visit(_n_kwvar)
3062 v.enter_visit(_n_id)
3063 if _n_type != null then
3064 v.enter_visit(_n_type.as(not null))
3065 end
3066 if _n_assign != null then
3067 v.enter_visit(_n_assign.as(not null))
3068 end
3069 if _n_expr != null then
3070 v.enter_visit(_n_expr.as(not null))
3071 end
3072 end
3073 end
3074 redef class AReturnExpr
3075 private init empty_init do end
3076
3077 init init_areturnexpr (
3078 n_kwreturn: nullable TKwreturn,
3079 n_expr: nullable AExpr
3080 )
3081 do
3082 empty_init
3083 _n_kwreturn = n_kwreturn
3084 if n_kwreturn != null then
3085 n_kwreturn.parent = self
3086 end
3087 _n_expr = n_expr
3088 if n_expr != null then
3089 n_expr.parent = self
3090 end
3091 end
3092
3093 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3094 do
3095 if _n_kwreturn == old_child then
3096 if new_child != null then
3097 new_child.parent = self
3098 assert new_child isa TKwreturn
3099 _n_kwreturn = new_child
3100 else
3101 _n_kwreturn = null
3102 end
3103 return
3104 end
3105 if _n_expr == old_child then
3106 if new_child != null then
3107 new_child.parent = self
3108 assert new_child isa AExpr
3109 _n_expr = new_child
3110 else
3111 _n_expr = null
3112 end
3113 return
3114 end
3115 end
3116
3117 redef fun visit_all(v: Visitor)
3118 do
3119 if _n_kwreturn != null then
3120 v.enter_visit(_n_kwreturn.as(not null))
3121 end
3122 if _n_expr != null then
3123 v.enter_visit(_n_expr.as(not null))
3124 end
3125 end
3126 end
3127 redef class ABreakExpr
3128 private init empty_init do end
3129
3130 init init_abreakexpr (
3131 n_kwbreak: nullable TKwbreak,
3132 n_label: nullable ALabel,
3133 n_expr: nullable AExpr
3134 )
3135 do
3136 empty_init
3137 _n_kwbreak = n_kwbreak.as(not null)
3138 n_kwbreak.parent = self
3139 _n_label = n_label
3140 if n_label != null then
3141 n_label.parent = self
3142 end
3143 _n_expr = n_expr
3144 if n_expr != null then
3145 n_expr.parent = self
3146 end
3147 end
3148
3149 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3150 do
3151 if _n_kwbreak == old_child then
3152 if new_child != null then
3153 new_child.parent = self
3154 assert new_child isa TKwbreak
3155 _n_kwbreak = new_child
3156 else
3157 abort
3158 end
3159 return
3160 end
3161 if _n_label == old_child then
3162 if new_child != null then
3163 new_child.parent = self
3164 assert new_child isa ALabel
3165 _n_label = new_child
3166 else
3167 _n_label = null
3168 end
3169 return
3170 end
3171 if _n_expr == old_child then
3172 if new_child != null then
3173 new_child.parent = self
3174 assert new_child isa AExpr
3175 _n_expr = new_child
3176 else
3177 _n_expr = null
3178 end
3179 return
3180 end
3181 end
3182
3183 redef fun visit_all(v: Visitor)
3184 do
3185 v.enter_visit(_n_kwbreak)
3186 if _n_label != null then
3187 v.enter_visit(_n_label.as(not null))
3188 end
3189 if _n_expr != null then
3190 v.enter_visit(_n_expr.as(not null))
3191 end
3192 end
3193 end
3194 redef class AAbortExpr
3195 private init empty_init do end
3196
3197 init init_aabortexpr (
3198 n_kwabort: nullable TKwabort
3199 )
3200 do
3201 empty_init
3202 _n_kwabort = n_kwabort.as(not null)
3203 n_kwabort.parent = self
3204 end
3205
3206 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3207 do
3208 if _n_kwabort == old_child then
3209 if new_child != null then
3210 new_child.parent = self
3211 assert new_child isa TKwabort
3212 _n_kwabort = new_child
3213 else
3214 abort
3215 end
3216 return
3217 end
3218 end
3219
3220 redef fun visit_all(v: Visitor)
3221 do
3222 v.enter_visit(_n_kwabort)
3223 end
3224 end
3225 redef class AContinueExpr
3226 private init empty_init do end
3227
3228 init init_acontinueexpr (
3229 n_kwcontinue: nullable TKwcontinue,
3230 n_label: nullable ALabel,
3231 n_expr: nullable AExpr
3232 )
3233 do
3234 empty_init
3235 _n_kwcontinue = n_kwcontinue
3236 if n_kwcontinue != null then
3237 n_kwcontinue.parent = self
3238 end
3239 _n_label = n_label
3240 if n_label != null then
3241 n_label.parent = self
3242 end
3243 _n_expr = n_expr
3244 if n_expr != null then
3245 n_expr.parent = self
3246 end
3247 end
3248
3249 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3250 do
3251 if _n_kwcontinue == old_child then
3252 if new_child != null then
3253 new_child.parent = self
3254 assert new_child isa TKwcontinue
3255 _n_kwcontinue = new_child
3256 else
3257 _n_kwcontinue = null
3258 end
3259 return
3260 end
3261 if _n_label == old_child then
3262 if new_child != null then
3263 new_child.parent = self
3264 assert new_child isa ALabel
3265 _n_label = new_child
3266 else
3267 _n_label = null
3268 end
3269 return
3270 end
3271 if _n_expr == old_child then
3272 if new_child != null then
3273 new_child.parent = self
3274 assert new_child isa AExpr
3275 _n_expr = new_child
3276 else
3277 _n_expr = null
3278 end
3279 return
3280 end
3281 end
3282
3283 redef fun visit_all(v: Visitor)
3284 do
3285 if _n_kwcontinue != null then
3286 v.enter_visit(_n_kwcontinue.as(not null))
3287 end
3288 if _n_label != null then
3289 v.enter_visit(_n_label.as(not null))
3290 end
3291 if _n_expr != null then
3292 v.enter_visit(_n_expr.as(not null))
3293 end
3294 end
3295 end
3296 redef class ADoExpr
3297 private init empty_init do end
3298
3299 init init_adoexpr (
3300 n_kwdo: nullable TKwdo,
3301 n_block: nullable AExpr,
3302 n_label: nullable ALabel
3303 )
3304 do
3305 empty_init
3306 _n_kwdo = n_kwdo.as(not null)
3307 n_kwdo.parent = self
3308 _n_block = n_block
3309 if n_block != null then
3310 n_block.parent = self
3311 end
3312 _n_label = n_label
3313 if n_label != null then
3314 n_label.parent = self
3315 end
3316 end
3317
3318 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3319 do
3320 if _n_kwdo == old_child then
3321 if new_child != null then
3322 new_child.parent = self
3323 assert new_child isa TKwdo
3324 _n_kwdo = new_child
3325 else
3326 abort
3327 end
3328 return
3329 end
3330 if _n_block == old_child then
3331 if new_child != null then
3332 new_child.parent = self
3333 assert new_child isa AExpr
3334 _n_block = new_child
3335 else
3336 _n_block = null
3337 end
3338 return
3339 end
3340 if _n_label == old_child then
3341 if new_child != null then
3342 new_child.parent = self
3343 assert new_child isa ALabel
3344 _n_label = new_child
3345 else
3346 _n_label = null
3347 end
3348 return
3349 end
3350 end
3351
3352 redef fun visit_all(v: Visitor)
3353 do
3354 v.enter_visit(_n_kwdo)
3355 if _n_block != null then
3356 v.enter_visit(_n_block.as(not null))
3357 end
3358 if _n_label != null then
3359 v.enter_visit(_n_label.as(not null))
3360 end
3361 end
3362 end
3363 redef class AIfExpr
3364 private init empty_init do end
3365
3366 init init_aifexpr (
3367 n_kwif: nullable TKwif,
3368 n_expr: nullable AExpr,
3369 n_then: nullable AExpr,
3370 n_else: nullable AExpr
3371 )
3372 do
3373 empty_init
3374 _n_kwif = n_kwif.as(not null)
3375 n_kwif.parent = self
3376 _n_expr = n_expr.as(not null)
3377 n_expr.parent = self
3378 _n_then = n_then
3379 if n_then != null then
3380 n_then.parent = self
3381 end
3382 _n_else = n_else
3383 if n_else != null then
3384 n_else.parent = self
3385 end
3386 end
3387
3388 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3389 do
3390 if _n_kwif == old_child then
3391 if new_child != null then
3392 new_child.parent = self
3393 assert new_child isa TKwif
3394 _n_kwif = new_child
3395 else
3396 abort
3397 end
3398 return
3399 end
3400 if _n_expr == old_child then
3401 if new_child != null then
3402 new_child.parent = self
3403 assert new_child isa AExpr
3404 _n_expr = new_child
3405 else
3406 abort
3407 end
3408 return
3409 end
3410 if _n_then == old_child then
3411 if new_child != null then
3412 new_child.parent = self
3413 assert new_child isa AExpr
3414 _n_then = new_child
3415 else
3416 _n_then = null
3417 end
3418 return
3419 end
3420 if _n_else == old_child then
3421 if new_child != null then
3422 new_child.parent = self
3423 assert new_child isa AExpr
3424 _n_else = new_child
3425 else
3426 _n_else = null
3427 end
3428 return
3429 end
3430 end
3431
3432 redef fun visit_all(v: Visitor)
3433 do
3434 v.enter_visit(_n_kwif)
3435 v.enter_visit(_n_expr)
3436 if _n_then != null then
3437 v.enter_visit(_n_then.as(not null))
3438 end
3439 if _n_else != null then
3440 v.enter_visit(_n_else.as(not null))
3441 end
3442 end
3443 end
3444 redef class AIfexprExpr
3445 private init empty_init do end
3446
3447 init init_aifexprexpr (
3448 n_kwif: nullable TKwif,
3449 n_expr: nullable AExpr,
3450 n_kwthen: nullable TKwthen,
3451 n_then: nullable AExpr,
3452 n_kwelse: nullable TKwelse,
3453 n_else: nullable AExpr
3454 )
3455 do
3456 empty_init
3457 _n_kwif = n_kwif.as(not null)
3458 n_kwif.parent = self
3459 _n_expr = n_expr.as(not null)
3460 n_expr.parent = self
3461 _n_kwthen = n_kwthen.as(not null)
3462 n_kwthen.parent = self
3463 _n_then = n_then.as(not null)
3464 n_then.parent = self
3465 _n_kwelse = n_kwelse.as(not null)
3466 n_kwelse.parent = self
3467 _n_else = n_else.as(not null)
3468 n_else.parent = self
3469 end
3470
3471 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3472 do
3473 if _n_kwif == old_child then
3474 if new_child != null then
3475 new_child.parent = self
3476 assert new_child isa TKwif
3477 _n_kwif = new_child
3478 else
3479 abort
3480 end
3481 return
3482 end
3483 if _n_expr == old_child then
3484 if new_child != null then
3485 new_child.parent = self
3486 assert new_child isa AExpr
3487 _n_expr = new_child
3488 else
3489 abort
3490 end
3491 return
3492 end
3493 if _n_kwthen == old_child then
3494 if new_child != null then
3495 new_child.parent = self
3496 assert new_child isa TKwthen
3497 _n_kwthen = new_child
3498 else
3499 abort
3500 end
3501 return
3502 end
3503 if _n_then == old_child then
3504 if new_child != null then
3505 new_child.parent = self
3506 assert new_child isa AExpr
3507 _n_then = new_child
3508 else
3509 abort
3510 end
3511 return
3512 end
3513 if _n_kwelse == old_child then
3514 if new_child != null then
3515 new_child.parent = self
3516 assert new_child isa TKwelse
3517 _n_kwelse = new_child
3518 else
3519 abort
3520 end
3521 return
3522 end
3523 if _n_else == old_child then
3524 if new_child != null then
3525 new_child.parent = self
3526 assert new_child isa AExpr
3527 _n_else = 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_kwif)
3538 v.enter_visit(_n_expr)
3539 v.enter_visit(_n_kwthen)
3540 v.enter_visit(_n_then)
3541 v.enter_visit(_n_kwelse)
3542 v.enter_visit(_n_else)
3543 end
3544 end
3545 redef class AWhileExpr
3546 private init empty_init do end
3547
3548 init init_awhileexpr (
3549 n_kwwhile: nullable TKwwhile,
3550 n_expr: nullable AExpr,
3551 n_kwdo: nullable TKwdo,
3552 n_block: nullable AExpr,
3553 n_label: nullable ALabel
3554 )
3555 do
3556 empty_init
3557 _n_kwwhile = n_kwwhile.as(not null)
3558 n_kwwhile.parent = self
3559 _n_expr = n_expr.as(not null)
3560 n_expr.parent = self
3561 _n_kwdo = n_kwdo.as(not null)
3562 n_kwdo.parent = self
3563 _n_block = n_block
3564 if n_block != null then
3565 n_block.parent = self
3566 end
3567 _n_label = n_label
3568 if n_label != null then
3569 n_label.parent = self
3570 end
3571 end
3572
3573 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3574 do
3575 if _n_kwwhile == old_child then
3576 if new_child != null then
3577 new_child.parent = self
3578 assert new_child isa TKwwhile
3579 _n_kwwhile = new_child
3580 else
3581 abort
3582 end
3583 return
3584 end
3585 if _n_expr == old_child then
3586 if new_child != null then
3587 new_child.parent = self
3588 assert new_child isa AExpr
3589 _n_expr = new_child
3590 else
3591 abort
3592 end
3593 return
3594 end
3595 if _n_kwdo == old_child then
3596 if new_child != null then
3597 new_child.parent = self
3598 assert new_child isa TKwdo
3599 _n_kwdo = new_child
3600 else
3601 abort
3602 end
3603 return
3604 end
3605 if _n_block == old_child then
3606 if new_child != null then
3607 new_child.parent = self
3608 assert new_child isa AExpr
3609 _n_block = new_child
3610 else
3611 _n_block = null
3612 end
3613 return
3614 end
3615 if _n_label == old_child then
3616 if new_child != null then
3617 new_child.parent = self
3618 assert new_child isa ALabel
3619 _n_label = new_child
3620 else
3621 _n_label = null
3622 end
3623 return
3624 end
3625 end
3626
3627 redef fun visit_all(v: Visitor)
3628 do
3629 v.enter_visit(_n_kwwhile)
3630 v.enter_visit(_n_expr)
3631 v.enter_visit(_n_kwdo)
3632 if _n_block != null then
3633 v.enter_visit(_n_block.as(not null))
3634 end
3635 if _n_label != null then
3636 v.enter_visit(_n_label.as(not null))
3637 end
3638 end
3639 end
3640 redef class ALoopExpr
3641 private init empty_init do end
3642
3643 init init_aloopexpr (
3644 n_kwloop: nullable TKwloop,
3645 n_block: nullable AExpr,
3646 n_label: nullable ALabel
3647 )
3648 do
3649 empty_init
3650 _n_kwloop = n_kwloop.as(not null)
3651 n_kwloop.parent = self
3652 _n_block = n_block
3653 if n_block != null then
3654 n_block.parent = self
3655 end
3656 _n_label = n_label
3657 if n_label != null then
3658 n_label.parent = self
3659 end
3660 end
3661
3662 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3663 do
3664 if _n_kwloop == old_child then
3665 if new_child != null then
3666 new_child.parent = self
3667 assert new_child isa TKwloop
3668 _n_kwloop = new_child
3669 else
3670 abort
3671 end
3672 return
3673 end
3674 if _n_block == old_child then
3675 if new_child != null then
3676 new_child.parent = self
3677 assert new_child isa AExpr
3678 _n_block = new_child
3679 else
3680 _n_block = null
3681 end
3682 return
3683 end
3684 if _n_label == old_child then
3685 if new_child != null then
3686 new_child.parent = self
3687 assert new_child isa ALabel
3688 _n_label = new_child
3689 else
3690 _n_label = null
3691 end
3692 return
3693 end
3694 end
3695
3696 redef fun visit_all(v: Visitor)
3697 do
3698 v.enter_visit(_n_kwloop)
3699 if _n_block != null then
3700 v.enter_visit(_n_block.as(not null))
3701 end
3702 if _n_label != null then
3703 v.enter_visit(_n_label.as(not null))
3704 end
3705 end
3706 end
3707 redef class AForExpr
3708 private init empty_init do end
3709
3710 init init_aforexpr (
3711 n_kwfor: nullable TKwfor,
3712 n_id: nullable TId,
3713 n_expr: nullable AExpr,
3714 n_kwdo: nullable TKwdo,
3715 n_block: nullable AExpr,
3716 n_label: nullable ALabel
3717 )
3718 do
3719 empty_init
3720 _n_kwfor = n_kwfor.as(not null)
3721 n_kwfor.parent = self
3722 _n_id = n_id.as(not null)
3723 n_id.parent = self
3724 _n_expr = n_expr.as(not null)
3725 n_expr.parent = self
3726 _n_kwdo = n_kwdo.as(not null)
3727 n_kwdo.parent = self
3728 _n_block = n_block
3729 if n_block != null then
3730 n_block.parent = self
3731 end
3732 _n_label = n_label
3733 if n_label != null then
3734 n_label.parent = self
3735 end
3736 end
3737
3738 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3739 do
3740 if _n_kwfor == old_child then
3741 if new_child != null then
3742 new_child.parent = self
3743 assert new_child isa TKwfor
3744 _n_kwfor = new_child
3745 else
3746 abort
3747 end
3748 return
3749 end
3750 if _n_id == old_child then
3751 if new_child != null then
3752 new_child.parent = self
3753 assert new_child isa TId
3754 _n_id = new_child
3755 else
3756 abort
3757 end
3758 return
3759 end
3760 if _n_expr == old_child then
3761 if new_child != null then
3762 new_child.parent = self
3763 assert new_child isa AExpr
3764 _n_expr = new_child
3765 else
3766 abort
3767 end
3768 return
3769 end
3770 if _n_kwdo == old_child then
3771 if new_child != null then
3772 new_child.parent = self
3773 assert new_child isa TKwdo
3774 _n_kwdo = new_child
3775 else
3776 abort
3777 end
3778 return
3779 end
3780 if _n_block == old_child then
3781 if new_child != null then
3782 new_child.parent = self
3783 assert new_child isa AExpr
3784 _n_block = new_child
3785 else
3786 _n_block = null
3787 end
3788 return
3789 end
3790 if _n_label == old_child then
3791 if new_child != null then
3792 new_child.parent = self
3793 assert new_child isa ALabel
3794 _n_label = new_child
3795 else
3796 _n_label = null
3797 end
3798 return
3799 end
3800 end
3801
3802 redef fun visit_all(v: Visitor)
3803 do
3804 v.enter_visit(_n_kwfor)
3805 v.enter_visit(_n_id)
3806 v.enter_visit(_n_expr)
3807 v.enter_visit(_n_kwdo)
3808 if _n_block != null then
3809 v.enter_visit(_n_block.as(not null))
3810 end
3811 if _n_label != null then
3812 v.enter_visit(_n_label.as(not null))
3813 end
3814 end
3815 end
3816 redef class AAssertExpr
3817 private init empty_init do end
3818
3819 init init_aassertexpr (
3820 n_kwassert: nullable TKwassert,
3821 n_id: nullable TId,
3822 n_expr: nullable AExpr,
3823 n_else: nullable AExpr
3824 )
3825 do
3826 empty_init
3827 _n_kwassert = n_kwassert.as(not null)
3828 n_kwassert.parent = self
3829 _n_id = n_id
3830 if n_id != null then
3831 n_id.parent = self
3832 end
3833 _n_expr = n_expr.as(not null)
3834 n_expr.parent = self
3835 _n_else = n_else
3836 if n_else != null then
3837 n_else.parent = self
3838 end
3839 end
3840
3841 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3842 do
3843 if _n_kwassert == old_child then
3844 if new_child != null then
3845 new_child.parent = self
3846 assert new_child isa TKwassert
3847 _n_kwassert = new_child
3848 else
3849 abort
3850 end
3851 return
3852 end
3853 if _n_id == old_child then
3854 if new_child != null then
3855 new_child.parent = self
3856 assert new_child isa TId
3857 _n_id = new_child
3858 else
3859 _n_id = null
3860 end
3861 return
3862 end
3863 if _n_expr == old_child then
3864 if new_child != null then
3865 new_child.parent = self
3866 assert new_child isa AExpr
3867 _n_expr = new_child
3868 else
3869 abort
3870 end
3871 return
3872 end
3873 if _n_else == old_child then
3874 if new_child != null then
3875 new_child.parent = self
3876 assert new_child isa AExpr
3877 _n_else = new_child
3878 else
3879 _n_else = null
3880 end
3881 return
3882 end
3883 end
3884
3885 redef fun visit_all(v: Visitor)
3886 do
3887 v.enter_visit(_n_kwassert)
3888 if _n_id != null then
3889 v.enter_visit(_n_id.as(not null))
3890 end
3891 v.enter_visit(_n_expr)
3892 if _n_else != null then
3893 v.enter_visit(_n_else.as(not null))
3894 end
3895 end
3896 end
3897 redef class AOnceExpr
3898 private init empty_init do end
3899
3900 init init_aonceexpr (
3901 n_kwonce: nullable TKwonce,
3902 n_expr: nullable AExpr
3903 )
3904 do
3905 empty_init
3906 _n_kwonce = n_kwonce.as(not null)
3907 n_kwonce.parent = self
3908 _n_expr = n_expr.as(not null)
3909 n_expr.parent = self
3910 end
3911
3912 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3913 do
3914 if _n_kwonce == old_child then
3915 if new_child != null then
3916 new_child.parent = self
3917 assert new_child isa TKwonce
3918 _n_kwonce = new_child
3919 else
3920 abort
3921 end
3922 return
3923 end
3924 if _n_expr == old_child then
3925 if new_child != null then
3926 new_child.parent = self
3927 assert new_child isa AExpr
3928 _n_expr = new_child
3929 else
3930 abort
3931 end
3932 return
3933 end
3934 end
3935
3936 redef fun visit_all(v: Visitor)
3937 do
3938 v.enter_visit(_n_kwonce)
3939 v.enter_visit(_n_expr)
3940 end
3941 end
3942 redef class ASendExpr
3943 private init empty_init do end
3944
3945 init init_asendexpr (
3946 n_expr: nullable AExpr
3947 )
3948 do
3949 empty_init
3950 _n_expr = n_expr.as(not null)
3951 n_expr.parent = self
3952 end
3953
3954 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3955 do
3956 if _n_expr == old_child then
3957 if new_child != null then
3958 new_child.parent = self
3959 assert new_child isa AExpr
3960 _n_expr = new_child
3961 else
3962 abort
3963 end
3964 return
3965 end
3966 end
3967
3968 redef fun visit_all(v: Visitor)
3969 do
3970 v.enter_visit(_n_expr)
3971 end
3972 end
3973 redef class ABinopExpr
3974 private init empty_init do end
3975
3976 init init_abinopexpr (
3977 n_expr: nullable AExpr,
3978 n_expr2: nullable AExpr
3979 )
3980 do
3981 empty_init
3982 _n_expr = n_expr.as(not null)
3983 n_expr.parent = self
3984 _n_expr2 = n_expr2.as(not null)
3985 n_expr2.parent = self
3986 end
3987
3988 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
3989 do
3990 if _n_expr == old_child then
3991 if new_child != null then
3992 new_child.parent = self
3993 assert new_child isa AExpr
3994 _n_expr = new_child
3995 else
3996 abort
3997 end
3998 return
3999 end
4000 if _n_expr2 == old_child then
4001 if new_child != null then
4002 new_child.parent = self
4003 assert new_child isa AExpr
4004 _n_expr2 = new_child
4005 else
4006 abort
4007 end
4008 return
4009 end
4010 end
4011
4012 redef fun visit_all(v: Visitor)
4013 do
4014 v.enter_visit(_n_expr)
4015 v.enter_visit(_n_expr2)
4016 end
4017 end
4018 redef class AOrExpr
4019 private init empty_init do end
4020
4021 init init_aorexpr (
4022 n_expr: nullable AExpr,
4023 n_expr2: nullable AExpr
4024 )
4025 do
4026 empty_init
4027 _n_expr = n_expr.as(not null)
4028 n_expr.parent = self
4029 _n_expr2 = n_expr2.as(not null)
4030 n_expr2.parent = self
4031 end
4032
4033 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4034 do
4035 if _n_expr == old_child then
4036 if new_child != null then
4037 new_child.parent = self
4038 assert new_child isa AExpr
4039 _n_expr = new_child
4040 else
4041 abort
4042 end
4043 return
4044 end
4045 if _n_expr2 == old_child then
4046 if new_child != null then
4047 new_child.parent = self
4048 assert new_child isa AExpr
4049 _n_expr2 = new_child
4050 else
4051 abort
4052 end
4053 return
4054 end
4055 end
4056
4057 redef fun visit_all(v: Visitor)
4058 do
4059 v.enter_visit(_n_expr)
4060 v.enter_visit(_n_expr2)
4061 end
4062 end
4063 redef class AAndExpr
4064 private init empty_init do end
4065
4066 init init_aandexpr (
4067 n_expr: nullable AExpr,
4068 n_expr2: nullable AExpr
4069 )
4070 do
4071 empty_init
4072 _n_expr = n_expr.as(not null)
4073 n_expr.parent = self
4074 _n_expr2 = n_expr2.as(not null)
4075 n_expr2.parent = self
4076 end
4077
4078 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4079 do
4080 if _n_expr == old_child then
4081 if new_child != null then
4082 new_child.parent = self
4083 assert new_child isa AExpr
4084 _n_expr = new_child
4085 else
4086 abort
4087 end
4088 return
4089 end
4090 if _n_expr2 == old_child then
4091 if new_child != null then
4092 new_child.parent = self
4093 assert new_child isa AExpr
4094 _n_expr2 = new_child
4095 else
4096 abort
4097 end
4098 return
4099 end
4100 end
4101
4102 redef fun visit_all(v: Visitor)
4103 do
4104 v.enter_visit(_n_expr)
4105 v.enter_visit(_n_expr2)
4106 end
4107 end
4108 redef class ANotExpr
4109 private init empty_init do end
4110
4111 init init_anotexpr (
4112 n_kwnot: nullable TKwnot,
4113 n_expr: nullable AExpr
4114 )
4115 do
4116 empty_init
4117 _n_kwnot = n_kwnot.as(not null)
4118 n_kwnot.parent = self
4119 _n_expr = n_expr.as(not null)
4120 n_expr.parent = self
4121 end
4122
4123 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4124 do
4125 if _n_kwnot == old_child then
4126 if new_child != null then
4127 new_child.parent = self
4128 assert new_child isa TKwnot
4129 _n_kwnot = new_child
4130 else
4131 abort
4132 end
4133 return
4134 end
4135 if _n_expr == old_child then
4136 if new_child != null then
4137 new_child.parent = self
4138 assert new_child isa AExpr
4139 _n_expr = new_child
4140 else
4141 abort
4142 end
4143 return
4144 end
4145 end
4146
4147 redef fun visit_all(v: Visitor)
4148 do
4149 v.enter_visit(_n_kwnot)
4150 v.enter_visit(_n_expr)
4151 end
4152 end
4153 redef class AEqExpr
4154 private init empty_init do end
4155
4156 init init_aeqexpr (
4157 n_expr: nullable AExpr,
4158 n_expr2: nullable AExpr
4159 )
4160 do
4161 empty_init
4162 _n_expr = n_expr.as(not null)
4163 n_expr.parent = self
4164 _n_expr2 = n_expr2.as(not null)
4165 n_expr2.parent = self
4166 end
4167
4168 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4169 do
4170 if _n_expr == old_child then
4171 if new_child != null then
4172 new_child.parent = self
4173 assert new_child isa AExpr
4174 _n_expr = new_child
4175 else
4176 abort
4177 end
4178 return
4179 end
4180 if _n_expr2 == old_child then
4181 if new_child != null then
4182 new_child.parent = self
4183 assert new_child isa AExpr
4184 _n_expr2 = new_child
4185 else
4186 abort
4187 end
4188 return
4189 end
4190 end
4191
4192 redef fun visit_all(v: Visitor)
4193 do
4194 v.enter_visit(_n_expr)
4195 v.enter_visit(_n_expr2)
4196 end
4197 end
4198 redef class AEeExpr
4199 private init empty_init do end
4200
4201 init init_aeeexpr (
4202 n_expr: nullable AExpr,
4203 n_expr2: nullable AExpr
4204 )
4205 do
4206 empty_init
4207 _n_expr = n_expr.as(not null)
4208 n_expr.parent = self
4209 _n_expr2 = n_expr2.as(not null)
4210 n_expr2.parent = self
4211 end
4212
4213 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4214 do
4215 if _n_expr == old_child then
4216 if new_child != null then
4217 new_child.parent = self
4218 assert new_child isa AExpr
4219 _n_expr = new_child
4220 else
4221 abort
4222 end
4223 return
4224 end
4225 if _n_expr2 == old_child then
4226 if new_child != null then
4227 new_child.parent = self
4228 assert new_child isa AExpr
4229 _n_expr2 = new_child
4230 else
4231 abort
4232 end
4233 return
4234 end
4235 end
4236
4237 redef fun visit_all(v: Visitor)
4238 do
4239 v.enter_visit(_n_expr)
4240 v.enter_visit(_n_expr2)
4241 end
4242 end
4243 redef class ANeExpr
4244 private init empty_init do end
4245
4246 init init_aneexpr (
4247 n_expr: nullable AExpr,
4248 n_expr2: nullable AExpr
4249 )
4250 do
4251 empty_init
4252 _n_expr = n_expr.as(not null)
4253 n_expr.parent = self
4254 _n_expr2 = n_expr2.as(not null)
4255 n_expr2.parent = self
4256 end
4257
4258 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4259 do
4260 if _n_expr == old_child then
4261 if new_child != null then
4262 new_child.parent = self
4263 assert new_child isa AExpr
4264 _n_expr = new_child
4265 else
4266 abort
4267 end
4268 return
4269 end
4270 if _n_expr2 == old_child then
4271 if new_child != null then
4272 new_child.parent = self
4273 assert new_child isa AExpr
4274 _n_expr2 = new_child
4275 else
4276 abort
4277 end
4278 return
4279 end
4280 end
4281
4282 redef fun visit_all(v: Visitor)
4283 do
4284 v.enter_visit(_n_expr)
4285 v.enter_visit(_n_expr2)
4286 end
4287 end
4288 redef class ALtExpr
4289 private init empty_init do end
4290
4291 init init_altexpr (
4292 n_expr: nullable AExpr,
4293 n_expr2: nullable AExpr
4294 )
4295 do
4296 empty_init
4297 _n_expr = n_expr.as(not null)
4298 n_expr.parent = self
4299 _n_expr2 = n_expr2.as(not null)
4300 n_expr2.parent = self
4301 end
4302
4303 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4304 do
4305 if _n_expr == old_child then
4306 if new_child != null then
4307 new_child.parent = self
4308 assert new_child isa AExpr
4309 _n_expr = new_child
4310 else
4311 abort
4312 end
4313 return
4314 end
4315 if _n_expr2 == old_child then
4316 if new_child != null then
4317 new_child.parent = self
4318 assert new_child isa AExpr
4319 _n_expr2 = new_child
4320 else
4321 abort
4322 end
4323 return
4324 end
4325 end
4326
4327 redef fun visit_all(v: Visitor)
4328 do
4329 v.enter_visit(_n_expr)
4330 v.enter_visit(_n_expr2)
4331 end
4332 end
4333 redef class ALeExpr
4334 private init empty_init do end
4335
4336 init init_aleexpr (
4337 n_expr: nullable AExpr,
4338 n_expr2: nullable AExpr
4339 )
4340 do
4341 empty_init
4342 _n_expr = n_expr.as(not null)
4343 n_expr.parent = self
4344 _n_expr2 = n_expr2.as(not null)
4345 n_expr2.parent = self
4346 end
4347
4348 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4349 do
4350 if _n_expr == old_child then
4351 if new_child != null then
4352 new_child.parent = self
4353 assert new_child isa AExpr
4354 _n_expr = new_child
4355 else
4356 abort
4357 end
4358 return
4359 end
4360 if _n_expr2 == old_child then
4361 if new_child != null then
4362 new_child.parent = self
4363 assert new_child isa AExpr
4364 _n_expr2 = new_child
4365 else
4366 abort
4367 end
4368 return
4369 end
4370 end
4371
4372 redef fun visit_all(v: Visitor)
4373 do
4374 v.enter_visit(_n_expr)
4375 v.enter_visit(_n_expr2)
4376 end
4377 end
4378 redef class AGtExpr
4379 private init empty_init do end
4380
4381 init init_agtexpr (
4382 n_expr: nullable AExpr,
4383 n_expr2: nullable AExpr
4384 )
4385 do
4386 empty_init
4387 _n_expr = n_expr.as(not null)
4388 n_expr.parent = self
4389 _n_expr2 = n_expr2.as(not null)
4390 n_expr2.parent = self
4391 end
4392
4393 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4394 do
4395 if _n_expr == old_child then
4396 if new_child != null then
4397 new_child.parent = self
4398 assert new_child isa AExpr
4399 _n_expr = new_child
4400 else
4401 abort
4402 end
4403 return
4404 end
4405 if _n_expr2 == old_child then
4406 if new_child != null then
4407 new_child.parent = self
4408 assert new_child isa AExpr
4409 _n_expr2 = new_child
4410 else
4411 abort
4412 end
4413 return
4414 end
4415 end
4416
4417 redef fun visit_all(v: Visitor)
4418 do
4419 v.enter_visit(_n_expr)
4420 v.enter_visit(_n_expr2)
4421 end
4422 end
4423 redef class AGeExpr
4424 private init empty_init do end
4425
4426 init init_ageexpr (
4427 n_expr: nullable AExpr,
4428 n_expr2: nullable AExpr
4429 )
4430 do
4431 empty_init
4432 _n_expr = n_expr.as(not null)
4433 n_expr.parent = self
4434 _n_expr2 = n_expr2.as(not null)
4435 n_expr2.parent = self
4436 end
4437
4438 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4439 do
4440 if _n_expr == old_child then
4441 if new_child != null then
4442 new_child.parent = self
4443 assert new_child isa AExpr
4444 _n_expr = new_child
4445 else
4446 abort
4447 end
4448 return
4449 end
4450 if _n_expr2 == old_child then
4451 if new_child != null then
4452 new_child.parent = self
4453 assert new_child isa AExpr
4454 _n_expr2 = new_child
4455 else
4456 abort
4457 end
4458 return
4459 end
4460 end
4461
4462 redef fun visit_all(v: Visitor)
4463 do
4464 v.enter_visit(_n_expr)
4465 v.enter_visit(_n_expr2)
4466 end
4467 end
4468 redef class AIsaExpr
4469 private init empty_init do end
4470
4471 init init_aisaexpr (
4472 n_expr: nullable AExpr,
4473 n_type: nullable AType
4474 )
4475 do
4476 empty_init
4477 _n_expr = n_expr.as(not null)
4478 n_expr.parent = self
4479 _n_type = n_type.as(not null)
4480 n_type.parent = self
4481 end
4482
4483 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4484 do
4485 if _n_expr == old_child then
4486 if new_child != null then
4487 new_child.parent = self
4488 assert new_child isa AExpr
4489 _n_expr = new_child
4490 else
4491 abort
4492 end
4493 return
4494 end
4495 if _n_type == old_child then
4496 if new_child != null then
4497 new_child.parent = self
4498 assert new_child isa AType
4499 _n_type = new_child
4500 else
4501 abort
4502 end
4503 return
4504 end
4505 end
4506
4507 redef fun visit_all(v: Visitor)
4508 do
4509 v.enter_visit(_n_expr)
4510 v.enter_visit(_n_type)
4511 end
4512 end
4513 redef class APlusExpr
4514 private init empty_init do end
4515
4516 init init_aplusexpr (
4517 n_expr: nullable AExpr,
4518 n_expr2: nullable AExpr
4519 )
4520 do
4521 empty_init
4522 _n_expr = n_expr.as(not null)
4523 n_expr.parent = self
4524 _n_expr2 = n_expr2.as(not null)
4525 n_expr2.parent = self
4526 end
4527
4528 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4529 do
4530 if _n_expr == old_child then
4531 if new_child != null then
4532 new_child.parent = self
4533 assert new_child isa AExpr
4534 _n_expr = new_child
4535 else
4536 abort
4537 end
4538 return
4539 end
4540 if _n_expr2 == old_child then
4541 if new_child != null then
4542 new_child.parent = self
4543 assert new_child isa AExpr
4544 _n_expr2 = new_child
4545 else
4546 abort
4547 end
4548 return
4549 end
4550 end
4551
4552 redef fun visit_all(v: Visitor)
4553 do
4554 v.enter_visit(_n_expr)
4555 v.enter_visit(_n_expr2)
4556 end
4557 end
4558 redef class AMinusExpr
4559 private init empty_init do end
4560
4561 init init_aminusexpr (
4562 n_expr: nullable AExpr,
4563 n_expr2: nullable AExpr
4564 )
4565 do
4566 empty_init
4567 _n_expr = n_expr.as(not null)
4568 n_expr.parent = self
4569 _n_expr2 = n_expr2.as(not null)
4570 n_expr2.parent = self
4571 end
4572
4573 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4574 do
4575 if _n_expr == old_child then
4576 if new_child != null then
4577 new_child.parent = self
4578 assert new_child isa AExpr
4579 _n_expr = new_child
4580 else
4581 abort
4582 end
4583 return
4584 end
4585 if _n_expr2 == old_child then
4586 if new_child != null then
4587 new_child.parent = self
4588 assert new_child isa AExpr
4589 _n_expr2 = new_child
4590 else
4591 abort
4592 end
4593 return
4594 end
4595 end
4596
4597 redef fun visit_all(v: Visitor)
4598 do
4599 v.enter_visit(_n_expr)
4600 v.enter_visit(_n_expr2)
4601 end
4602 end
4603 redef class AStarshipExpr
4604 private init empty_init do end
4605
4606 init init_astarshipexpr (
4607 n_expr: nullable AExpr,
4608 n_expr2: nullable AExpr
4609 )
4610 do
4611 empty_init
4612 _n_expr = n_expr.as(not null)
4613 n_expr.parent = self
4614 _n_expr2 = n_expr2.as(not null)
4615 n_expr2.parent = self
4616 end
4617
4618 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4619 do
4620 if _n_expr == old_child then
4621 if new_child != null then
4622 new_child.parent = self
4623 assert new_child isa AExpr
4624 _n_expr = new_child
4625 else
4626 abort
4627 end
4628 return
4629 end
4630 if _n_expr2 == old_child then
4631 if new_child != null then
4632 new_child.parent = self
4633 assert new_child isa AExpr
4634 _n_expr2 = new_child
4635 else
4636 abort
4637 end
4638 return
4639 end
4640 end
4641
4642 redef fun visit_all(v: Visitor)
4643 do
4644 v.enter_visit(_n_expr)
4645 v.enter_visit(_n_expr2)
4646 end
4647 end
4648 redef class AStarExpr
4649 private init empty_init do end
4650
4651 init init_astarexpr (
4652 n_expr: nullable AExpr,
4653 n_expr2: nullable AExpr
4654 )
4655 do
4656 empty_init
4657 _n_expr = n_expr.as(not null)
4658 n_expr.parent = self
4659 _n_expr2 = n_expr2.as(not null)
4660 n_expr2.parent = self
4661 end
4662
4663 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4664 do
4665 if _n_expr == old_child then
4666 if new_child != null then
4667 new_child.parent = self
4668 assert new_child isa AExpr
4669 _n_expr = new_child
4670 else
4671 abort
4672 end
4673 return
4674 end
4675 if _n_expr2 == old_child then
4676 if new_child != null then
4677 new_child.parent = self
4678 assert new_child isa AExpr
4679 _n_expr2 = new_child
4680 else
4681 abort
4682 end
4683 return
4684 end
4685 end
4686
4687 redef fun visit_all(v: Visitor)
4688 do
4689 v.enter_visit(_n_expr)
4690 v.enter_visit(_n_expr2)
4691 end
4692 end
4693 redef class ASlashExpr
4694 private init empty_init do end
4695
4696 init init_aslashexpr (
4697 n_expr: nullable AExpr,
4698 n_expr2: nullable AExpr
4699 )
4700 do
4701 empty_init
4702 _n_expr = n_expr.as(not null)
4703 n_expr.parent = self
4704 _n_expr2 = n_expr2.as(not null)
4705 n_expr2.parent = self
4706 end
4707
4708 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4709 do
4710 if _n_expr == old_child then
4711 if new_child != null then
4712 new_child.parent = self
4713 assert new_child isa AExpr
4714 _n_expr = new_child
4715 else
4716 abort
4717 end
4718 return
4719 end
4720 if _n_expr2 == old_child then
4721 if new_child != null then
4722 new_child.parent = self
4723 assert new_child isa AExpr
4724 _n_expr2 = new_child
4725 else
4726 abort
4727 end
4728 return
4729 end
4730 end
4731
4732 redef fun visit_all(v: Visitor)
4733 do
4734 v.enter_visit(_n_expr)
4735 v.enter_visit(_n_expr2)
4736 end
4737 end
4738 redef class APercentExpr
4739 private init empty_init do end
4740
4741 init init_apercentexpr (
4742 n_expr: nullable AExpr,
4743 n_expr2: nullable AExpr
4744 )
4745 do
4746 empty_init
4747 _n_expr = n_expr.as(not null)
4748 n_expr.parent = self
4749 _n_expr2 = n_expr2.as(not null)
4750 n_expr2.parent = self
4751 end
4752
4753 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4754 do
4755 if _n_expr == old_child then
4756 if new_child != null then
4757 new_child.parent = self
4758 assert new_child isa AExpr
4759 _n_expr = new_child
4760 else
4761 abort
4762 end
4763 return
4764 end
4765 if _n_expr2 == old_child then
4766 if new_child != null then
4767 new_child.parent = self
4768 assert new_child isa AExpr
4769 _n_expr2 = new_child
4770 else
4771 abort
4772 end
4773 return
4774 end
4775 end
4776
4777 redef fun visit_all(v: Visitor)
4778 do
4779 v.enter_visit(_n_expr)
4780 v.enter_visit(_n_expr2)
4781 end
4782 end
4783 redef class AUminusExpr
4784 private init empty_init do end
4785
4786 init init_auminusexpr (
4787 n_minus: nullable TMinus,
4788 n_expr: nullable AExpr
4789 )
4790 do
4791 empty_init
4792 _n_minus = n_minus.as(not null)
4793 n_minus.parent = self
4794 _n_expr = n_expr.as(not null)
4795 n_expr.parent = self
4796 end
4797
4798 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4799 do
4800 if _n_minus == old_child then
4801 if new_child != null then
4802 new_child.parent = self
4803 assert new_child isa TMinus
4804 _n_minus = new_child
4805 else
4806 abort
4807 end
4808 return
4809 end
4810 if _n_expr == old_child then
4811 if new_child != null then
4812 new_child.parent = self
4813 assert new_child isa AExpr
4814 _n_expr = new_child
4815 else
4816 abort
4817 end
4818 return
4819 end
4820 end
4821
4822 redef fun visit_all(v: Visitor)
4823 do
4824 v.enter_visit(_n_minus)
4825 v.enter_visit(_n_expr)
4826 end
4827 end
4828 redef class ANewExpr
4829 private init empty_init do end
4830
4831 init init_anewexpr (
4832 n_kwnew: nullable TKwnew,
4833 n_type: nullable AType,
4834 n_id: nullable TId,
4835 n_args: Collection[Object] # Should be Collection[AExpr]
4836 )
4837 do
4838 empty_init
4839 _n_kwnew = n_kwnew.as(not null)
4840 n_kwnew.parent = self
4841 _n_type = n_type.as(not null)
4842 n_type.parent = self
4843 _n_id = n_id
4844 if n_id != null then
4845 n_id.parent = self
4846 end
4847 for n in n_args do
4848 assert n isa AExpr
4849 _n_args.add(n)
4850 n.parent = self
4851 end
4852 end
4853
4854 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4855 do
4856 if _n_kwnew == old_child then
4857 if new_child != null then
4858 new_child.parent = self
4859 assert new_child isa TKwnew
4860 _n_kwnew = new_child
4861 else
4862 abort
4863 end
4864 return
4865 end
4866 if _n_type == old_child then
4867 if new_child != null then
4868 new_child.parent = self
4869 assert new_child isa AType
4870 _n_type = new_child
4871 else
4872 abort
4873 end
4874 return
4875 end
4876 if _n_id == old_child then
4877 if new_child != null then
4878 new_child.parent = self
4879 assert new_child isa TId
4880 _n_id = new_child
4881 else
4882 _n_id = null
4883 end
4884 return
4885 end
4886 for i in [0.._n_args.length[ do
4887 if _n_args[i] == old_child then
4888 if new_child != null then
4889 assert new_child isa AExpr
4890 _n_args[i] = new_child
4891 new_child.parent = self
4892 else
4893 _n_args.remove_at(i)
4894 end
4895 return
4896 end
4897 end
4898 end
4899
4900 redef fun visit_all(v: Visitor)
4901 do
4902 v.enter_visit(_n_kwnew)
4903 v.enter_visit(_n_type)
4904 if _n_id != null then
4905 v.enter_visit(_n_id.as(not null))
4906 end
4907 for n in _n_args do
4908 v.enter_visit(n)
4909 end
4910 end
4911 end
4912 redef class AAttrExpr
4913 private init empty_init do end
4914
4915 init init_aattrexpr (
4916 n_expr: nullable AExpr,
4917 n_id: nullable TAttrid
4918 )
4919 do
4920 empty_init
4921 _n_expr = n_expr.as(not null)
4922 n_expr.parent = self
4923 _n_id = n_id.as(not null)
4924 n_id.parent = self
4925 end
4926
4927 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4928 do
4929 if _n_expr == old_child then
4930 if new_child != null then
4931 new_child.parent = self
4932 assert new_child isa AExpr
4933 _n_expr = new_child
4934 else
4935 abort
4936 end
4937 return
4938 end
4939 if _n_id == old_child then
4940 if new_child != null then
4941 new_child.parent = self
4942 assert new_child isa TAttrid
4943 _n_id = new_child
4944 else
4945 abort
4946 end
4947 return
4948 end
4949 end
4950
4951 redef fun visit_all(v: Visitor)
4952 do
4953 v.enter_visit(_n_expr)
4954 v.enter_visit(_n_id)
4955 end
4956 end
4957 redef class AAttrAssignExpr
4958 private init empty_init do end
4959
4960 init init_aattrassignexpr (
4961 n_expr: nullable AExpr,
4962 n_id: nullable TAttrid,
4963 n_assign: nullable TAssign,
4964 n_value: nullable AExpr
4965 )
4966 do
4967 empty_init
4968 _n_expr = n_expr.as(not null)
4969 n_expr.parent = self
4970 _n_id = n_id.as(not null)
4971 n_id.parent = self
4972 _n_assign = n_assign.as(not null)
4973 n_assign.parent = self
4974 _n_value = n_value.as(not null)
4975 n_value.parent = self
4976 end
4977
4978 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
4979 do
4980 if _n_expr == old_child then
4981 if new_child != null then
4982 new_child.parent = self
4983 assert new_child isa AExpr
4984 _n_expr = new_child
4985 else
4986 abort
4987 end
4988 return
4989 end
4990 if _n_id == old_child then
4991 if new_child != null then
4992 new_child.parent = self
4993 assert new_child isa TAttrid
4994 _n_id = new_child
4995 else
4996 abort
4997 end
4998 return
4999 end
5000 if _n_assign == old_child then
5001 if new_child != null then
5002 new_child.parent = self
5003 assert new_child isa TAssign
5004 _n_assign = new_child
5005 else
5006 abort
5007 end
5008 return
5009 end
5010 if _n_value == old_child then
5011 if new_child != null then
5012 new_child.parent = self
5013 assert new_child isa AExpr
5014 _n_value = new_child
5015 else
5016 abort
5017 end
5018 return
5019 end
5020 end
5021
5022 redef fun visit_all(v: Visitor)
5023 do
5024 v.enter_visit(_n_expr)
5025 v.enter_visit(_n_id)
5026 v.enter_visit(_n_assign)
5027 v.enter_visit(_n_value)
5028 end
5029 end
5030 redef class AAttrReassignExpr
5031 private init empty_init do end
5032
5033 init init_aattrreassignexpr (
5034 n_expr: nullable AExpr,
5035 n_id: nullable TAttrid,
5036 n_assign_op: nullable AAssignOp,
5037 n_value: nullable AExpr
5038 )
5039 do
5040 empty_init
5041 _n_expr = n_expr.as(not null)
5042 n_expr.parent = self
5043 _n_id = n_id.as(not null)
5044 n_id.parent = self
5045 _n_assign_op = n_assign_op.as(not null)
5046 n_assign_op.parent = self
5047 _n_value = n_value.as(not null)
5048 n_value.parent = self
5049 end
5050
5051 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5052 do
5053 if _n_expr == old_child then
5054 if new_child != null then
5055 new_child.parent = self
5056 assert new_child isa AExpr
5057 _n_expr = new_child
5058 else
5059 abort
5060 end
5061 return
5062 end
5063 if _n_id == old_child then
5064 if new_child != null then
5065 new_child.parent = self
5066 assert new_child isa TAttrid
5067 _n_id = new_child
5068 else
5069 abort
5070 end
5071 return
5072 end
5073 if _n_assign_op == old_child then
5074 if new_child != null then
5075 new_child.parent = self
5076 assert new_child isa AAssignOp
5077 _n_assign_op = new_child
5078 else
5079 abort
5080 end
5081 return
5082 end
5083 if _n_value == old_child then
5084 if new_child != null then
5085 new_child.parent = self
5086 assert new_child isa AExpr
5087 _n_value = new_child
5088 else
5089 abort
5090 end
5091 return
5092 end
5093 end
5094
5095 redef fun visit_all(v: Visitor)
5096 do
5097 v.enter_visit(_n_expr)
5098 v.enter_visit(_n_id)
5099 v.enter_visit(_n_assign_op)
5100 v.enter_visit(_n_value)
5101 end
5102 end
5103 redef class ACallExpr
5104 private init empty_init do end
5105
5106 init init_acallexpr (
5107 n_expr: nullable AExpr,
5108 n_id: nullable TId,
5109 n_args: Collection[Object], # Should be Collection[AExpr]
5110 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
5111 )
5112 do
5113 empty_init
5114 _n_expr = n_expr.as(not null)
5115 n_expr.parent = self
5116 _n_id = n_id.as(not null)
5117 n_id.parent = self
5118 for n in n_args do
5119 assert n isa AExpr
5120 _n_args.add(n)
5121 n.parent = self
5122 end
5123 for n in n_closure_defs do
5124 assert n isa AClosureDef
5125 _n_closure_defs.add(n)
5126 n.parent = self
5127 end
5128 end
5129
5130 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5131 do
5132 if _n_expr == old_child then
5133 if new_child != null then
5134 new_child.parent = self
5135 assert new_child isa AExpr
5136 _n_expr = new_child
5137 else
5138 abort
5139 end
5140 return
5141 end
5142 if _n_id == old_child then
5143 if new_child != null then
5144 new_child.parent = self
5145 assert new_child isa TId
5146 _n_id = new_child
5147 else
5148 abort
5149 end
5150 return
5151 end
5152 for i in [0.._n_args.length[ do
5153 if _n_args[i] == old_child then
5154 if new_child != null then
5155 assert new_child isa AExpr
5156 _n_args[i] = new_child
5157 new_child.parent = self
5158 else
5159 _n_args.remove_at(i)
5160 end
5161 return
5162 end
5163 end
5164 for i in [0.._n_closure_defs.length[ do
5165 if _n_closure_defs[i] == old_child then
5166 if new_child != null then
5167 assert new_child isa AClosureDef
5168 _n_closure_defs[i] = new_child
5169 new_child.parent = self
5170 else
5171 _n_closure_defs.remove_at(i)
5172 end
5173 return
5174 end
5175 end
5176 end
5177
5178 redef fun visit_all(v: Visitor)
5179 do
5180 v.enter_visit(_n_expr)
5181 v.enter_visit(_n_id)
5182 for n in _n_args do
5183 v.enter_visit(n)
5184 end
5185 for n in _n_closure_defs do
5186 v.enter_visit(n)
5187 end
5188 end
5189 end
5190 redef class ACallAssignExpr
5191 private init empty_init do end
5192
5193 init init_acallassignexpr (
5194 n_expr: nullable AExpr,
5195 n_id: nullable TId,
5196 n_args: Collection[Object], # Should be Collection[AExpr]
5197 n_assign: nullable TAssign,
5198 n_value: nullable AExpr
5199 )
5200 do
5201 empty_init
5202 _n_expr = n_expr.as(not null)
5203 n_expr.parent = self
5204 _n_id = n_id.as(not null)
5205 n_id.parent = self
5206 for n in n_args do
5207 assert n isa AExpr
5208 _n_args.add(n)
5209 n.parent = self
5210 end
5211 _n_assign = n_assign.as(not null)
5212 n_assign.parent = self
5213 _n_value = n_value.as(not null)
5214 n_value.parent = self
5215 end
5216
5217 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5218 do
5219 if _n_expr == old_child then
5220 if new_child != null then
5221 new_child.parent = self
5222 assert new_child isa AExpr
5223 _n_expr = new_child
5224 else
5225 abort
5226 end
5227 return
5228 end
5229 if _n_id == old_child then
5230 if new_child != null then
5231 new_child.parent = self
5232 assert new_child isa TId
5233 _n_id = new_child
5234 else
5235 abort
5236 end
5237 return
5238 end
5239 for i in [0.._n_args.length[ do
5240 if _n_args[i] == old_child then
5241 if new_child != null then
5242 assert new_child isa AExpr
5243 _n_args[i] = new_child
5244 new_child.parent = self
5245 else
5246 _n_args.remove_at(i)
5247 end
5248 return
5249 end
5250 end
5251 if _n_assign == old_child then
5252 if new_child != null then
5253 new_child.parent = self
5254 assert new_child isa TAssign
5255 _n_assign = new_child
5256 else
5257 abort
5258 end
5259 return
5260 end
5261 if _n_value == old_child then
5262 if new_child != null then
5263 new_child.parent = self
5264 assert new_child isa AExpr
5265 _n_value = new_child
5266 else
5267 abort
5268 end
5269 return
5270 end
5271 end
5272
5273 redef fun visit_all(v: Visitor)
5274 do
5275 v.enter_visit(_n_expr)
5276 v.enter_visit(_n_id)
5277 for n in _n_args do
5278 v.enter_visit(n)
5279 end
5280 v.enter_visit(_n_assign)
5281 v.enter_visit(_n_value)
5282 end
5283 end
5284 redef class ACallReassignExpr
5285 private init empty_init do end
5286
5287 init init_acallreassignexpr (
5288 n_expr: nullable AExpr,
5289 n_id: nullable TId,
5290 n_args: Collection[Object], # Should be Collection[AExpr]
5291 n_assign_op: nullable AAssignOp,
5292 n_value: nullable AExpr
5293 )
5294 do
5295 empty_init
5296 _n_expr = n_expr.as(not null)
5297 n_expr.parent = self
5298 _n_id = n_id.as(not null)
5299 n_id.parent = self
5300 for n in n_args do
5301 assert n isa AExpr
5302 _n_args.add(n)
5303 n.parent = self
5304 end
5305 _n_assign_op = n_assign_op.as(not null)
5306 n_assign_op.parent = self
5307 _n_value = n_value.as(not null)
5308 n_value.parent = self
5309 end
5310
5311 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5312 do
5313 if _n_expr == old_child then
5314 if new_child != null then
5315 new_child.parent = self
5316 assert new_child isa AExpr
5317 _n_expr = 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 for i in [0.._n_args.length[ do
5334 if _n_args[i] == old_child then
5335 if new_child != null then
5336 assert new_child isa AExpr
5337 _n_args[i] = new_child
5338 new_child.parent = self
5339 else
5340 _n_args.remove_at(i)
5341 end
5342 return
5343 end
5344 end
5345 if _n_assign_op == old_child then
5346 if new_child != null then
5347 new_child.parent = self
5348 assert new_child isa AAssignOp
5349 _n_assign_op = new_child
5350 else
5351 abort
5352 end
5353 return
5354 end
5355 if _n_value == old_child then
5356 if new_child != null then
5357 new_child.parent = self
5358 assert new_child isa AExpr
5359 _n_value = new_child
5360 else
5361 abort
5362 end
5363 return
5364 end
5365 end
5366
5367 redef fun visit_all(v: Visitor)
5368 do
5369 v.enter_visit(_n_expr)
5370 v.enter_visit(_n_id)
5371 for n in _n_args do
5372 v.enter_visit(n)
5373 end
5374 v.enter_visit(_n_assign_op)
5375 v.enter_visit(_n_value)
5376 end
5377 end
5378 redef class ASuperExpr
5379 private init empty_init do end
5380
5381 init init_asuperexpr (
5382 n_qualified: nullable AQualified,
5383 n_kwsuper: nullable TKwsuper,
5384 n_args: Collection[Object] # Should be Collection[AExpr]
5385 )
5386 do
5387 empty_init
5388 _n_qualified = n_qualified
5389 if n_qualified != null then
5390 n_qualified.parent = self
5391 end
5392 _n_kwsuper = n_kwsuper.as(not null)
5393 n_kwsuper.parent = self
5394 for n in n_args do
5395 assert n isa AExpr
5396 _n_args.add(n)
5397 n.parent = self
5398 end
5399 end
5400
5401 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5402 do
5403 if _n_qualified == old_child then
5404 if new_child != null then
5405 new_child.parent = self
5406 assert new_child isa AQualified
5407 _n_qualified = new_child
5408 else
5409 _n_qualified = null
5410 end
5411 return
5412 end
5413 if _n_kwsuper == old_child then
5414 if new_child != null then
5415 new_child.parent = self
5416 assert new_child isa TKwsuper
5417 _n_kwsuper = new_child
5418 else
5419 abort
5420 end
5421 return
5422 end
5423 for i in [0.._n_args.length[ do
5424 if _n_args[i] == old_child then
5425 if new_child != null then
5426 assert new_child isa AExpr
5427 _n_args[i] = new_child
5428 new_child.parent = self
5429 else
5430 _n_args.remove_at(i)
5431 end
5432 return
5433 end
5434 end
5435 end
5436
5437 redef fun visit_all(v: Visitor)
5438 do
5439 if _n_qualified != null then
5440 v.enter_visit(_n_qualified.as(not null))
5441 end
5442 v.enter_visit(_n_kwsuper)
5443 for n in _n_args do
5444 v.enter_visit(n)
5445 end
5446 end
5447 end
5448 redef class AInitExpr
5449 private init empty_init do end
5450
5451 init init_ainitexpr (
5452 n_expr: nullable AExpr,
5453 n_kwinit: nullable TKwinit,
5454 n_args: Collection[Object] # Should be Collection[AExpr]
5455 )
5456 do
5457 empty_init
5458 _n_expr = n_expr.as(not null)
5459 n_expr.parent = self
5460 _n_kwinit = n_kwinit.as(not null)
5461 n_kwinit.parent = self
5462 for n in n_args do
5463 assert n isa AExpr
5464 _n_args.add(n)
5465 n.parent = self
5466 end
5467 end
5468
5469 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5470 do
5471 if _n_expr == old_child then
5472 if new_child != null then
5473 new_child.parent = self
5474 assert new_child isa AExpr
5475 _n_expr = new_child
5476 else
5477 abort
5478 end
5479 return
5480 end
5481 if _n_kwinit == old_child then
5482 if new_child != null then
5483 new_child.parent = self
5484 assert new_child isa TKwinit
5485 _n_kwinit = new_child
5486 else
5487 abort
5488 end
5489 return
5490 end
5491 for i in [0.._n_args.length[ do
5492 if _n_args[i] == old_child then
5493 if new_child != null then
5494 assert new_child isa AExpr
5495 _n_args[i] = new_child
5496 new_child.parent = self
5497 else
5498 _n_args.remove_at(i)
5499 end
5500 return
5501 end
5502 end
5503 end
5504
5505 redef fun visit_all(v: Visitor)
5506 do
5507 v.enter_visit(_n_expr)
5508 v.enter_visit(_n_kwinit)
5509 for n in _n_args do
5510 v.enter_visit(n)
5511 end
5512 end
5513 end
5514 redef class ABraExpr
5515 private init empty_init do end
5516
5517 init init_abraexpr (
5518 n_expr: nullable AExpr,
5519 n_args: Collection[Object], # Should be Collection[AExpr]
5520 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
5521 )
5522 do
5523 empty_init
5524 _n_expr = n_expr.as(not null)
5525 n_expr.parent = self
5526 for n in n_args do
5527 assert n isa AExpr
5528 _n_args.add(n)
5529 n.parent = self
5530 end
5531 for n in n_closure_defs do
5532 assert n isa AClosureDef
5533 _n_closure_defs.add(n)
5534 n.parent = self
5535 end
5536 end
5537
5538 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5539 do
5540 if _n_expr == old_child then
5541 if new_child != null then
5542 new_child.parent = self
5543 assert new_child isa AExpr
5544 _n_expr = new_child
5545 else
5546 abort
5547 end
5548 return
5549 end
5550 for i in [0.._n_args.length[ do
5551 if _n_args[i] == old_child then
5552 if new_child != null then
5553 assert new_child isa AExpr
5554 _n_args[i] = new_child
5555 new_child.parent = self
5556 else
5557 _n_args.remove_at(i)
5558 end
5559 return
5560 end
5561 end
5562 for i in [0.._n_closure_defs.length[ do
5563 if _n_closure_defs[i] == old_child then
5564 if new_child != null then
5565 assert new_child isa AClosureDef
5566 _n_closure_defs[i] = new_child
5567 new_child.parent = self
5568 else
5569 _n_closure_defs.remove_at(i)
5570 end
5571 return
5572 end
5573 end
5574 end
5575
5576 redef fun visit_all(v: Visitor)
5577 do
5578 v.enter_visit(_n_expr)
5579 for n in _n_args do
5580 v.enter_visit(n)
5581 end
5582 for n in _n_closure_defs do
5583 v.enter_visit(n)
5584 end
5585 end
5586 end
5587 redef class ABraAssignExpr
5588 private init empty_init do end
5589
5590 init init_abraassignexpr (
5591 n_expr: nullable AExpr,
5592 n_args: Collection[Object], # Should be Collection[AExpr]
5593 n_assign: nullable TAssign,
5594 n_value: nullable AExpr
5595 )
5596 do
5597 empty_init
5598 _n_expr = n_expr.as(not null)
5599 n_expr.parent = self
5600 for n in n_args do
5601 assert n isa AExpr
5602 _n_args.add(n)
5603 n.parent = self
5604 end
5605 _n_assign = n_assign.as(not null)
5606 n_assign.parent = self
5607 _n_value = n_value.as(not null)
5608 n_value.parent = self
5609 end
5610
5611 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5612 do
5613 if _n_expr == old_child then
5614 if new_child != null then
5615 new_child.parent = self
5616 assert new_child isa AExpr
5617 _n_expr = new_child
5618 else
5619 abort
5620 end
5621 return
5622 end
5623 for i in [0.._n_args.length[ do
5624 if _n_args[i] == old_child then
5625 if new_child != null then
5626 assert new_child isa AExpr
5627 _n_args[i] = new_child
5628 new_child.parent = self
5629 else
5630 _n_args.remove_at(i)
5631 end
5632 return
5633 end
5634 end
5635 if _n_assign == old_child then
5636 if new_child != null then
5637 new_child.parent = self
5638 assert new_child isa TAssign
5639 _n_assign = new_child
5640 else
5641 abort
5642 end
5643 return
5644 end
5645 if _n_value == old_child then
5646 if new_child != null then
5647 new_child.parent = self
5648 assert new_child isa AExpr
5649 _n_value = new_child
5650 else
5651 abort
5652 end
5653 return
5654 end
5655 end
5656
5657 redef fun visit_all(v: Visitor)
5658 do
5659 v.enter_visit(_n_expr)
5660 for n in _n_args do
5661 v.enter_visit(n)
5662 end
5663 v.enter_visit(_n_assign)
5664 v.enter_visit(_n_value)
5665 end
5666 end
5667 redef class ABraReassignExpr
5668 private init empty_init do end
5669
5670 init init_abrareassignexpr (
5671 n_expr: nullable AExpr,
5672 n_args: Collection[Object], # Should be Collection[AExpr]
5673 n_assign_op: nullable AAssignOp,
5674 n_value: nullable AExpr
5675 )
5676 do
5677 empty_init
5678 _n_expr = n_expr.as(not null)
5679 n_expr.parent = self
5680 for n in n_args do
5681 assert n isa AExpr
5682 _n_args.add(n)
5683 n.parent = self
5684 end
5685 _n_assign_op = n_assign_op.as(not null)
5686 n_assign_op.parent = self
5687 _n_value = n_value.as(not null)
5688 n_value.parent = self
5689 end
5690
5691 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5692 do
5693 if _n_expr == old_child then
5694 if new_child != null then
5695 new_child.parent = self
5696 assert new_child isa AExpr
5697 _n_expr = new_child
5698 else
5699 abort
5700 end
5701 return
5702 end
5703 for i in [0.._n_args.length[ do
5704 if _n_args[i] == old_child then
5705 if new_child != null then
5706 assert new_child isa AExpr
5707 _n_args[i] = new_child
5708 new_child.parent = self
5709 else
5710 _n_args.remove_at(i)
5711 end
5712 return
5713 end
5714 end
5715 if _n_assign_op == old_child then
5716 if new_child != null then
5717 new_child.parent = self
5718 assert new_child isa AAssignOp
5719 _n_assign_op = new_child
5720 else
5721 abort
5722 end
5723 return
5724 end
5725 if _n_value == old_child then
5726 if new_child != null then
5727 new_child.parent = self
5728 assert new_child isa AExpr
5729 _n_value = 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 for n in _n_args do
5741 v.enter_visit(n)
5742 end
5743 v.enter_visit(_n_assign_op)
5744 v.enter_visit(_n_value)
5745 end
5746 end
5747 redef class AClosureCallExpr
5748 private init empty_init do end
5749
5750 init init_aclosurecallexpr (
5751 n_id: nullable TId,
5752 n_args: Collection[Object], # Should be Collection[AExpr]
5753 n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
5754 )
5755 do
5756 empty_init
5757 _n_id = n_id.as(not null)
5758 n_id.parent = self
5759 for n in n_args do
5760 assert n isa AExpr
5761 _n_args.add(n)
5762 n.parent = self
5763 end
5764 for n in n_closure_defs do
5765 assert n isa AClosureDef
5766 _n_closure_defs.add(n)
5767 n.parent = self
5768 end
5769 end
5770
5771 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5772 do
5773 if _n_id == old_child then
5774 if new_child != null then
5775 new_child.parent = self
5776 assert new_child isa TId
5777 _n_id = new_child
5778 else
5779 abort
5780 end
5781 return
5782 end
5783 for i in [0.._n_args.length[ do
5784 if _n_args[i] == old_child then
5785 if new_child != null then
5786 assert new_child isa AExpr
5787 _n_args[i] = new_child
5788 new_child.parent = self
5789 else
5790 _n_args.remove_at(i)
5791 end
5792 return
5793 end
5794 end
5795 for i in [0.._n_closure_defs.length[ do
5796 if _n_closure_defs[i] == old_child then
5797 if new_child != null then
5798 assert new_child isa AClosureDef
5799 _n_closure_defs[i] = new_child
5800 new_child.parent = self
5801 else
5802 _n_closure_defs.remove_at(i)
5803 end
5804 return
5805 end
5806 end
5807 end
5808
5809 redef fun visit_all(v: Visitor)
5810 do
5811 v.enter_visit(_n_id)
5812 for n in _n_args do
5813 v.enter_visit(n)
5814 end
5815 for n in _n_closure_defs do
5816 v.enter_visit(n)
5817 end
5818 end
5819 end
5820 redef class AVarExpr
5821 private init empty_init do end
5822
5823 init init_avarexpr (
5824 n_id: nullable TId
5825 )
5826 do
5827 empty_init
5828 _n_id = n_id.as(not null)
5829 n_id.parent = self
5830 end
5831
5832 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5833 do
5834 if _n_id == old_child then
5835 if new_child != null then
5836 new_child.parent = self
5837 assert new_child isa TId
5838 _n_id = new_child
5839 else
5840 abort
5841 end
5842 return
5843 end
5844 end
5845
5846 redef fun visit_all(v: Visitor)
5847 do
5848 v.enter_visit(_n_id)
5849 end
5850 end
5851 redef class AVarAssignExpr
5852 private init empty_init do end
5853
5854 init init_avarassignexpr (
5855 n_id: nullable TId,
5856 n_assign: nullable TAssign,
5857 n_value: nullable AExpr
5858 )
5859 do
5860 empty_init
5861 _n_id = n_id.as(not null)
5862 n_id.parent = self
5863 _n_assign = n_assign.as(not null)
5864 n_assign.parent = self
5865 _n_value = n_value.as(not null)
5866 n_value.parent = self
5867 end
5868
5869 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5870 do
5871 if _n_id == old_child then
5872 if new_child != null then
5873 new_child.parent = self
5874 assert new_child isa TId
5875 _n_id = new_child
5876 else
5877 abort
5878 end
5879 return
5880 end
5881 if _n_assign == old_child then
5882 if new_child != null then
5883 new_child.parent = self
5884 assert new_child isa TAssign
5885 _n_assign = new_child
5886 else
5887 abort
5888 end
5889 return
5890 end
5891 if _n_value == old_child then
5892 if new_child != null then
5893 new_child.parent = self
5894 assert new_child isa AExpr
5895 _n_value = new_child
5896 else
5897 abort
5898 end
5899 return
5900 end
5901 end
5902
5903 redef fun visit_all(v: Visitor)
5904 do
5905 v.enter_visit(_n_id)
5906 v.enter_visit(_n_assign)
5907 v.enter_visit(_n_value)
5908 end
5909 end
5910 redef class AVarReassignExpr
5911 private init empty_init do end
5912
5913 init init_avarreassignexpr (
5914 n_id: nullable TId,
5915 n_assign_op: nullable AAssignOp,
5916 n_value: nullable AExpr
5917 )
5918 do
5919 empty_init
5920 _n_id = n_id.as(not null)
5921 n_id.parent = self
5922 _n_assign_op = n_assign_op.as(not null)
5923 n_assign_op.parent = self
5924 _n_value = n_value.as(not null)
5925 n_value.parent = self
5926 end
5927
5928 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5929 do
5930 if _n_id == old_child then
5931 if new_child != null then
5932 new_child.parent = self
5933 assert new_child isa TId
5934 _n_id = new_child
5935 else
5936 abort
5937 end
5938 return
5939 end
5940 if _n_assign_op == old_child then
5941 if new_child != null then
5942 new_child.parent = self
5943 assert new_child isa AAssignOp
5944 _n_assign_op = new_child
5945 else
5946 abort
5947 end
5948 return
5949 end
5950 if _n_value == old_child then
5951 if new_child != null then
5952 new_child.parent = self
5953 assert new_child isa AExpr
5954 _n_value = new_child
5955 else
5956 abort
5957 end
5958 return
5959 end
5960 end
5961
5962 redef fun visit_all(v: Visitor)
5963 do
5964 v.enter_visit(_n_id)
5965 v.enter_visit(_n_assign_op)
5966 v.enter_visit(_n_value)
5967 end
5968 end
5969 redef class ARangeExpr
5970 private init empty_init do end
5971
5972 init init_arangeexpr (
5973 n_expr: nullable AExpr,
5974 n_expr2: nullable AExpr
5975 )
5976 do
5977 empty_init
5978 _n_expr = n_expr.as(not null)
5979 n_expr.parent = self
5980 _n_expr2 = n_expr2.as(not null)
5981 n_expr2.parent = self
5982 end
5983
5984 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
5985 do
5986 if _n_expr == old_child then
5987 if new_child != null then
5988 new_child.parent = self
5989 assert new_child isa AExpr
5990 _n_expr = new_child
5991 else
5992 abort
5993 end
5994 return
5995 end
5996 if _n_expr2 == old_child then
5997 if new_child != null then
5998 new_child.parent = self
5999 assert new_child isa AExpr
6000 _n_expr2 = new_child
6001 else
6002 abort
6003 end
6004 return
6005 end
6006 end
6007
6008 redef fun visit_all(v: Visitor)
6009 do
6010 v.enter_visit(_n_expr)
6011 v.enter_visit(_n_expr2)
6012 end
6013 end
6014 redef class ACrangeExpr
6015 private init empty_init do end
6016
6017 init init_acrangeexpr (
6018 n_expr: nullable AExpr,
6019 n_expr2: nullable AExpr
6020 )
6021 do
6022 empty_init
6023 _n_expr = n_expr.as(not null)
6024 n_expr.parent = self
6025 _n_expr2 = n_expr2.as(not null)
6026 n_expr2.parent = self
6027 end
6028
6029 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6030 do
6031 if _n_expr == old_child then
6032 if new_child != null then
6033 new_child.parent = self
6034 assert new_child isa AExpr
6035 _n_expr = new_child
6036 else
6037 abort
6038 end
6039 return
6040 end
6041 if _n_expr2 == old_child then
6042 if new_child != null then
6043 new_child.parent = self
6044 assert new_child isa AExpr
6045 _n_expr2 = new_child
6046 else
6047 abort
6048 end
6049 return
6050 end
6051 end
6052
6053 redef fun visit_all(v: Visitor)
6054 do
6055 v.enter_visit(_n_expr)
6056 v.enter_visit(_n_expr2)
6057 end
6058 end
6059 redef class AOrangeExpr
6060 private init empty_init do end
6061
6062 init init_aorangeexpr (
6063 n_expr: nullable AExpr,
6064 n_expr2: nullable AExpr
6065 )
6066 do
6067 empty_init
6068 _n_expr = n_expr.as(not null)
6069 n_expr.parent = self
6070 _n_expr2 = n_expr2.as(not null)
6071 n_expr2.parent = self
6072 end
6073
6074 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6075 do
6076 if _n_expr == old_child then
6077 if new_child != null then
6078 new_child.parent = self
6079 assert new_child isa AExpr
6080 _n_expr = new_child
6081 else
6082 abort
6083 end
6084 return
6085 end
6086 if _n_expr2 == old_child then
6087 if new_child != null then
6088 new_child.parent = self
6089 assert new_child isa AExpr
6090 _n_expr2 = new_child
6091 else
6092 abort
6093 end
6094 return
6095 end
6096 end
6097
6098 redef fun visit_all(v: Visitor)
6099 do
6100 v.enter_visit(_n_expr)
6101 v.enter_visit(_n_expr2)
6102 end
6103 end
6104 redef class AArrayExpr
6105 private init empty_init do end
6106
6107 init init_aarrayexpr (
6108 n_exprs: Collection[Object] # Should be Collection[AExpr]
6109 )
6110 do
6111 empty_init
6112 for n in n_exprs do
6113 assert n isa AExpr
6114 _n_exprs.add(n)
6115 n.parent = self
6116 end
6117 end
6118
6119 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6120 do
6121 for i in [0.._n_exprs.length[ do
6122 if _n_exprs[i] == old_child then
6123 if new_child != null then
6124 assert new_child isa AExpr
6125 _n_exprs[i] = new_child
6126 new_child.parent = self
6127 else
6128 _n_exprs.remove_at(i)
6129 end
6130 return
6131 end
6132 end
6133 end
6134
6135 redef fun visit_all(v: Visitor)
6136 do
6137 for n in _n_exprs do
6138 v.enter_visit(n)
6139 end
6140 end
6141 end
6142 redef class ASelfExpr
6143 private init empty_init do end
6144
6145 init init_aselfexpr (
6146 n_kwself: nullable TKwself
6147 )
6148 do
6149 empty_init
6150 _n_kwself = n_kwself.as(not null)
6151 n_kwself.parent = self
6152 end
6153
6154 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6155 do
6156 if _n_kwself == old_child then
6157 if new_child != null then
6158 new_child.parent = self
6159 assert new_child isa TKwself
6160 _n_kwself = new_child
6161 else
6162 abort
6163 end
6164 return
6165 end
6166 end
6167
6168 redef fun visit_all(v: Visitor)
6169 do
6170 v.enter_visit(_n_kwself)
6171 end
6172 end
6173 redef class AImplicitSelfExpr
6174 private init empty_init do end
6175
6176 init init_aimplicitselfexpr
6177 do
6178 empty_init
6179 end
6180
6181 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6182 do
6183 end
6184
6185 redef fun visit_all(v: Visitor)
6186 do
6187 end
6188 end
6189 redef class ATrueExpr
6190 private init empty_init do end
6191
6192 init init_atrueexpr (
6193 n_kwtrue: nullable TKwtrue
6194 )
6195 do
6196 empty_init
6197 _n_kwtrue = n_kwtrue.as(not null)
6198 n_kwtrue.parent = self
6199 end
6200
6201 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6202 do
6203 if _n_kwtrue == old_child then
6204 if new_child != null then
6205 new_child.parent = self
6206 assert new_child isa TKwtrue
6207 _n_kwtrue = new_child
6208 else
6209 abort
6210 end
6211 return
6212 end
6213 end
6214
6215 redef fun visit_all(v: Visitor)
6216 do
6217 v.enter_visit(_n_kwtrue)
6218 end
6219 end
6220 redef class AFalseExpr
6221 private init empty_init do end
6222
6223 init init_afalseexpr (
6224 n_kwfalse: nullable TKwfalse
6225 )
6226 do
6227 empty_init
6228 _n_kwfalse = n_kwfalse.as(not null)
6229 n_kwfalse.parent = self
6230 end
6231
6232 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6233 do
6234 if _n_kwfalse == old_child then
6235 if new_child != null then
6236 new_child.parent = self
6237 assert new_child isa TKwfalse
6238 _n_kwfalse = new_child
6239 else
6240 abort
6241 end
6242 return
6243 end
6244 end
6245
6246 redef fun visit_all(v: Visitor)
6247 do
6248 v.enter_visit(_n_kwfalse)
6249 end
6250 end
6251 redef class ANullExpr
6252 private init empty_init do end
6253
6254 init init_anullexpr (
6255 n_kwnull: nullable TKwnull
6256 )
6257 do
6258 empty_init
6259 _n_kwnull = n_kwnull.as(not null)
6260 n_kwnull.parent = self
6261 end
6262
6263 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6264 do
6265 if _n_kwnull == old_child then
6266 if new_child != null then
6267 new_child.parent = self
6268 assert new_child isa TKwnull
6269 _n_kwnull = new_child
6270 else
6271 abort
6272 end
6273 return
6274 end
6275 end
6276
6277 redef fun visit_all(v: Visitor)
6278 do
6279 v.enter_visit(_n_kwnull)
6280 end
6281 end
6282 redef class AIntExpr
6283 private init empty_init do end
6284
6285 init init_aintexpr (
6286 n_number: nullable TNumber
6287 )
6288 do
6289 empty_init
6290 _n_number = n_number.as(not null)
6291 n_number.parent = self
6292 end
6293
6294 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6295 do
6296 if _n_number == old_child then
6297 if new_child != null then
6298 new_child.parent = self
6299 assert new_child isa TNumber
6300 _n_number = new_child
6301 else
6302 abort
6303 end
6304 return
6305 end
6306 end
6307
6308 redef fun visit_all(v: Visitor)
6309 do
6310 v.enter_visit(_n_number)
6311 end
6312 end
6313 redef class AFloatExpr
6314 private init empty_init do end
6315
6316 init init_afloatexpr (
6317 n_float: nullable TFloat
6318 )
6319 do
6320 empty_init
6321 _n_float = n_float.as(not null)
6322 n_float.parent = self
6323 end
6324
6325 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6326 do
6327 if _n_float == old_child then
6328 if new_child != null then
6329 new_child.parent = self
6330 assert new_child isa TFloat
6331 _n_float = new_child
6332 else
6333 abort
6334 end
6335 return
6336 end
6337 end
6338
6339 redef fun visit_all(v: Visitor)
6340 do
6341 v.enter_visit(_n_float)
6342 end
6343 end
6344 redef class ACharExpr
6345 private init empty_init do end
6346
6347 init init_acharexpr (
6348 n_char: nullable TChar
6349 )
6350 do
6351 empty_init
6352 _n_char = n_char.as(not null)
6353 n_char.parent = self
6354 end
6355
6356 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6357 do
6358 if _n_char == old_child then
6359 if new_child != null then
6360 new_child.parent = self
6361 assert new_child isa TChar
6362 _n_char = new_child
6363 else
6364 abort
6365 end
6366 return
6367 end
6368 end
6369
6370 redef fun visit_all(v: Visitor)
6371 do
6372 v.enter_visit(_n_char)
6373 end
6374 end
6375 redef class AStringExpr
6376 private init empty_init do end
6377
6378 init init_astringexpr (
6379 n_string: nullable TString
6380 )
6381 do
6382 empty_init
6383 _n_string = n_string.as(not null)
6384 n_string.parent = self
6385 end
6386
6387 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6388 do
6389 if _n_string == old_child then
6390 if new_child != null then
6391 new_child.parent = self
6392 assert new_child isa TString
6393 _n_string = new_child
6394 else
6395 abort
6396 end
6397 return
6398 end
6399 end
6400
6401 redef fun visit_all(v: Visitor)
6402 do
6403 v.enter_visit(_n_string)
6404 end
6405 end
6406 redef class AStartStringExpr
6407 private init empty_init do end
6408
6409 init init_astartstringexpr (
6410 n_string: nullable TStartString
6411 )
6412 do
6413 empty_init
6414 _n_string = n_string.as(not null)
6415 n_string.parent = self
6416 end
6417
6418 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6419 do
6420 if _n_string == old_child then
6421 if new_child != null then
6422 new_child.parent = self
6423 assert new_child isa TStartString
6424 _n_string = new_child
6425 else
6426 abort
6427 end
6428 return
6429 end
6430 end
6431
6432 redef fun visit_all(v: Visitor)
6433 do
6434 v.enter_visit(_n_string)
6435 end
6436 end
6437 redef class AMidStringExpr
6438 private init empty_init do end
6439
6440 init init_amidstringexpr (
6441 n_string: nullable TMidString
6442 )
6443 do
6444 empty_init
6445 _n_string = n_string.as(not null)
6446 n_string.parent = self
6447 end
6448
6449 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6450 do
6451 if _n_string == old_child then
6452 if new_child != null then
6453 new_child.parent = self
6454 assert new_child isa TMidString
6455 _n_string = new_child
6456 else
6457 abort
6458 end
6459 return
6460 end
6461 end
6462
6463 redef fun visit_all(v: Visitor)
6464 do
6465 v.enter_visit(_n_string)
6466 end
6467 end
6468 redef class AEndStringExpr
6469 private init empty_init do end
6470
6471 init init_aendstringexpr (
6472 n_string: nullable TEndString
6473 )
6474 do
6475 empty_init
6476 _n_string = n_string.as(not null)
6477 n_string.parent = self
6478 end
6479
6480 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6481 do
6482 if _n_string == old_child then
6483 if new_child != null then
6484 new_child.parent = self
6485 assert new_child isa TEndString
6486 _n_string = new_child
6487 else
6488 abort
6489 end
6490 return
6491 end
6492 end
6493
6494 redef fun visit_all(v: Visitor)
6495 do
6496 v.enter_visit(_n_string)
6497 end
6498 end
6499 redef class ASuperstringExpr
6500 private init empty_init do end
6501
6502 init init_asuperstringexpr (
6503 n_exprs: Collection[Object] # Should be Collection[AExpr]
6504 )
6505 do
6506 empty_init
6507 for n in n_exprs do
6508 assert n isa AExpr
6509 _n_exprs.add(n)
6510 n.parent = self
6511 end
6512 end
6513
6514 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6515 do
6516 for i in [0.._n_exprs.length[ do
6517 if _n_exprs[i] == old_child then
6518 if new_child != null then
6519 assert new_child isa AExpr
6520 _n_exprs[i] = new_child
6521 new_child.parent = self
6522 else
6523 _n_exprs.remove_at(i)
6524 end
6525 return
6526 end
6527 end
6528 end
6529
6530 redef fun visit_all(v: Visitor)
6531 do
6532 for n in _n_exprs do
6533 v.enter_visit(n)
6534 end
6535 end
6536 end
6537 redef class AParExpr
6538 private init empty_init do end
6539
6540 init init_aparexpr (
6541 n_expr: nullable AExpr
6542 )
6543 do
6544 empty_init
6545 _n_expr = n_expr.as(not null)
6546 n_expr.parent = self
6547 end
6548
6549 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6550 do
6551 if _n_expr == old_child then
6552 if new_child != null then
6553 new_child.parent = self
6554 assert new_child isa AExpr
6555 _n_expr = new_child
6556 else
6557 abort
6558 end
6559 return
6560 end
6561 end
6562
6563 redef fun visit_all(v: Visitor)
6564 do
6565 v.enter_visit(_n_expr)
6566 end
6567 end
6568 redef class AAsCastExpr
6569 private init empty_init do end
6570
6571 init init_aascastexpr (
6572 n_expr: nullable AExpr,
6573 n_kwas: nullable TKwas,
6574 n_type: nullable AType
6575 )
6576 do
6577 empty_init
6578 _n_expr = n_expr.as(not null)
6579 n_expr.parent = self
6580 _n_kwas = n_kwas.as(not null)
6581 n_kwas.parent = self
6582 _n_type = n_type.as(not null)
6583 n_type.parent = self
6584 end
6585
6586 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6587 do
6588 if _n_expr == old_child then
6589 if new_child != null then
6590 new_child.parent = self
6591 assert new_child isa AExpr
6592 _n_expr = new_child
6593 else
6594 abort
6595 end
6596 return
6597 end
6598 if _n_kwas == old_child then
6599 if new_child != null then
6600 new_child.parent = self
6601 assert new_child isa TKwas
6602 _n_kwas = new_child
6603 else
6604 abort
6605 end
6606 return
6607 end
6608 if _n_type == old_child then
6609 if new_child != null then
6610 new_child.parent = self
6611 assert new_child isa AType
6612 _n_type = new_child
6613 else
6614 abort
6615 end
6616 return
6617 end
6618 end
6619
6620 redef fun visit_all(v: Visitor)
6621 do
6622 v.enter_visit(_n_expr)
6623 v.enter_visit(_n_kwas)
6624 v.enter_visit(_n_type)
6625 end
6626 end
6627 redef class AAsNotnullExpr
6628 private init empty_init do end
6629
6630 init init_aasnotnullexpr (
6631 n_expr: nullable AExpr,
6632 n_kwas: nullable TKwas,
6633 n_kwnot: nullable TKwnot,
6634 n_kwnull: nullable TKwnull
6635 )
6636 do
6637 empty_init
6638 _n_expr = n_expr.as(not null)
6639 n_expr.parent = self
6640 _n_kwas = n_kwas.as(not null)
6641 n_kwas.parent = self
6642 _n_kwnot = n_kwnot.as(not null)
6643 n_kwnot.parent = self
6644 _n_kwnull = n_kwnull.as(not null)
6645 n_kwnull.parent = self
6646 end
6647
6648 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6649 do
6650 if _n_expr == old_child then
6651 if new_child != null then
6652 new_child.parent = self
6653 assert new_child isa AExpr
6654 _n_expr = new_child
6655 else
6656 abort
6657 end
6658 return
6659 end
6660 if _n_kwas == old_child then
6661 if new_child != null then
6662 new_child.parent = self
6663 assert new_child isa TKwas
6664 _n_kwas = new_child
6665 else
6666 abort
6667 end
6668 return
6669 end
6670 if _n_kwnot == old_child then
6671 if new_child != null then
6672 new_child.parent = self
6673 assert new_child isa TKwnot
6674 _n_kwnot = new_child
6675 else
6676 abort
6677 end
6678 return
6679 end
6680 if _n_kwnull == old_child then
6681 if new_child != null then
6682 new_child.parent = self
6683 assert new_child isa TKwnull
6684 _n_kwnull = new_child
6685 else
6686 abort
6687 end
6688 return
6689 end
6690 end
6691
6692 redef fun visit_all(v: Visitor)
6693 do
6694 v.enter_visit(_n_expr)
6695 v.enter_visit(_n_kwas)
6696 v.enter_visit(_n_kwnot)
6697 v.enter_visit(_n_kwnull)
6698 end
6699 end
6700 redef class AIssetAttrExpr
6701 private init empty_init do end
6702
6703 init init_aissetattrexpr (
6704 n_kwisset: nullable TKwisset,
6705 n_expr: nullable AExpr,
6706 n_id: nullable TAttrid
6707 )
6708 do
6709 empty_init
6710 _n_kwisset = n_kwisset.as(not null)
6711 n_kwisset.parent = self
6712 _n_expr = n_expr.as(not null)
6713 n_expr.parent = self
6714 _n_id = n_id.as(not null)
6715 n_id.parent = self
6716 end
6717
6718 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6719 do
6720 if _n_kwisset == old_child then
6721 if new_child != null then
6722 new_child.parent = self
6723 assert new_child isa TKwisset
6724 _n_kwisset = new_child
6725 else
6726 abort
6727 end
6728 return
6729 end
6730 if _n_expr == old_child then
6731 if new_child != null then
6732 new_child.parent = self
6733 assert new_child isa AExpr
6734 _n_expr = new_child
6735 else
6736 abort
6737 end
6738 return
6739 end
6740 if _n_id == old_child then
6741 if new_child != null then
6742 new_child.parent = self
6743 assert new_child isa TAttrid
6744 _n_id = new_child
6745 else
6746 abort
6747 end
6748 return
6749 end
6750 end
6751
6752 redef fun visit_all(v: Visitor)
6753 do
6754 v.enter_visit(_n_kwisset)
6755 v.enter_visit(_n_expr)
6756 v.enter_visit(_n_id)
6757 end
6758 end
6759 redef class APlusAssignOp
6760 private init empty_init do end
6761
6762 init init_aplusassignop (
6763 n_pluseq: nullable TPluseq
6764 )
6765 do
6766 empty_init
6767 _n_pluseq = n_pluseq.as(not null)
6768 n_pluseq.parent = self
6769 end
6770
6771 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6772 do
6773 if _n_pluseq == old_child then
6774 if new_child != null then
6775 new_child.parent = self
6776 assert new_child isa TPluseq
6777 _n_pluseq = new_child
6778 else
6779 abort
6780 end
6781 return
6782 end
6783 end
6784
6785 redef fun visit_all(v: Visitor)
6786 do
6787 v.enter_visit(_n_pluseq)
6788 end
6789 end
6790 redef class AMinusAssignOp
6791 private init empty_init do end
6792
6793 init init_aminusassignop (
6794 n_minuseq: nullable TMinuseq
6795 )
6796 do
6797 empty_init
6798 _n_minuseq = n_minuseq.as(not null)
6799 n_minuseq.parent = self
6800 end
6801
6802 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6803 do
6804 if _n_minuseq == old_child then
6805 if new_child != null then
6806 new_child.parent = self
6807 assert new_child isa TMinuseq
6808 _n_minuseq = new_child
6809 else
6810 abort
6811 end
6812 return
6813 end
6814 end
6815
6816 redef fun visit_all(v: Visitor)
6817 do
6818 v.enter_visit(_n_minuseq)
6819 end
6820 end
6821 redef class AClosureDef
6822 private init empty_init do end
6823
6824 init init_aclosuredef (
6825 n_bang: nullable TBang,
6826 n_id: nullable AClosureId,
6827 n_ids: Collection[Object], # Should be Collection[TId]
6828 n_kwdo: nullable TKwdo,
6829 n_expr: nullable AExpr,
6830 n_label: nullable ALabel
6831 )
6832 do
6833 empty_init
6834 _n_bang = n_bang.as(not null)
6835 n_bang.parent = self
6836 _n_id = n_id.as(not null)
6837 n_id.parent = self
6838 for n in n_ids do
6839 assert n isa TId
6840 _n_ids.add(n)
6841 n.parent = self
6842 end
6843 _n_kwdo = n_kwdo
6844 if n_kwdo != null then
6845 n_kwdo.parent = self
6846 end
6847 _n_expr = n_expr
6848 if n_expr != null then
6849 n_expr.parent = self
6850 end
6851 _n_label = n_label
6852 if n_label != null then
6853 n_label.parent = self
6854 end
6855 end
6856
6857 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6858 do
6859 if _n_bang == old_child then
6860 if new_child != null then
6861 new_child.parent = self
6862 assert new_child isa TBang
6863 _n_bang = 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 AClosureId
6873 _n_id = new_child
6874 else
6875 abort
6876 end
6877 return
6878 end
6879 for i in [0.._n_ids.length[ do
6880 if _n_ids[i] == old_child then
6881 if new_child != null then
6882 assert new_child isa TId
6883 _n_ids[i] = new_child
6884 new_child.parent = self
6885 else
6886 _n_ids.remove_at(i)
6887 end
6888 return
6889 end
6890 end
6891 if _n_kwdo == old_child then
6892 if new_child != null then
6893 new_child.parent = self
6894 assert new_child isa TKwdo
6895 _n_kwdo = new_child
6896 else
6897 _n_kwdo = null
6898 end
6899 return
6900 end
6901 if _n_expr == old_child then
6902 if new_child != null then
6903 new_child.parent = self
6904 assert new_child isa AExpr
6905 _n_expr = new_child
6906 else
6907 _n_expr = null
6908 end
6909 return
6910 end
6911 if _n_label == old_child then
6912 if new_child != null then
6913 new_child.parent = self
6914 assert new_child isa ALabel
6915 _n_label = new_child
6916 else
6917 _n_label = null
6918 end
6919 return
6920 end
6921 end
6922
6923 redef fun visit_all(v: Visitor)
6924 do
6925 v.enter_visit(_n_bang)
6926 v.enter_visit(_n_id)
6927 for n in _n_ids do
6928 v.enter_visit(n)
6929 end
6930 if _n_kwdo != null then
6931 v.enter_visit(_n_kwdo.as(not null))
6932 end
6933 if _n_expr != null then
6934 v.enter_visit(_n_expr.as(not null))
6935 end
6936 if _n_label != null then
6937 v.enter_visit(_n_label.as(not null))
6938 end
6939 end
6940 end
6941 redef class ASimpleClosureId
6942 private init empty_init do end
6943
6944 init init_asimpleclosureid (
6945 n_id: nullable TId
6946 )
6947 do
6948 empty_init
6949 _n_id = n_id.as(not null)
6950 n_id.parent = self
6951 end
6952
6953 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6954 do
6955 if _n_id == old_child then
6956 if new_child != null then
6957 new_child.parent = self
6958 assert new_child isa TId
6959 _n_id = new_child
6960 else
6961 abort
6962 end
6963 return
6964 end
6965 end
6966
6967 redef fun visit_all(v: Visitor)
6968 do
6969 v.enter_visit(_n_id)
6970 end
6971 end
6972 redef class ABreakClosureId
6973 private init empty_init do end
6974
6975 init init_abreakclosureid (
6976 n_kwbreak: nullable TKwbreak
6977 )
6978 do
6979 empty_init
6980 _n_kwbreak = n_kwbreak.as(not null)
6981 n_kwbreak.parent = self
6982 end
6983
6984 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
6985 do
6986 if _n_kwbreak == old_child then
6987 if new_child != null then
6988 new_child.parent = self
6989 assert new_child isa TKwbreak
6990 _n_kwbreak = new_child
6991 else
6992 abort
6993 end
6994 return
6995 end
6996 end
6997
6998 redef fun visit_all(v: Visitor)
6999 do
7000 v.enter_visit(_n_kwbreak)
7001 end
7002 end
7003 redef class AQualified
7004 private init empty_init do end
7005
7006 init init_aqualified (
7007 n_id: Collection[Object], # Should be Collection[TId]
7008 n_classid: nullable TClassid
7009 )
7010 do
7011 empty_init
7012 for n in n_id do
7013 assert n isa TId
7014 _n_id.add(n)
7015 n.parent = self
7016 end
7017 _n_classid = n_classid
7018 if n_classid != null then
7019 n_classid.parent = self
7020 end
7021 end
7022
7023 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7024 do
7025 for i in [0.._n_id.length[ do
7026 if _n_id[i] == old_child then
7027 if new_child != null then
7028 assert new_child isa TId
7029 _n_id[i] = new_child
7030 new_child.parent = self
7031 else
7032 _n_id.remove_at(i)
7033 end
7034 return
7035 end
7036 end
7037 if _n_classid == old_child then
7038 if new_child != null then
7039 new_child.parent = self
7040 assert new_child isa TClassid
7041 _n_classid = new_child
7042 else
7043 _n_classid = null
7044 end
7045 return
7046 end
7047 end
7048
7049 redef fun visit_all(v: Visitor)
7050 do
7051 for n in _n_id do
7052 v.enter_visit(n)
7053 end
7054 if _n_classid != null then
7055 v.enter_visit(_n_classid.as(not null))
7056 end
7057 end
7058 end
7059 redef class ADoc
7060 private init empty_init do end
7061
7062 init init_adoc (
7063 n_comment: Collection[Object] # Should be Collection[TComment]
7064 )
7065 do
7066 empty_init
7067 for n in n_comment do
7068 assert n isa TComment
7069 _n_comment.add(n)
7070 n.parent = self
7071 end
7072 end
7073
7074 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7075 do
7076 for i in [0.._n_comment.length[ do
7077 if _n_comment[i] == old_child then
7078 if new_child != null then
7079 assert new_child isa TComment
7080 _n_comment[i] = new_child
7081 new_child.parent = self
7082 else
7083 _n_comment.remove_at(i)
7084 end
7085 return
7086 end
7087 end
7088 end
7089
7090 redef fun visit_all(v: Visitor)
7091 do
7092 for n in _n_comment do
7093 v.enter_visit(n)
7094 end
7095 end
7096 end
7097
7098 redef class Start
7099 init(
7100 n_base: nullable AModule,
7101 n_eof: EOF)
7102 do
7103 _n_base = n_base
7104 _n_eof = n_eof
7105 end
7106
7107 redef fun replace_child(old_child: ANode, new_child: nullable ANode)
7108 do
7109 if _n_base == old_child then
7110 if new_child == null then
7111 else
7112 new_child.parent = self
7113 assert new_child isa AModule
7114 _n_base = new_child
7115 end
7116 old_child.parent = null
7117 return
7118 end
7119 end
7120
7121 redef fun visit_all(v: Visitor)
7122 do
7123 if _n_base != null then
7124 v.enter_visit(_n_base.as(not null))
7125 end
7126 v.enter_visit(_n_eof)
7127 end
7128 end