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