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