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