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