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