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