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