tools: cleanup after insertion of 'Location' class
[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 PNode
9 # Parent of the node in the AST
10 readable writable var _parent: nullable PNode
11
12 # Remove a child from the AST
13 fun remove_child(child: PNode)
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: PNode, new_child: nullable PNode) is abstract
20
21 # Replace itself with an other node in the AST
22 fun replace_with(node: PNode)
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
33 # Visit all nodes in reverse order.
34 # Thus, call "v.visit(e)" for each node e starting from the last child
35 fun visit_all_reverse(v: Visitor) is abstract
36
37 # Give a human readable location of the node.
38 fun locate: String
39 do
40 if location == null then
41 return "????"
42 end
43 return location.to_s
44 end
45
46 # Debug method: output a message prefixed with the location.
47 fun printl(str: String)
48 do
49 print("{locate}: {str}\n")
50 end
51 end
52
53 redef class Token
54 redef fun visit_all(v: Visitor) do end
55 redef fun visit_all_reverse(v: Visitor) do end
56 redef fun replace_child(old_child: PNode, new_child: nullable PNode) do end
57 end
58
59 redef class Prod
60 # The first token of the production node
61 readable writable var _first_token: nullable Token
62
63 # The last token of the production node
64 readable writable var _last_token: nullable Token
65
66 redef fun replace_with(n: PNode)
67 do
68 super
69 assert n isa Prod
70 n.first_token = first_token
71 n.last_token = last_token
72 n.location = location
73 end
74 end
75
76 # Abstract standard visitor
77 class Visitor
78 # Ask the visitor to visit a given node.
79 # Usually automatically called by visit_all* methods.
80 # Concrete visitors should redefine this method.
81 fun visit(e: nullable PNode) is abstract
82 end
83
84 redef class AModule
85 redef fun n_packagedecl=(n)
86 do
87 _n_packagedecl = n
88 if n != null then
89 n.parent = self
90 end
91 end
92
93 private init empty_init do end
94
95 init init_amodule (
96 n_packagedecl: nullable PPackagedecl ,
97 n_imports: Collection[Object] , # Should be Collection[PImport]
98 n_classdefs: Collection[Object] # Should be Collection[PClassdef]
99 )
100 do
101 empty_init
102 _n_packagedecl = n_packagedecl
103 if n_packagedecl != null then
104 n_packagedecl.parent = self
105 end
106 for n in n_imports do
107 assert n isa PImport
108 _n_imports.add(n)
109 n.parent = self
110 end
111 for n in n_classdefs do
112 assert n isa PClassdef
113 _n_classdefs.add(n)
114 n.parent = self
115 end
116 end
117
118 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
119 do
120 if _n_packagedecl == old_child then
121 if new_child != null then
122 new_child.parent = self
123 assert new_child isa PPackagedecl
124 _n_packagedecl = new_child
125 else
126 _n_packagedecl = null
127 end
128 return
129 end
130 for i in [0.._n_imports.length[ do
131 if _n_imports[i] == old_child then
132 if new_child != null then
133 assert new_child isa PImport
134 _n_imports[i] = new_child
135 new_child.parent = self
136 else
137 _n_imports.remove_at(i)
138 end
139 return
140 end
141 end
142 for i in [0.._n_classdefs.length[ do
143 if _n_classdefs[i] == old_child then
144 if new_child != null then
145 assert new_child isa PClassdef
146 _n_classdefs[i] = new_child
147 new_child.parent = self
148 else
149 _n_classdefs.remove_at(i)
150 end
151 return
152 end
153 end
154 end
155
156 redef fun visit_all(v: Visitor)
157 do
158 if _n_packagedecl != null then
159 v.visit(_n_packagedecl.as(not null))
160 end
161 for n in _n_imports do
162 v.visit(n)
163 end
164 for n in _n_classdefs do
165 v.visit(n)
166 end
167 end
168
169 redef fun visit_all_reverse(v: Visitor)
170 do
171 if _n_packagedecl != null then
172 v.visit(_n_packagedecl.as(not null))
173 end
174 do
175 var i = _n_imports.length
176 while i >= 0 do
177 v.visit(_n_imports[i])
178 i = i - 1
179 end
180 end
181 do
182 var i = _n_classdefs.length
183 while i >= 0 do
184 v.visit(_n_classdefs[i])
185 i = i - 1
186 end
187 end
188 end
189 end
190 redef class APackagedecl
191 redef fun n_doc=(n)
192 do
193 _n_doc = n
194 if n != null then
195 n.parent = self
196 end
197 end
198 redef fun n_kwpackage=(n)
199 do
200 _n_kwpackage = n
201 n.parent = self
202 end
203 redef fun n_id=(n)
204 do
205 _n_id = n
206 n.parent = self
207 end
208
209 private init empty_init do end
210
211 init init_apackagedecl (
212 n_doc: nullable PDoc ,
213 n_kwpackage: nullable TKwpackage ,
214 n_id: nullable TId
215 )
216 do
217 empty_init
218 _n_doc = n_doc
219 if n_doc != null then
220 n_doc.parent = self
221 end
222 _n_kwpackage = n_kwpackage.as(not null)
223 n_kwpackage.parent = self
224 _n_id = n_id.as(not null)
225 n_id.parent = self
226 end
227
228 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
229 do
230 if _n_doc == old_child then
231 if new_child != null then
232 new_child.parent = self
233 assert new_child isa PDoc
234 _n_doc = new_child
235 else
236 _n_doc = null
237 end
238 return
239 end
240 if _n_kwpackage == old_child then
241 if new_child != null then
242 new_child.parent = self
243 assert new_child isa TKwpackage
244 _n_kwpackage = new_child
245 else
246 abort
247 end
248 return
249 end
250 if _n_id == old_child then
251 if new_child != null then
252 new_child.parent = self
253 assert new_child isa TId
254 _n_id = new_child
255 else
256 abort
257 end
258 return
259 end
260 end
261
262 redef fun visit_all(v: Visitor)
263 do
264 if _n_doc != null then
265 v.visit(_n_doc.as(not null))
266 end
267 v.visit(_n_kwpackage)
268 v.visit(_n_id)
269 end
270
271 redef fun visit_all_reverse(v: Visitor)
272 do
273 if _n_doc != null then
274 v.visit(_n_doc.as(not null))
275 end
276 v.visit(_n_kwpackage)
277 v.visit(_n_id)
278 end
279 end
280 redef class AImport
281 redef fun n_visibility=(n)
282 do
283 _n_visibility = n
284 n.parent = self
285 end
286 redef fun n_kwimport=(n)
287 do
288 _n_kwimport = n
289 n.parent = self
290 end
291 redef fun n_id=(n)
292 do
293 _n_id = n
294 n.parent = self
295 end
296
297 private init empty_init do end
298
299 init init_aimport (
300 n_visibility: nullable PVisibility ,
301 n_kwimport: nullable TKwimport ,
302 n_id: nullable TId
303 )
304 do
305 empty_init
306 _n_visibility = n_visibility.as(not null)
307 n_visibility.parent = self
308 _n_kwimport = n_kwimport.as(not null)
309 n_kwimport.parent = self
310 _n_id = n_id.as(not null)
311 n_id.parent = self
312 end
313
314 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
315 do
316 if _n_visibility == old_child then
317 if new_child != null then
318 new_child.parent = self
319 assert new_child isa PVisibility
320 _n_visibility = new_child
321 else
322 abort
323 end
324 return
325 end
326 if _n_kwimport == old_child then
327 if new_child != null then
328 new_child.parent = self
329 assert new_child isa TKwimport
330 _n_kwimport = new_child
331 else
332 abort
333 end
334 return
335 end
336 if _n_id == old_child then
337 if new_child != null then
338 new_child.parent = self
339 assert new_child isa TId
340 _n_id = new_child
341 else
342 abort
343 end
344 return
345 end
346 end
347
348 redef fun visit_all(v: Visitor)
349 do
350 v.visit(_n_visibility)
351 v.visit(_n_kwimport)
352 v.visit(_n_id)
353 end
354
355 redef fun visit_all_reverse(v: Visitor)
356 do
357 v.visit(_n_visibility)
358 v.visit(_n_kwimport)
359 v.visit(_n_id)
360 end
361 end
362 redef class ANoImport
363 redef fun n_visibility=(n)
364 do
365 _n_visibility = n
366 n.parent = self
367 end
368 redef fun n_kwimport=(n)
369 do
370 _n_kwimport = n
371 n.parent = self
372 end
373 redef fun n_kwend=(n)
374 do
375 _n_kwend = n
376 n.parent = self
377 end
378
379 private init empty_init do end
380
381 init init_anoimport (
382 n_visibility: nullable PVisibility ,
383 n_kwimport: nullable TKwimport ,
384 n_kwend: nullable TKwend
385 )
386 do
387 empty_init
388 _n_visibility = n_visibility.as(not null)
389 n_visibility.parent = self
390 _n_kwimport = n_kwimport.as(not null)
391 n_kwimport.parent = self
392 _n_kwend = n_kwend.as(not null)
393 n_kwend.parent = self
394 end
395
396 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
397 do
398 if _n_visibility == old_child then
399 if new_child != null then
400 new_child.parent = self
401 assert new_child isa PVisibility
402 _n_visibility = new_child
403 else
404 abort
405 end
406 return
407 end
408 if _n_kwimport == old_child then
409 if new_child != null then
410 new_child.parent = self
411 assert new_child isa TKwimport
412 _n_kwimport = new_child
413 else
414 abort
415 end
416 return
417 end
418 if _n_kwend == old_child then
419 if new_child != null then
420 new_child.parent = self
421 assert new_child isa TKwend
422 _n_kwend = new_child
423 else
424 abort
425 end
426 return
427 end
428 end
429
430 redef fun visit_all(v: Visitor)
431 do
432 v.visit(_n_visibility)
433 v.visit(_n_kwimport)
434 v.visit(_n_kwend)
435 end
436
437 redef fun visit_all_reverse(v: Visitor)
438 do
439 v.visit(_n_visibility)
440 v.visit(_n_kwimport)
441 v.visit(_n_kwend)
442 end
443 end
444 redef class APublicVisibility
445
446 private init empty_init do end
447
448 init init_apublicvisibility
449 do
450 empty_init
451 end
452
453 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
454 do
455 end
456
457 redef fun visit_all(v: Visitor)
458 do
459 end
460
461 redef fun visit_all_reverse(v: Visitor)
462 do
463 end
464 end
465 redef class APrivateVisibility
466 redef fun n_kwprivate=(n)
467 do
468 _n_kwprivate = n
469 n.parent = self
470 end
471
472 private init empty_init do end
473
474 init init_aprivatevisibility (
475 n_kwprivate: nullable TKwprivate
476 )
477 do
478 empty_init
479 _n_kwprivate = n_kwprivate.as(not null)
480 n_kwprivate.parent = self
481 end
482
483 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
484 do
485 if _n_kwprivate == old_child then
486 if new_child != null then
487 new_child.parent = self
488 assert new_child isa TKwprivate
489 _n_kwprivate = new_child
490 else
491 abort
492 end
493 return
494 end
495 end
496
497 redef fun visit_all(v: Visitor)
498 do
499 v.visit(_n_kwprivate)
500 end
501
502 redef fun visit_all_reverse(v: Visitor)
503 do
504 v.visit(_n_kwprivate)
505 end
506 end
507 redef class AProtectedVisibility
508 redef fun n_kwprotected=(n)
509 do
510 _n_kwprotected = n
511 n.parent = self
512 end
513
514 private init empty_init do end
515
516 init init_aprotectedvisibility (
517 n_kwprotected: nullable TKwprotected
518 )
519 do
520 empty_init
521 _n_kwprotected = n_kwprotected.as(not null)
522 n_kwprotected.parent = self
523 end
524
525 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
526 do
527 if _n_kwprotected == old_child then
528 if new_child != null then
529 new_child.parent = self
530 assert new_child isa TKwprotected
531 _n_kwprotected = new_child
532 else
533 abort
534 end
535 return
536 end
537 end
538
539 redef fun visit_all(v: Visitor)
540 do
541 v.visit(_n_kwprotected)
542 end
543
544 redef fun visit_all_reverse(v: Visitor)
545 do
546 v.visit(_n_kwprotected)
547 end
548 end
549 redef class AIntrudeVisibility
550 redef fun n_kwintrude=(n)
551 do
552 _n_kwintrude = n
553 n.parent = self
554 end
555
556 private init empty_init do end
557
558 init init_aintrudevisibility (
559 n_kwintrude: nullable TKwintrude
560 )
561 do
562 empty_init
563 _n_kwintrude = n_kwintrude.as(not null)
564 n_kwintrude.parent = self
565 end
566
567 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
568 do
569 if _n_kwintrude == old_child then
570 if new_child != null then
571 new_child.parent = self
572 assert new_child isa TKwintrude
573 _n_kwintrude = new_child
574 else
575 abort
576 end
577 return
578 end
579 end
580
581 redef fun visit_all(v: Visitor)
582 do
583 v.visit(_n_kwintrude)
584 end
585
586 redef fun visit_all_reverse(v: Visitor)
587 do
588 v.visit(_n_kwintrude)
589 end
590 end
591 redef class AClassdef
592 redef fun n_doc=(n)
593 do
594 _n_doc = n
595 if n != null then
596 n.parent = self
597 end
598 end
599 redef fun n_kwredef=(n)
600 do
601 _n_kwredef = n
602 if n != null then
603 n.parent = self
604 end
605 end
606 redef fun n_visibility=(n)
607 do
608 _n_visibility = n
609 n.parent = self
610 end
611 redef fun n_classkind=(n)
612 do
613 _n_classkind = n
614 n.parent = self
615 end
616 redef fun n_id=(n)
617 do
618 _n_id = n
619 if n != null then
620 n.parent = self
621 end
622 end
623
624 private init empty_init do end
625
626 init init_aclassdef (
627 n_doc: nullable PDoc ,
628 n_kwredef: nullable TKwredef ,
629 n_visibility: nullable PVisibility ,
630 n_classkind: nullable PClasskind ,
631 n_id: nullable TClassid ,
632 n_formaldefs: Collection[Object] , # Should be Collection[PFormaldef]
633 n_superclasses: Collection[Object] , # Should be Collection[PSuperclass]
634 n_propdefs: Collection[Object] # Should be Collection[PPropdef]
635 )
636 do
637 empty_init
638 _n_doc = n_doc
639 if n_doc != null then
640 n_doc.parent = self
641 end
642 _n_kwredef = n_kwredef
643 if n_kwredef != null then
644 n_kwredef.parent = self
645 end
646 _n_visibility = n_visibility.as(not null)
647 n_visibility.parent = self
648 _n_classkind = n_classkind.as(not null)
649 n_classkind.parent = self
650 _n_id = n_id
651 if n_id != null then
652 n_id.parent = self
653 end
654 for n in n_formaldefs do
655 assert n isa PFormaldef
656 _n_formaldefs.add(n)
657 n.parent = self
658 end
659 for n in n_superclasses do
660 assert n isa PSuperclass
661 _n_superclasses.add(n)
662 n.parent = self
663 end
664 for n in n_propdefs do
665 assert n isa PPropdef
666 _n_propdefs.add(n)
667 n.parent = self
668 end
669 end
670
671 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
672 do
673 if _n_doc == old_child then
674 if new_child != null then
675 new_child.parent = self
676 assert new_child isa PDoc
677 _n_doc = new_child
678 else
679 _n_doc = null
680 end
681 return
682 end
683 if _n_kwredef == old_child then
684 if new_child != null then
685 new_child.parent = self
686 assert new_child isa TKwredef
687 _n_kwredef = new_child
688 else
689 _n_kwredef = null
690 end
691 return
692 end
693 if _n_visibility == old_child then
694 if new_child != null then
695 new_child.parent = self
696 assert new_child isa PVisibility
697 _n_visibility = new_child
698 else
699 abort
700 end
701 return
702 end
703 if _n_classkind == old_child then
704 if new_child != null then
705 new_child.parent = self
706 assert new_child isa PClasskind
707 _n_classkind = new_child
708 else
709 abort
710 end
711 return
712 end
713 if _n_id == old_child then
714 if new_child != null then
715 new_child.parent = self
716 assert new_child isa TClassid
717 _n_id = new_child
718 else
719 _n_id = null
720 end
721 return
722 end
723 for i in [0.._n_formaldefs.length[ do
724 if _n_formaldefs[i] == old_child then
725 if new_child != null then
726 assert new_child isa PFormaldef
727 _n_formaldefs[i] = new_child
728 new_child.parent = self
729 else
730 _n_formaldefs.remove_at(i)
731 end
732 return
733 end
734 end
735 for i in [0.._n_superclasses.length[ do
736 if _n_superclasses[i] == old_child then
737 if new_child != null then
738 assert new_child isa PSuperclass
739 _n_superclasses[i] = new_child
740 new_child.parent = self
741 else
742 _n_superclasses.remove_at(i)
743 end
744 return
745 end
746 end
747 for i in [0.._n_propdefs.length[ do
748 if _n_propdefs[i] == old_child then
749 if new_child != null then
750 assert new_child isa PPropdef
751 _n_propdefs[i] = new_child
752 new_child.parent = self
753 else
754 _n_propdefs.remove_at(i)
755 end
756 return
757 end
758 end
759 end
760
761 redef fun visit_all(v: Visitor)
762 do
763 if _n_doc != null then
764 v.visit(_n_doc.as(not null))
765 end
766 if _n_kwredef != null then
767 v.visit(_n_kwredef.as(not null))
768 end
769 v.visit(_n_visibility)
770 v.visit(_n_classkind)
771 if _n_id != null then
772 v.visit(_n_id.as(not null))
773 end
774 for n in _n_formaldefs do
775 v.visit(n)
776 end
777 for n in _n_superclasses do
778 v.visit(n)
779 end
780 for n in _n_propdefs do
781 v.visit(n)
782 end
783 end
784
785 redef fun visit_all_reverse(v: Visitor)
786 do
787 if _n_doc != null then
788 v.visit(_n_doc.as(not null))
789 end
790 if _n_kwredef != null then
791 v.visit(_n_kwredef.as(not null))
792 end
793 v.visit(_n_visibility)
794 v.visit(_n_classkind)
795 if _n_id != null then
796 v.visit(_n_id.as(not null))
797 end
798 do
799 var i = _n_formaldefs.length
800 while i >= 0 do
801 v.visit(_n_formaldefs[i])
802 i = i - 1
803 end
804 end
805 do
806 var i = _n_superclasses.length
807 while i >= 0 do
808 v.visit(_n_superclasses[i])
809 i = i - 1
810 end
811 end
812 do
813 var i = _n_propdefs.length
814 while i >= 0 do
815 v.visit(_n_propdefs[i])
816 i = i - 1
817 end
818 end
819 end
820 end
821 redef class ATopClassdef
822
823 private init empty_init do end
824
825 init init_atopclassdef (
826 n_propdefs: Collection[Object] # Should be Collection[PPropdef]
827 )
828 do
829 empty_init
830 for n in n_propdefs do
831 assert n isa PPropdef
832 _n_propdefs.add(n)
833 n.parent = self
834 end
835 end
836
837 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
838 do
839 for i in [0.._n_propdefs.length[ do
840 if _n_propdefs[i] == old_child then
841 if new_child != null then
842 assert new_child isa PPropdef
843 _n_propdefs[i] = new_child
844 new_child.parent = self
845 else
846 _n_propdefs.remove_at(i)
847 end
848 return
849 end
850 end
851 end
852
853 redef fun visit_all(v: Visitor)
854 do
855 for n in _n_propdefs do
856 v.visit(n)
857 end
858 end
859
860 redef fun visit_all_reverse(v: Visitor)
861 do
862 do
863 var i = _n_propdefs.length
864 while i >= 0 do
865 v.visit(_n_propdefs[i])
866 i = i - 1
867 end
868 end
869 end
870 end
871 redef class AMainClassdef
872
873 private init empty_init do end
874
875 init init_amainclassdef (
876 n_propdefs: Collection[Object] # Should be Collection[PPropdef]
877 )
878 do
879 empty_init
880 for n in n_propdefs do
881 assert n isa PPropdef
882 _n_propdefs.add(n)
883 n.parent = self
884 end
885 end
886
887 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
888 do
889 for i in [0.._n_propdefs.length[ do
890 if _n_propdefs[i] == old_child then
891 if new_child != null then
892 assert new_child isa PPropdef
893 _n_propdefs[i] = new_child
894 new_child.parent = self
895 else
896 _n_propdefs.remove_at(i)
897 end
898 return
899 end
900 end
901 end
902
903 redef fun visit_all(v: Visitor)
904 do
905 for n in _n_propdefs do
906 v.visit(n)
907 end
908 end
909
910 redef fun visit_all_reverse(v: Visitor)
911 do
912 do
913 var i = _n_propdefs.length
914 while i >= 0 do
915 v.visit(_n_propdefs[i])
916 i = i - 1
917 end
918 end
919 end
920 end
921 redef class AConcreteClasskind
922 redef fun n_kwclass=(n)
923 do
924 _n_kwclass = n
925 n.parent = self
926 end
927
928 private init empty_init do end
929
930 init init_aconcreteclasskind (
931 n_kwclass: nullable TKwclass
932 )
933 do
934 empty_init
935 _n_kwclass = n_kwclass.as(not null)
936 n_kwclass.parent = self
937 end
938
939 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
940 do
941 if _n_kwclass == old_child then
942 if new_child != null then
943 new_child.parent = self
944 assert new_child isa TKwclass
945 _n_kwclass = new_child
946 else
947 abort
948 end
949 return
950 end
951 end
952
953 redef fun visit_all(v: Visitor)
954 do
955 v.visit(_n_kwclass)
956 end
957
958 redef fun visit_all_reverse(v: Visitor)
959 do
960 v.visit(_n_kwclass)
961 end
962 end
963 redef class AAbstractClasskind
964 redef fun n_kwabstract=(n)
965 do
966 _n_kwabstract = n
967 n.parent = self
968 end
969 redef fun n_kwclass=(n)
970 do
971 _n_kwclass = n
972 n.parent = self
973 end
974
975 private init empty_init do end
976
977 init init_aabstractclasskind (
978 n_kwabstract: nullable TKwabstract ,
979 n_kwclass: nullable TKwclass
980 )
981 do
982 empty_init
983 _n_kwabstract = n_kwabstract.as(not null)
984 n_kwabstract.parent = self
985 _n_kwclass = n_kwclass.as(not null)
986 n_kwclass.parent = self
987 end
988
989 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
990 do
991 if _n_kwabstract == old_child then
992 if new_child != null then
993 new_child.parent = self
994 assert new_child isa TKwabstract
995 _n_kwabstract = new_child
996 else
997 abort
998 end
999 return
1000 end
1001 if _n_kwclass == old_child then
1002 if new_child != null then
1003 new_child.parent = self
1004 assert new_child isa TKwclass
1005 _n_kwclass = new_child
1006 else
1007 abort
1008 end
1009 return
1010 end
1011 end
1012
1013 redef fun visit_all(v: Visitor)
1014 do
1015 v.visit(_n_kwabstract)
1016 v.visit(_n_kwclass)
1017 end
1018
1019 redef fun visit_all_reverse(v: Visitor)
1020 do
1021 v.visit(_n_kwabstract)
1022 v.visit(_n_kwclass)
1023 end
1024 end
1025 redef class AInterfaceClasskind
1026 redef fun n_kwinterface=(n)
1027 do
1028 _n_kwinterface = n
1029 n.parent = self
1030 end
1031
1032 private init empty_init do end
1033
1034 init init_ainterfaceclasskind (
1035 n_kwinterface: nullable TKwinterface
1036 )
1037 do
1038 empty_init
1039 _n_kwinterface = n_kwinterface.as(not null)
1040 n_kwinterface.parent = self
1041 end
1042
1043 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1044 do
1045 if _n_kwinterface == old_child then
1046 if new_child != null then
1047 new_child.parent = self
1048 assert new_child isa TKwinterface
1049 _n_kwinterface = new_child
1050 else
1051 abort
1052 end
1053 return
1054 end
1055 end
1056
1057 redef fun visit_all(v: Visitor)
1058 do
1059 v.visit(_n_kwinterface)
1060 end
1061
1062 redef fun visit_all_reverse(v: Visitor)
1063 do
1064 v.visit(_n_kwinterface)
1065 end
1066 end
1067 redef class AUniversalClasskind
1068 redef fun n_kwuniversal=(n)
1069 do
1070 _n_kwuniversal = n
1071 n.parent = self
1072 end
1073
1074 private init empty_init do end
1075
1076 init init_auniversalclasskind (
1077 n_kwuniversal: nullable TKwuniversal
1078 )
1079 do
1080 empty_init
1081 _n_kwuniversal = n_kwuniversal.as(not null)
1082 n_kwuniversal.parent = self
1083 end
1084
1085 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1086 do
1087 if _n_kwuniversal == old_child then
1088 if new_child != null then
1089 new_child.parent = self
1090 assert new_child isa TKwuniversal
1091 _n_kwuniversal = new_child
1092 else
1093 abort
1094 end
1095 return
1096 end
1097 end
1098
1099 redef fun visit_all(v: Visitor)
1100 do
1101 v.visit(_n_kwuniversal)
1102 end
1103
1104 redef fun visit_all_reverse(v: Visitor)
1105 do
1106 v.visit(_n_kwuniversal)
1107 end
1108 end
1109 redef class AFormaldef
1110 redef fun n_id=(n)
1111 do
1112 _n_id = n
1113 n.parent = self
1114 end
1115 redef fun n_type=(n)
1116 do
1117 _n_type = n
1118 if n != null then
1119 n.parent = self
1120 end
1121 end
1122
1123 private init empty_init do end
1124
1125 init init_aformaldef (
1126 n_id: nullable TClassid ,
1127 n_type: nullable PType
1128 )
1129 do
1130 empty_init
1131 _n_id = n_id.as(not null)
1132 n_id.parent = self
1133 _n_type = n_type
1134 if n_type != null then
1135 n_type.parent = self
1136 end
1137 end
1138
1139 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1140 do
1141 if _n_id == old_child then
1142 if new_child != null then
1143 new_child.parent = self
1144 assert new_child isa TClassid
1145 _n_id = new_child
1146 else
1147 abort
1148 end
1149 return
1150 end
1151 if _n_type == old_child then
1152 if new_child != null then
1153 new_child.parent = self
1154 assert new_child isa PType
1155 _n_type = new_child
1156 else
1157 _n_type = null
1158 end
1159 return
1160 end
1161 end
1162
1163 redef fun visit_all(v: Visitor)
1164 do
1165 v.visit(_n_id)
1166 if _n_type != null then
1167 v.visit(_n_type.as(not null))
1168 end
1169 end
1170
1171 redef fun visit_all_reverse(v: Visitor)
1172 do
1173 v.visit(_n_id)
1174 if _n_type != null then
1175 v.visit(_n_type.as(not null))
1176 end
1177 end
1178 end
1179 redef class ASuperclass
1180 redef fun n_kwspecial=(n)
1181 do
1182 _n_kwspecial = n
1183 n.parent = self
1184 end
1185 redef fun n_type=(n)
1186 do
1187 _n_type = n
1188 n.parent = self
1189 end
1190
1191 private init empty_init do end
1192
1193 init init_asuperclass (
1194 n_kwspecial: nullable TKwspecial ,
1195 n_type: nullable PType
1196 )
1197 do
1198 empty_init
1199 _n_kwspecial = n_kwspecial.as(not null)
1200 n_kwspecial.parent = self
1201 _n_type = n_type.as(not null)
1202 n_type.parent = self
1203 end
1204
1205 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1206 do
1207 if _n_kwspecial == old_child then
1208 if new_child != null then
1209 new_child.parent = self
1210 assert new_child isa TKwspecial
1211 _n_kwspecial = new_child
1212 else
1213 abort
1214 end
1215 return
1216 end
1217 if _n_type == old_child then
1218 if new_child != null then
1219 new_child.parent = self
1220 assert new_child isa PType
1221 _n_type = new_child
1222 else
1223 abort
1224 end
1225 return
1226 end
1227 end
1228
1229 redef fun visit_all(v: Visitor)
1230 do
1231 v.visit(_n_kwspecial)
1232 v.visit(_n_type)
1233 end
1234
1235 redef fun visit_all_reverse(v: Visitor)
1236 do
1237 v.visit(_n_kwspecial)
1238 v.visit(_n_type)
1239 end
1240 end
1241 redef class AAttrPropdef
1242 redef fun n_doc=(n)
1243 do
1244 _n_doc = n
1245 if n != null then
1246 n.parent = self
1247 end
1248 end
1249 redef fun n_readable=(n)
1250 do
1251 _n_readable = n
1252 if n != null then
1253 n.parent = self
1254 end
1255 end
1256 redef fun n_writable=(n)
1257 do
1258 _n_writable = n
1259 if n != null then
1260 n.parent = self
1261 end
1262 end
1263 redef fun n_kwredef=(n)
1264 do
1265 _n_kwredef = n
1266 if n != null then
1267 n.parent = self
1268 end
1269 end
1270 redef fun n_visibility=(n)
1271 do
1272 _n_visibility = n
1273 n.parent = self
1274 end
1275 redef fun n_kwattr=(n)
1276 do
1277 _n_kwattr = n
1278 if n != null then
1279 n.parent = self
1280 end
1281 end
1282 redef fun n_kwvar=(n)
1283 do
1284 _n_kwvar = n
1285 if n != null then
1286 n.parent = self
1287 end
1288 end
1289 redef fun n_id=(n)
1290 do
1291 _n_id = n
1292 n.parent = self
1293 end
1294 redef fun n_type=(n)
1295 do
1296 _n_type = n
1297 if n != null then
1298 n.parent = self
1299 end
1300 end
1301 redef fun n_expr=(n)
1302 do
1303 _n_expr = n
1304 if n != null then
1305 n.parent = self
1306 end
1307 end
1308
1309 private init empty_init do end
1310
1311 init init_aattrpropdef (
1312 n_doc: nullable PDoc ,
1313 n_readable: nullable PAble ,
1314 n_writable: nullable PAble ,
1315 n_kwredef: nullable TKwredef ,
1316 n_visibility: nullable PVisibility ,
1317 n_kwattr: nullable TKwattr ,
1318 n_kwvar: nullable TKwvar ,
1319 n_id: nullable TAttrid ,
1320 n_type: nullable PType ,
1321 n_expr: nullable PExpr
1322 )
1323 do
1324 empty_init
1325 _n_doc = n_doc
1326 if n_doc != null then
1327 n_doc.parent = self
1328 end
1329 _n_readable = n_readable
1330 if n_readable != null then
1331 n_readable.parent = self
1332 end
1333 _n_writable = n_writable
1334 if n_writable != null then
1335 n_writable.parent = self
1336 end
1337 _n_kwredef = n_kwredef
1338 if n_kwredef != null then
1339 n_kwredef.parent = self
1340 end
1341 _n_visibility = n_visibility.as(not null)
1342 n_visibility.parent = self
1343 _n_kwattr = n_kwattr
1344 if n_kwattr != null then
1345 n_kwattr.parent = self
1346 end
1347 _n_kwvar = n_kwvar
1348 if n_kwvar != null then
1349 n_kwvar.parent = self
1350 end
1351 _n_id = n_id.as(not null)
1352 n_id.parent = self
1353 _n_type = n_type
1354 if n_type != null then
1355 n_type.parent = self
1356 end
1357 _n_expr = n_expr
1358 if n_expr != null then
1359 n_expr.parent = self
1360 end
1361 end
1362
1363 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1364 do
1365 if _n_doc == old_child then
1366 if new_child != null then
1367 new_child.parent = self
1368 assert new_child isa PDoc
1369 _n_doc = new_child
1370 else
1371 _n_doc = null
1372 end
1373 return
1374 end
1375 if _n_readable == old_child then
1376 if new_child != null then
1377 new_child.parent = self
1378 assert new_child isa PAble
1379 _n_readable = new_child
1380 else
1381 _n_readable = null
1382 end
1383 return
1384 end
1385 if _n_writable == old_child then
1386 if new_child != null then
1387 new_child.parent = self
1388 assert new_child isa PAble
1389 _n_writable = new_child
1390 else
1391 _n_writable = null
1392 end
1393 return
1394 end
1395 if _n_kwredef == old_child then
1396 if new_child != null then
1397 new_child.parent = self
1398 assert new_child isa TKwredef
1399 _n_kwredef = new_child
1400 else
1401 _n_kwredef = null
1402 end
1403 return
1404 end
1405 if _n_visibility == old_child then
1406 if new_child != null then
1407 new_child.parent = self
1408 assert new_child isa PVisibility
1409 _n_visibility = new_child
1410 else
1411 abort
1412 end
1413 return
1414 end
1415 if _n_kwattr == old_child then
1416 if new_child != null then
1417 new_child.parent = self
1418 assert new_child isa TKwattr
1419 _n_kwattr = new_child
1420 else
1421 _n_kwattr = null
1422 end
1423 return
1424 end
1425 if _n_kwvar == old_child then
1426 if new_child != null then
1427 new_child.parent = self
1428 assert new_child isa TKwvar
1429 _n_kwvar = new_child
1430 else
1431 _n_kwvar = null
1432 end
1433 return
1434 end
1435 if _n_id == old_child then
1436 if new_child != null then
1437 new_child.parent = self
1438 assert new_child isa TAttrid
1439 _n_id = new_child
1440 else
1441 abort
1442 end
1443 return
1444 end
1445 if _n_type == old_child then
1446 if new_child != null then
1447 new_child.parent = self
1448 assert new_child isa PType
1449 _n_type = new_child
1450 else
1451 _n_type = null
1452 end
1453 return
1454 end
1455 if _n_expr == old_child then
1456 if new_child != null then
1457 new_child.parent = self
1458 assert new_child isa PExpr
1459 _n_expr = new_child
1460 else
1461 _n_expr = null
1462 end
1463 return
1464 end
1465 end
1466
1467 redef fun visit_all(v: Visitor)
1468 do
1469 if _n_doc != null then
1470 v.visit(_n_doc.as(not null))
1471 end
1472 if _n_readable != null then
1473 v.visit(_n_readable.as(not null))
1474 end
1475 if _n_writable != null then
1476 v.visit(_n_writable.as(not null))
1477 end
1478 if _n_kwredef != null then
1479 v.visit(_n_kwredef.as(not null))
1480 end
1481 v.visit(_n_visibility)
1482 if _n_kwattr != null then
1483 v.visit(_n_kwattr.as(not null))
1484 end
1485 if _n_kwvar != null then
1486 v.visit(_n_kwvar.as(not null))
1487 end
1488 v.visit(_n_id)
1489 if _n_type != null then
1490 v.visit(_n_type.as(not null))
1491 end
1492 if _n_expr != null then
1493 v.visit(_n_expr.as(not null))
1494 end
1495 end
1496
1497 redef fun visit_all_reverse(v: Visitor)
1498 do
1499 if _n_doc != null then
1500 v.visit(_n_doc.as(not null))
1501 end
1502 if _n_readable != null then
1503 v.visit(_n_readable.as(not null))
1504 end
1505 if _n_writable != null then
1506 v.visit(_n_writable.as(not null))
1507 end
1508 if _n_kwredef != null then
1509 v.visit(_n_kwredef.as(not null))
1510 end
1511 v.visit(_n_visibility)
1512 if _n_kwattr != null then
1513 v.visit(_n_kwattr.as(not null))
1514 end
1515 if _n_kwvar != null then
1516 v.visit(_n_kwvar.as(not null))
1517 end
1518 v.visit(_n_id)
1519 if _n_type != null then
1520 v.visit(_n_type.as(not null))
1521 end
1522 if _n_expr != null then
1523 v.visit(_n_expr.as(not null))
1524 end
1525 end
1526 end
1527 redef class AMethPropdef
1528 redef fun n_doc=(n)
1529 do
1530 _n_doc = n
1531 if n != null then
1532 n.parent = self
1533 end
1534 end
1535 redef fun n_kwredef=(n)
1536 do
1537 _n_kwredef = n
1538 if n != null then
1539 n.parent = self
1540 end
1541 end
1542 redef fun n_visibility=(n)
1543 do
1544 _n_visibility = n
1545 n.parent = self
1546 end
1547 redef fun n_methid=(n)
1548 do
1549 _n_methid = n
1550 n.parent = self
1551 end
1552 redef fun n_signature=(n)
1553 do
1554 _n_signature = n
1555 n.parent = self
1556 end
1557
1558 private init empty_init do end
1559
1560 init init_amethpropdef (
1561 n_doc: nullable PDoc ,
1562 n_kwredef: nullable TKwredef ,
1563 n_visibility: nullable PVisibility ,
1564 n_methid: nullable PMethid ,
1565 n_signature: nullable PSignature
1566 )
1567 do
1568 empty_init
1569 _n_doc = n_doc
1570 if n_doc != null then
1571 n_doc.parent = self
1572 end
1573 _n_kwredef = n_kwredef
1574 if n_kwredef != null then
1575 n_kwredef.parent = self
1576 end
1577 _n_visibility = n_visibility.as(not null)
1578 n_visibility.parent = self
1579 _n_methid = n_methid.as(not null)
1580 n_methid.parent = self
1581 _n_signature = n_signature.as(not null)
1582 n_signature.parent = self
1583 end
1584
1585 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1586 do
1587 if _n_doc == old_child then
1588 if new_child != null then
1589 new_child.parent = self
1590 assert new_child isa PDoc
1591 _n_doc = new_child
1592 else
1593 _n_doc = null
1594 end
1595 return
1596 end
1597 if _n_kwredef == old_child then
1598 if new_child != null then
1599 new_child.parent = self
1600 assert new_child isa TKwredef
1601 _n_kwredef = new_child
1602 else
1603 _n_kwredef = null
1604 end
1605 return
1606 end
1607 if _n_visibility == old_child then
1608 if new_child != null then
1609 new_child.parent = self
1610 assert new_child isa PVisibility
1611 _n_visibility = new_child
1612 else
1613 abort
1614 end
1615 return
1616 end
1617 if _n_methid == old_child then
1618 if new_child != null then
1619 new_child.parent = self
1620 assert new_child isa PMethid
1621 _n_methid = new_child
1622 else
1623 abort
1624 end
1625 return
1626 end
1627 if _n_signature == old_child then
1628 if new_child != null then
1629 new_child.parent = self
1630 assert new_child isa PSignature
1631 _n_signature = new_child
1632 else
1633 abort
1634 end
1635 return
1636 end
1637 end
1638
1639 redef fun visit_all(v: Visitor)
1640 do
1641 if _n_doc != null then
1642 v.visit(_n_doc.as(not null))
1643 end
1644 if _n_kwredef != null then
1645 v.visit(_n_kwredef.as(not null))
1646 end
1647 v.visit(_n_visibility)
1648 v.visit(_n_methid)
1649 v.visit(_n_signature)
1650 end
1651
1652 redef fun visit_all_reverse(v: Visitor)
1653 do
1654 if _n_doc != null then
1655 v.visit(_n_doc.as(not null))
1656 end
1657 if _n_kwredef != null then
1658 v.visit(_n_kwredef.as(not null))
1659 end
1660 v.visit(_n_visibility)
1661 v.visit(_n_methid)
1662 v.visit(_n_signature)
1663 end
1664 end
1665 redef class ADeferredMethPropdef
1666 redef fun n_doc=(n)
1667 do
1668 _n_doc = n
1669 if n != null then
1670 n.parent = self
1671 end
1672 end
1673 redef fun n_kwredef=(n)
1674 do
1675 _n_kwredef = n
1676 if n != null then
1677 n.parent = self
1678 end
1679 end
1680 redef fun n_visibility=(n)
1681 do
1682 _n_visibility = n
1683 n.parent = self
1684 end
1685 redef fun n_kwmeth=(n)
1686 do
1687 _n_kwmeth = n
1688 n.parent = self
1689 end
1690 redef fun n_methid=(n)
1691 do
1692 _n_methid = n
1693 n.parent = self
1694 end
1695 redef fun n_signature=(n)
1696 do
1697 _n_signature = n
1698 n.parent = self
1699 end
1700
1701 private init empty_init do end
1702
1703 init init_adeferredmethpropdef (
1704 n_doc: nullable PDoc ,
1705 n_kwredef: nullable TKwredef ,
1706 n_visibility: nullable PVisibility ,
1707 n_kwmeth: nullable TKwmeth ,
1708 n_methid: nullable PMethid ,
1709 n_signature: nullable PSignature
1710 )
1711 do
1712 empty_init
1713 _n_doc = n_doc
1714 if n_doc != null then
1715 n_doc.parent = self
1716 end
1717 _n_kwredef = n_kwredef
1718 if n_kwredef != null then
1719 n_kwredef.parent = self
1720 end
1721 _n_visibility = n_visibility.as(not null)
1722 n_visibility.parent = self
1723 _n_kwmeth = n_kwmeth.as(not null)
1724 n_kwmeth.parent = self
1725 _n_methid = n_methid.as(not null)
1726 n_methid.parent = self
1727 _n_signature = n_signature.as(not null)
1728 n_signature.parent = self
1729 end
1730
1731 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1732 do
1733 if _n_doc == old_child then
1734 if new_child != null then
1735 new_child.parent = self
1736 assert new_child isa PDoc
1737 _n_doc = new_child
1738 else
1739 _n_doc = null
1740 end
1741 return
1742 end
1743 if _n_kwredef == old_child then
1744 if new_child != null then
1745 new_child.parent = self
1746 assert new_child isa TKwredef
1747 _n_kwredef = new_child
1748 else
1749 _n_kwredef = null
1750 end
1751 return
1752 end
1753 if _n_visibility == old_child then
1754 if new_child != null then
1755 new_child.parent = self
1756 assert new_child isa PVisibility
1757 _n_visibility = new_child
1758 else
1759 abort
1760 end
1761 return
1762 end
1763 if _n_kwmeth == old_child then
1764 if new_child != null then
1765 new_child.parent = self
1766 assert new_child isa TKwmeth
1767 _n_kwmeth = new_child
1768 else
1769 abort
1770 end
1771 return
1772 end
1773 if _n_methid == old_child then
1774 if new_child != null then
1775 new_child.parent = self
1776 assert new_child isa PMethid
1777 _n_methid = new_child
1778 else
1779 abort
1780 end
1781 return
1782 end
1783 if _n_signature == old_child then
1784 if new_child != null then
1785 new_child.parent = self
1786 assert new_child isa PSignature
1787 _n_signature = new_child
1788 else
1789 abort
1790 end
1791 return
1792 end
1793 end
1794
1795 redef fun visit_all(v: Visitor)
1796 do
1797 if _n_doc != null then
1798 v.visit(_n_doc.as(not null))
1799 end
1800 if _n_kwredef != null then
1801 v.visit(_n_kwredef.as(not null))
1802 end
1803 v.visit(_n_visibility)
1804 v.visit(_n_kwmeth)
1805 v.visit(_n_methid)
1806 v.visit(_n_signature)
1807 end
1808
1809 redef fun visit_all_reverse(v: Visitor)
1810 do
1811 if _n_doc != null then
1812 v.visit(_n_doc.as(not null))
1813 end
1814 if _n_kwredef != null then
1815 v.visit(_n_kwredef.as(not null))
1816 end
1817 v.visit(_n_visibility)
1818 v.visit(_n_kwmeth)
1819 v.visit(_n_methid)
1820 v.visit(_n_signature)
1821 end
1822 end
1823 redef class AInternMethPropdef
1824 redef fun n_doc=(n)
1825 do
1826 _n_doc = n
1827 if n != null then
1828 n.parent = self
1829 end
1830 end
1831 redef fun n_kwredef=(n)
1832 do
1833 _n_kwredef = n
1834 if n != null then
1835 n.parent = self
1836 end
1837 end
1838 redef fun n_visibility=(n)
1839 do
1840 _n_visibility = n
1841 n.parent = self
1842 end
1843 redef fun n_kwmeth=(n)
1844 do
1845 _n_kwmeth = n
1846 n.parent = self
1847 end
1848 redef fun n_methid=(n)
1849 do
1850 _n_methid = n
1851 n.parent = self
1852 end
1853 redef fun n_signature=(n)
1854 do
1855 _n_signature = n
1856 n.parent = self
1857 end
1858
1859 private init empty_init do end
1860
1861 init init_ainternmethpropdef (
1862 n_doc: nullable PDoc ,
1863 n_kwredef: nullable TKwredef ,
1864 n_visibility: nullable PVisibility ,
1865 n_kwmeth: nullable TKwmeth ,
1866 n_methid: nullable PMethid ,
1867 n_signature: nullable PSignature
1868 )
1869 do
1870 empty_init
1871 _n_doc = n_doc
1872 if n_doc != null then
1873 n_doc.parent = self
1874 end
1875 _n_kwredef = n_kwredef
1876 if n_kwredef != null then
1877 n_kwredef.parent = self
1878 end
1879 _n_visibility = n_visibility.as(not null)
1880 n_visibility.parent = self
1881 _n_kwmeth = n_kwmeth.as(not null)
1882 n_kwmeth.parent = self
1883 _n_methid = n_methid.as(not null)
1884 n_methid.parent = self
1885 _n_signature = n_signature.as(not null)
1886 n_signature.parent = self
1887 end
1888
1889 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
1890 do
1891 if _n_doc == old_child then
1892 if new_child != null then
1893 new_child.parent = self
1894 assert new_child isa PDoc
1895 _n_doc = new_child
1896 else
1897 _n_doc = null
1898 end
1899 return
1900 end
1901 if _n_kwredef == old_child then
1902 if new_child != null then
1903 new_child.parent = self
1904 assert new_child isa TKwredef
1905 _n_kwredef = new_child
1906 else
1907 _n_kwredef = null
1908 end
1909 return
1910 end
1911 if _n_visibility == old_child then
1912 if new_child != null then
1913 new_child.parent = self
1914 assert new_child isa PVisibility
1915 _n_visibility = new_child
1916 else
1917 abort
1918 end
1919 return
1920 end
1921 if _n_kwmeth == old_child then
1922 if new_child != null then
1923 new_child.parent = self
1924 assert new_child isa TKwmeth
1925 _n_kwmeth = new_child
1926 else
1927 abort
1928 end
1929 return
1930 end
1931 if _n_methid == old_child then
1932 if new_child != null then
1933 new_child.parent = self
1934 assert new_child isa PMethid
1935 _n_methid = new_child
1936 else
1937 abort
1938 end
1939 return
1940 end
1941 if _n_signature == old_child then
1942 if new_child != null then
1943 new_child.parent = self
1944 assert new_child isa PSignature
1945 _n_signature = new_child
1946 else
1947 abort
1948 end
1949 return
1950 end
1951 end
1952
1953 redef fun visit_all(v: Visitor)
1954 do
1955 if _n_doc != null then
1956 v.visit(_n_doc.as(not null))
1957 end
1958 if _n_kwredef != null then
1959 v.visit(_n_kwredef.as(not null))
1960 end
1961 v.visit(_n_visibility)
1962 v.visit(_n_kwmeth)
1963 v.visit(_n_methid)
1964 v.visit(_n_signature)
1965 end
1966
1967 redef fun visit_all_reverse(v: Visitor)
1968 do
1969 if _n_doc != null then
1970 v.visit(_n_doc.as(not null))
1971 end
1972 if _n_kwredef != null then
1973 v.visit(_n_kwredef.as(not null))
1974 end
1975 v.visit(_n_visibility)
1976 v.visit(_n_kwmeth)
1977 v.visit(_n_methid)
1978 v.visit(_n_signature)
1979 end
1980 end
1981 redef class AExternMethPropdef
1982 redef fun n_doc=(n)
1983 do
1984 _n_doc = n
1985 if n != null then
1986 n.parent = self
1987 end
1988 end
1989 redef fun n_kwredef=(n)
1990 do
1991 _n_kwredef = n
1992 if n != null then
1993 n.parent = self
1994 end
1995 end
1996 redef fun n_visibility=(n)
1997 do
1998 _n_visibility = n
1999 n.parent = self
2000 end
2001 redef fun n_kwmeth=(n)
2002 do
2003 _n_kwmeth = n
2004 n.parent = self
2005 end
2006 redef fun n_methid=(n)
2007 do
2008 _n_methid = n
2009 n.parent = self
2010 end
2011 redef fun n_signature=(n)
2012 do
2013 _n_signature = n
2014 n.parent = self
2015 end
2016 redef fun n_extern=(n)
2017 do
2018 _n_extern = n
2019 if n != null then
2020 n.parent = self
2021 end
2022 end
2023
2024 private init empty_init do end
2025
2026 init init_aexternmethpropdef (
2027 n_doc: nullable PDoc ,
2028 n_kwredef: nullable TKwredef ,
2029 n_visibility: nullable PVisibility ,
2030 n_kwmeth: nullable TKwmeth ,
2031 n_methid: nullable PMethid ,
2032 n_signature: nullable PSignature ,
2033 n_extern: nullable TString
2034 )
2035 do
2036 empty_init
2037 _n_doc = n_doc
2038 if n_doc != null then
2039 n_doc.parent = self
2040 end
2041 _n_kwredef = n_kwredef
2042 if n_kwredef != null then
2043 n_kwredef.parent = self
2044 end
2045 _n_visibility = n_visibility.as(not null)
2046 n_visibility.parent = self
2047 _n_kwmeth = n_kwmeth.as(not null)
2048 n_kwmeth.parent = self
2049 _n_methid = n_methid.as(not null)
2050 n_methid.parent = self
2051 _n_signature = n_signature.as(not null)
2052 n_signature.parent = self
2053 _n_extern = n_extern
2054 if n_extern != null then
2055 n_extern.parent = self
2056 end
2057 end
2058
2059 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2060 do
2061 if _n_doc == old_child then
2062 if new_child != null then
2063 new_child.parent = self
2064 assert new_child isa PDoc
2065 _n_doc = new_child
2066 else
2067 _n_doc = null
2068 end
2069 return
2070 end
2071 if _n_kwredef == old_child then
2072 if new_child != null then
2073 new_child.parent = self
2074 assert new_child isa TKwredef
2075 _n_kwredef = new_child
2076 else
2077 _n_kwredef = null
2078 end
2079 return
2080 end
2081 if _n_visibility == old_child then
2082 if new_child != null then
2083 new_child.parent = self
2084 assert new_child isa PVisibility
2085 _n_visibility = new_child
2086 else
2087 abort
2088 end
2089 return
2090 end
2091 if _n_kwmeth == old_child then
2092 if new_child != null then
2093 new_child.parent = self
2094 assert new_child isa TKwmeth
2095 _n_kwmeth = new_child
2096 else
2097 abort
2098 end
2099 return
2100 end
2101 if _n_methid == old_child then
2102 if new_child != null then
2103 new_child.parent = self
2104 assert new_child isa PMethid
2105 _n_methid = new_child
2106 else
2107 abort
2108 end
2109 return
2110 end
2111 if _n_signature == old_child then
2112 if new_child != null then
2113 new_child.parent = self
2114 assert new_child isa PSignature
2115 _n_signature = new_child
2116 else
2117 abort
2118 end
2119 return
2120 end
2121 if _n_extern == old_child then
2122 if new_child != null then
2123 new_child.parent = self
2124 assert new_child isa TString
2125 _n_extern = new_child
2126 else
2127 _n_extern = null
2128 end
2129 return
2130 end
2131 end
2132
2133 redef fun visit_all(v: Visitor)
2134 do
2135 if _n_doc != null then
2136 v.visit(_n_doc.as(not null))
2137 end
2138 if _n_kwredef != null then
2139 v.visit(_n_kwredef.as(not null))
2140 end
2141 v.visit(_n_visibility)
2142 v.visit(_n_kwmeth)
2143 v.visit(_n_methid)
2144 v.visit(_n_signature)
2145 if _n_extern != null then
2146 v.visit(_n_extern.as(not null))
2147 end
2148 end
2149
2150 redef fun visit_all_reverse(v: Visitor)
2151 do
2152 if _n_doc != null then
2153 v.visit(_n_doc.as(not null))
2154 end
2155 if _n_kwredef != null then
2156 v.visit(_n_kwredef.as(not null))
2157 end
2158 v.visit(_n_visibility)
2159 v.visit(_n_kwmeth)
2160 v.visit(_n_methid)
2161 v.visit(_n_signature)
2162 if _n_extern != null then
2163 v.visit(_n_extern.as(not null))
2164 end
2165 end
2166 end
2167 redef class AConcreteMethPropdef
2168 redef fun n_doc=(n)
2169 do
2170 _n_doc = n
2171 if n != null then
2172 n.parent = self
2173 end
2174 end
2175 redef fun n_kwredef=(n)
2176 do
2177 _n_kwredef = n
2178 if n != null then
2179 n.parent = self
2180 end
2181 end
2182 redef fun n_visibility=(n)
2183 do
2184 _n_visibility = n
2185 n.parent = self
2186 end
2187 redef fun n_kwmeth=(n)
2188 do
2189 _n_kwmeth = n
2190 n.parent = self
2191 end
2192 redef fun n_methid=(n)
2193 do
2194 _n_methid = n
2195 n.parent = self
2196 end
2197 redef fun n_signature=(n)
2198 do
2199 _n_signature = n
2200 n.parent = self
2201 end
2202 redef fun n_block=(n)
2203 do
2204 _n_block = n
2205 if n != null then
2206 n.parent = self
2207 end
2208 end
2209
2210 private init empty_init do end
2211
2212 init init_aconcretemethpropdef (
2213 n_doc: nullable PDoc ,
2214 n_kwredef: nullable TKwredef ,
2215 n_visibility: nullable PVisibility ,
2216 n_kwmeth: nullable TKwmeth ,
2217 n_methid: nullable PMethid ,
2218 n_signature: nullable PSignature ,
2219 n_block: nullable PExpr
2220 )
2221 do
2222 empty_init
2223 _n_doc = n_doc
2224 if n_doc != null then
2225 n_doc.parent = self
2226 end
2227 _n_kwredef = n_kwredef
2228 if n_kwredef != null then
2229 n_kwredef.parent = self
2230 end
2231 _n_visibility = n_visibility.as(not null)
2232 n_visibility.parent = self
2233 _n_kwmeth = n_kwmeth.as(not null)
2234 n_kwmeth.parent = self
2235 _n_methid = n_methid.as(not null)
2236 n_methid.parent = self
2237 _n_signature = n_signature.as(not null)
2238 n_signature.parent = self
2239 _n_block = n_block
2240 if n_block != null then
2241 n_block.parent = self
2242 end
2243 end
2244
2245 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2246 do
2247 if _n_doc == old_child then
2248 if new_child != null then
2249 new_child.parent = self
2250 assert new_child isa PDoc
2251 _n_doc = new_child
2252 else
2253 _n_doc = null
2254 end
2255 return
2256 end
2257 if _n_kwredef == old_child then
2258 if new_child != null then
2259 new_child.parent = self
2260 assert new_child isa TKwredef
2261 _n_kwredef = new_child
2262 else
2263 _n_kwredef = null
2264 end
2265 return
2266 end
2267 if _n_visibility == old_child then
2268 if new_child != null then
2269 new_child.parent = self
2270 assert new_child isa PVisibility
2271 _n_visibility = new_child
2272 else
2273 abort
2274 end
2275 return
2276 end
2277 if _n_kwmeth == old_child then
2278 if new_child != null then
2279 new_child.parent = self
2280 assert new_child isa TKwmeth
2281 _n_kwmeth = new_child
2282 else
2283 abort
2284 end
2285 return
2286 end
2287 if _n_methid == old_child then
2288 if new_child != null then
2289 new_child.parent = self
2290 assert new_child isa PMethid
2291 _n_methid = new_child
2292 else
2293 abort
2294 end
2295 return
2296 end
2297 if _n_signature == old_child then
2298 if new_child != null then
2299 new_child.parent = self
2300 assert new_child isa PSignature
2301 _n_signature = new_child
2302 else
2303 abort
2304 end
2305 return
2306 end
2307 if _n_block == old_child then
2308 if new_child != null then
2309 new_child.parent = self
2310 assert new_child isa PExpr
2311 _n_block = new_child
2312 else
2313 _n_block = null
2314 end
2315 return
2316 end
2317 end
2318
2319 redef fun visit_all(v: Visitor)
2320 do
2321 if _n_doc != null then
2322 v.visit(_n_doc.as(not null))
2323 end
2324 if _n_kwredef != null then
2325 v.visit(_n_kwredef.as(not null))
2326 end
2327 v.visit(_n_visibility)
2328 v.visit(_n_kwmeth)
2329 v.visit(_n_methid)
2330 v.visit(_n_signature)
2331 if _n_block != null then
2332 v.visit(_n_block.as(not null))
2333 end
2334 end
2335
2336 redef fun visit_all_reverse(v: Visitor)
2337 do
2338 if _n_doc != null then
2339 v.visit(_n_doc.as(not null))
2340 end
2341 if _n_kwredef != null then
2342 v.visit(_n_kwredef.as(not null))
2343 end
2344 v.visit(_n_visibility)
2345 v.visit(_n_kwmeth)
2346 v.visit(_n_methid)
2347 v.visit(_n_signature)
2348 if _n_block != null then
2349 v.visit(_n_block.as(not null))
2350 end
2351 end
2352 end
2353 redef class AConcreteInitPropdef
2354 redef fun n_doc=(n)
2355 do
2356 _n_doc = n
2357 if n != null then
2358 n.parent = self
2359 end
2360 end
2361 redef fun n_kwredef=(n)
2362 do
2363 _n_kwredef = n
2364 if n != null then
2365 n.parent = self
2366 end
2367 end
2368 redef fun n_visibility=(n)
2369 do
2370 _n_visibility = n
2371 n.parent = self
2372 end
2373 redef fun n_kwinit=(n)
2374 do
2375 _n_kwinit = n
2376 n.parent = self
2377 end
2378 redef fun n_methid=(n)
2379 do
2380 _n_methid = n
2381 if n != null then
2382 n.parent = self
2383 end
2384 end
2385 redef fun n_signature=(n)
2386 do
2387 _n_signature = n
2388 n.parent = self
2389 end
2390 redef fun n_block=(n)
2391 do
2392 _n_block = n
2393 if n != null then
2394 n.parent = self
2395 end
2396 end
2397
2398 private init empty_init do end
2399
2400 init init_aconcreteinitpropdef (
2401 n_doc: nullable PDoc ,
2402 n_kwredef: nullable TKwredef ,
2403 n_visibility: nullable PVisibility ,
2404 n_kwinit: nullable TKwinit ,
2405 n_methid: nullable PMethid ,
2406 n_signature: nullable PSignature ,
2407 n_block: nullable PExpr
2408 )
2409 do
2410 empty_init
2411 _n_doc = n_doc
2412 if n_doc != null then
2413 n_doc.parent = self
2414 end
2415 _n_kwredef = n_kwredef
2416 if n_kwredef != null then
2417 n_kwredef.parent = self
2418 end
2419 _n_visibility = n_visibility.as(not null)
2420 n_visibility.parent = self
2421 _n_kwinit = n_kwinit.as(not null)
2422 n_kwinit.parent = self
2423 _n_methid = n_methid
2424 if n_methid != null then
2425 n_methid.parent = self
2426 end
2427 _n_signature = n_signature.as(not null)
2428 n_signature.parent = self
2429 _n_block = n_block
2430 if n_block != null then
2431 n_block.parent = self
2432 end
2433 end
2434
2435 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2436 do
2437 if _n_doc == old_child then
2438 if new_child != null then
2439 new_child.parent = self
2440 assert new_child isa PDoc
2441 _n_doc = new_child
2442 else
2443 _n_doc = null
2444 end
2445 return
2446 end
2447 if _n_kwredef == old_child then
2448 if new_child != null then
2449 new_child.parent = self
2450 assert new_child isa TKwredef
2451 _n_kwredef = new_child
2452 else
2453 _n_kwredef = null
2454 end
2455 return
2456 end
2457 if _n_visibility == old_child then
2458 if new_child != null then
2459 new_child.parent = self
2460 assert new_child isa PVisibility
2461 _n_visibility = new_child
2462 else
2463 abort
2464 end
2465 return
2466 end
2467 if _n_kwinit == old_child then
2468 if new_child != null then
2469 new_child.parent = self
2470 assert new_child isa TKwinit
2471 _n_kwinit = new_child
2472 else
2473 abort
2474 end
2475 return
2476 end
2477 if _n_methid == old_child then
2478 if new_child != null then
2479 new_child.parent = self
2480 assert new_child isa PMethid
2481 _n_methid = new_child
2482 else
2483 _n_methid = null
2484 end
2485 return
2486 end
2487 if _n_signature == old_child then
2488 if new_child != null then
2489 new_child.parent = self
2490 assert new_child isa PSignature
2491 _n_signature = new_child
2492 else
2493 abort
2494 end
2495 return
2496 end
2497 if _n_block == old_child then
2498 if new_child != null then
2499 new_child.parent = self
2500 assert new_child isa PExpr
2501 _n_block = new_child
2502 else
2503 _n_block = null
2504 end
2505 return
2506 end
2507 end
2508
2509 redef fun visit_all(v: Visitor)
2510 do
2511 if _n_doc != null then
2512 v.visit(_n_doc.as(not null))
2513 end
2514 if _n_kwredef != null then
2515 v.visit(_n_kwredef.as(not null))
2516 end
2517 v.visit(_n_visibility)
2518 v.visit(_n_kwinit)
2519 if _n_methid != null then
2520 v.visit(_n_methid.as(not null))
2521 end
2522 v.visit(_n_signature)
2523 if _n_block != null then
2524 v.visit(_n_block.as(not null))
2525 end
2526 end
2527
2528 redef fun visit_all_reverse(v: Visitor)
2529 do
2530 if _n_doc != null then
2531 v.visit(_n_doc.as(not null))
2532 end
2533 if _n_kwredef != null then
2534 v.visit(_n_kwredef.as(not null))
2535 end
2536 v.visit(_n_visibility)
2537 v.visit(_n_kwinit)
2538 if _n_methid != null then
2539 v.visit(_n_methid.as(not null))
2540 end
2541 v.visit(_n_signature)
2542 if _n_block != null then
2543 v.visit(_n_block.as(not null))
2544 end
2545 end
2546 end
2547 redef class AMainMethPropdef
2548 redef fun n_kwredef=(n)
2549 do
2550 _n_kwredef = n
2551 if n != null then
2552 n.parent = self
2553 end
2554 end
2555 redef fun n_block=(n)
2556 do
2557 _n_block = n
2558 if n != null then
2559 n.parent = self
2560 end
2561 end
2562
2563 private init empty_init do end
2564
2565 init init_amainmethpropdef (
2566 n_kwredef: nullable TKwredef ,
2567 n_block: nullable PExpr
2568 )
2569 do
2570 empty_init
2571 _n_kwredef = n_kwredef
2572 if n_kwredef != null then
2573 n_kwredef.parent = self
2574 end
2575 _n_block = n_block
2576 if n_block != null then
2577 n_block.parent = self
2578 end
2579 end
2580
2581 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2582 do
2583 if _n_kwredef == old_child then
2584 if new_child != null then
2585 new_child.parent = self
2586 assert new_child isa TKwredef
2587 _n_kwredef = new_child
2588 else
2589 _n_kwredef = null
2590 end
2591 return
2592 end
2593 if _n_block == old_child then
2594 if new_child != null then
2595 new_child.parent = self
2596 assert new_child isa PExpr
2597 _n_block = new_child
2598 else
2599 _n_block = null
2600 end
2601 return
2602 end
2603 end
2604
2605 redef fun visit_all(v: Visitor)
2606 do
2607 if _n_kwredef != null then
2608 v.visit(_n_kwredef.as(not null))
2609 end
2610 if _n_block != null then
2611 v.visit(_n_block.as(not null))
2612 end
2613 end
2614
2615 redef fun visit_all_reverse(v: Visitor)
2616 do
2617 if _n_kwredef != null then
2618 v.visit(_n_kwredef.as(not null))
2619 end
2620 if _n_block != null then
2621 v.visit(_n_block.as(not null))
2622 end
2623 end
2624 end
2625 redef class ATypePropdef
2626 redef fun n_doc=(n)
2627 do
2628 _n_doc = n
2629 if n != null then
2630 n.parent = self
2631 end
2632 end
2633 redef fun n_kwredef=(n)
2634 do
2635 _n_kwredef = n
2636 if n != null then
2637 n.parent = self
2638 end
2639 end
2640 redef fun n_visibility=(n)
2641 do
2642 _n_visibility = n
2643 n.parent = self
2644 end
2645 redef fun n_kwtype=(n)
2646 do
2647 _n_kwtype = n
2648 n.parent = self
2649 end
2650 redef fun n_id=(n)
2651 do
2652 _n_id = n
2653 n.parent = self
2654 end
2655 redef fun n_type=(n)
2656 do
2657 _n_type = n
2658 n.parent = self
2659 end
2660
2661 private init empty_init do end
2662
2663 init init_atypepropdef (
2664 n_doc: nullable PDoc ,
2665 n_kwredef: nullable TKwredef ,
2666 n_visibility: nullable PVisibility ,
2667 n_kwtype: nullable TKwtype ,
2668 n_id: nullable TClassid ,
2669 n_type: nullable PType
2670 )
2671 do
2672 empty_init
2673 _n_doc = n_doc
2674 if n_doc != null then
2675 n_doc.parent = self
2676 end
2677 _n_kwredef = n_kwredef
2678 if n_kwredef != null then
2679 n_kwredef.parent = self
2680 end
2681 _n_visibility = n_visibility.as(not null)
2682 n_visibility.parent = self
2683 _n_kwtype = n_kwtype.as(not null)
2684 n_kwtype.parent = self
2685 _n_id = n_id.as(not null)
2686 n_id.parent = self
2687 _n_type = n_type.as(not null)
2688 n_type.parent = self
2689 end
2690
2691 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2692 do
2693 if _n_doc == old_child then
2694 if new_child != null then
2695 new_child.parent = self
2696 assert new_child isa PDoc
2697 _n_doc = new_child
2698 else
2699 _n_doc = null
2700 end
2701 return
2702 end
2703 if _n_kwredef == old_child then
2704 if new_child != null then
2705 new_child.parent = self
2706 assert new_child isa TKwredef
2707 _n_kwredef = new_child
2708 else
2709 _n_kwredef = null
2710 end
2711 return
2712 end
2713 if _n_visibility == old_child then
2714 if new_child != null then
2715 new_child.parent = self
2716 assert new_child isa PVisibility
2717 _n_visibility = new_child
2718 else
2719 abort
2720 end
2721 return
2722 end
2723 if _n_kwtype == old_child then
2724 if new_child != null then
2725 new_child.parent = self
2726 assert new_child isa TKwtype
2727 _n_kwtype = new_child
2728 else
2729 abort
2730 end
2731 return
2732 end
2733 if _n_id == old_child then
2734 if new_child != null then
2735 new_child.parent = self
2736 assert new_child isa TClassid
2737 _n_id = new_child
2738 else
2739 abort
2740 end
2741 return
2742 end
2743 if _n_type == old_child then
2744 if new_child != null then
2745 new_child.parent = self
2746 assert new_child isa PType
2747 _n_type = new_child
2748 else
2749 abort
2750 end
2751 return
2752 end
2753 end
2754
2755 redef fun visit_all(v: Visitor)
2756 do
2757 if _n_doc != null then
2758 v.visit(_n_doc.as(not null))
2759 end
2760 if _n_kwredef != null then
2761 v.visit(_n_kwredef.as(not null))
2762 end
2763 v.visit(_n_visibility)
2764 v.visit(_n_kwtype)
2765 v.visit(_n_id)
2766 v.visit(_n_type)
2767 end
2768
2769 redef fun visit_all_reverse(v: Visitor)
2770 do
2771 if _n_doc != null then
2772 v.visit(_n_doc.as(not null))
2773 end
2774 if _n_kwredef != null then
2775 v.visit(_n_kwredef.as(not null))
2776 end
2777 v.visit(_n_visibility)
2778 v.visit(_n_kwtype)
2779 v.visit(_n_id)
2780 v.visit(_n_type)
2781 end
2782 end
2783 redef class AReadAble
2784 redef fun n_kwredef=(n)
2785 do
2786 _n_kwredef = n
2787 if n != null then
2788 n.parent = self
2789 end
2790 end
2791 redef fun n_kwreadable=(n)
2792 do
2793 _n_kwreadable = n
2794 n.parent = self
2795 end
2796
2797 private init empty_init do end
2798
2799 init init_areadable (
2800 n_kwredef: nullable TKwredef ,
2801 n_kwreadable: nullable TKwreadable
2802 )
2803 do
2804 empty_init
2805 _n_kwredef = n_kwredef
2806 if n_kwredef != null then
2807 n_kwredef.parent = self
2808 end
2809 _n_kwreadable = n_kwreadable.as(not null)
2810 n_kwreadable.parent = self
2811 end
2812
2813 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2814 do
2815 if _n_kwredef == old_child then
2816 if new_child != null then
2817 new_child.parent = self
2818 assert new_child isa TKwredef
2819 _n_kwredef = new_child
2820 else
2821 _n_kwredef = null
2822 end
2823 return
2824 end
2825 if _n_kwreadable == old_child then
2826 if new_child != null then
2827 new_child.parent = self
2828 assert new_child isa TKwreadable
2829 _n_kwreadable = new_child
2830 else
2831 abort
2832 end
2833 return
2834 end
2835 end
2836
2837 redef fun visit_all(v: Visitor)
2838 do
2839 if _n_kwredef != null then
2840 v.visit(_n_kwredef.as(not null))
2841 end
2842 v.visit(_n_kwreadable)
2843 end
2844
2845 redef fun visit_all_reverse(v: Visitor)
2846 do
2847 if _n_kwredef != null then
2848 v.visit(_n_kwredef.as(not null))
2849 end
2850 v.visit(_n_kwreadable)
2851 end
2852 end
2853 redef class AWriteAble
2854 redef fun n_kwredef=(n)
2855 do
2856 _n_kwredef = n
2857 if n != null then
2858 n.parent = self
2859 end
2860 end
2861 redef fun n_kwwritable=(n)
2862 do
2863 _n_kwwritable = n
2864 n.parent = self
2865 end
2866
2867 private init empty_init do end
2868
2869 init init_awriteable (
2870 n_kwredef: nullable TKwredef ,
2871 n_kwwritable: nullable TKwwritable
2872 )
2873 do
2874 empty_init
2875 _n_kwredef = n_kwredef
2876 if n_kwredef != null then
2877 n_kwredef.parent = self
2878 end
2879 _n_kwwritable = n_kwwritable.as(not null)
2880 n_kwwritable.parent = self
2881 end
2882
2883 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2884 do
2885 if _n_kwredef == old_child then
2886 if new_child != null then
2887 new_child.parent = self
2888 assert new_child isa TKwredef
2889 _n_kwredef = new_child
2890 else
2891 _n_kwredef = null
2892 end
2893 return
2894 end
2895 if _n_kwwritable == old_child then
2896 if new_child != null then
2897 new_child.parent = self
2898 assert new_child isa TKwwritable
2899 _n_kwwritable = new_child
2900 else
2901 abort
2902 end
2903 return
2904 end
2905 end
2906
2907 redef fun visit_all(v: Visitor)
2908 do
2909 if _n_kwredef != null then
2910 v.visit(_n_kwredef.as(not null))
2911 end
2912 v.visit(_n_kwwritable)
2913 end
2914
2915 redef fun visit_all_reverse(v: Visitor)
2916 do
2917 if _n_kwredef != null then
2918 v.visit(_n_kwredef.as(not null))
2919 end
2920 v.visit(_n_kwwritable)
2921 end
2922 end
2923 redef class AIdMethid
2924 redef fun n_id=(n)
2925 do
2926 _n_id = n
2927 n.parent = self
2928 end
2929
2930 private init empty_init do end
2931
2932 init init_aidmethid (
2933 n_id: nullable TId
2934 )
2935 do
2936 empty_init
2937 _n_id = n_id.as(not null)
2938 n_id.parent = self
2939 end
2940
2941 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2942 do
2943 if _n_id == old_child then
2944 if new_child != null then
2945 new_child.parent = self
2946 assert new_child isa TId
2947 _n_id = new_child
2948 else
2949 abort
2950 end
2951 return
2952 end
2953 end
2954
2955 redef fun visit_all(v: Visitor)
2956 do
2957 v.visit(_n_id)
2958 end
2959
2960 redef fun visit_all_reverse(v: Visitor)
2961 do
2962 v.visit(_n_id)
2963 end
2964 end
2965 redef class APlusMethid
2966 redef fun n_plus=(n)
2967 do
2968 _n_plus = n
2969 n.parent = self
2970 end
2971
2972 private init empty_init do end
2973
2974 init init_aplusmethid (
2975 n_plus: nullable TPlus
2976 )
2977 do
2978 empty_init
2979 _n_plus = n_plus.as(not null)
2980 n_plus.parent = self
2981 end
2982
2983 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
2984 do
2985 if _n_plus == old_child then
2986 if new_child != null then
2987 new_child.parent = self
2988 assert new_child isa TPlus
2989 _n_plus = new_child
2990 else
2991 abort
2992 end
2993 return
2994 end
2995 end
2996
2997 redef fun visit_all(v: Visitor)
2998 do
2999 v.visit(_n_plus)
3000 end
3001
3002 redef fun visit_all_reverse(v: Visitor)
3003 do
3004 v.visit(_n_plus)
3005 end
3006 end
3007 redef class AMinusMethid
3008 redef fun n_minus=(n)
3009 do
3010 _n_minus = n
3011 n.parent = self
3012 end
3013
3014 private init empty_init do end
3015
3016 init init_aminusmethid (
3017 n_minus: nullable TMinus
3018 )
3019 do
3020 empty_init
3021 _n_minus = n_minus.as(not null)
3022 n_minus.parent = self
3023 end
3024
3025 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3026 do
3027 if _n_minus == old_child then
3028 if new_child != null then
3029 new_child.parent = self
3030 assert new_child isa TMinus
3031 _n_minus = new_child
3032 else
3033 abort
3034 end
3035 return
3036 end
3037 end
3038
3039 redef fun visit_all(v: Visitor)
3040 do
3041 v.visit(_n_minus)
3042 end
3043
3044 redef fun visit_all_reverse(v: Visitor)
3045 do
3046 v.visit(_n_minus)
3047 end
3048 end
3049 redef class AStarMethid
3050 redef fun n_star=(n)
3051 do
3052 _n_star = n
3053 n.parent = self
3054 end
3055
3056 private init empty_init do end
3057
3058 init init_astarmethid (
3059 n_star: nullable TStar
3060 )
3061 do
3062 empty_init
3063 _n_star = n_star.as(not null)
3064 n_star.parent = self
3065 end
3066
3067 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3068 do
3069 if _n_star == old_child then
3070 if new_child != null then
3071 new_child.parent = self
3072 assert new_child isa TStar
3073 _n_star = new_child
3074 else
3075 abort
3076 end
3077 return
3078 end
3079 end
3080
3081 redef fun visit_all(v: Visitor)
3082 do
3083 v.visit(_n_star)
3084 end
3085
3086 redef fun visit_all_reverse(v: Visitor)
3087 do
3088 v.visit(_n_star)
3089 end
3090 end
3091 redef class ASlashMethid
3092 redef fun n_slash=(n)
3093 do
3094 _n_slash = n
3095 n.parent = self
3096 end
3097
3098 private init empty_init do end
3099
3100 init init_aslashmethid (
3101 n_slash: nullable TSlash
3102 )
3103 do
3104 empty_init
3105 _n_slash = n_slash.as(not null)
3106 n_slash.parent = self
3107 end
3108
3109 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3110 do
3111 if _n_slash == old_child then
3112 if new_child != null then
3113 new_child.parent = self
3114 assert new_child isa TSlash
3115 _n_slash = new_child
3116 else
3117 abort
3118 end
3119 return
3120 end
3121 end
3122
3123 redef fun visit_all(v: Visitor)
3124 do
3125 v.visit(_n_slash)
3126 end
3127
3128 redef fun visit_all_reverse(v: Visitor)
3129 do
3130 v.visit(_n_slash)
3131 end
3132 end
3133 redef class APercentMethid
3134 redef fun n_percent=(n)
3135 do
3136 _n_percent = n
3137 n.parent = self
3138 end
3139
3140 private init empty_init do end
3141
3142 init init_apercentmethid (
3143 n_percent: nullable TPercent
3144 )
3145 do
3146 empty_init
3147 _n_percent = n_percent.as(not null)
3148 n_percent.parent = self
3149 end
3150
3151 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3152 do
3153 if _n_percent == old_child then
3154 if new_child != null then
3155 new_child.parent = self
3156 assert new_child isa TPercent
3157 _n_percent = new_child
3158 else
3159 abort
3160 end
3161 return
3162 end
3163 end
3164
3165 redef fun visit_all(v: Visitor)
3166 do
3167 v.visit(_n_percent)
3168 end
3169
3170 redef fun visit_all_reverse(v: Visitor)
3171 do
3172 v.visit(_n_percent)
3173 end
3174 end
3175 redef class AEqMethid
3176 redef fun n_eq=(n)
3177 do
3178 _n_eq = n
3179 n.parent = self
3180 end
3181
3182 private init empty_init do end
3183
3184 init init_aeqmethid (
3185 n_eq: nullable TEq
3186 )
3187 do
3188 empty_init
3189 _n_eq = n_eq.as(not null)
3190 n_eq.parent = self
3191 end
3192
3193 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3194 do
3195 if _n_eq == old_child then
3196 if new_child != null then
3197 new_child.parent = self
3198 assert new_child isa TEq
3199 _n_eq = new_child
3200 else
3201 abort
3202 end
3203 return
3204 end
3205 end
3206
3207 redef fun visit_all(v: Visitor)
3208 do
3209 v.visit(_n_eq)
3210 end
3211
3212 redef fun visit_all_reverse(v: Visitor)
3213 do
3214 v.visit(_n_eq)
3215 end
3216 end
3217 redef class ANeMethid
3218 redef fun n_ne=(n)
3219 do
3220 _n_ne = n
3221 n.parent = self
3222 end
3223
3224 private init empty_init do end
3225
3226 init init_anemethid (
3227 n_ne: nullable TNe
3228 )
3229 do
3230 empty_init
3231 _n_ne = n_ne.as(not null)
3232 n_ne.parent = self
3233 end
3234
3235 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3236 do
3237 if _n_ne == old_child then
3238 if new_child != null then
3239 new_child.parent = self
3240 assert new_child isa TNe
3241 _n_ne = new_child
3242 else
3243 abort
3244 end
3245 return
3246 end
3247 end
3248
3249 redef fun visit_all(v: Visitor)
3250 do
3251 v.visit(_n_ne)
3252 end
3253
3254 redef fun visit_all_reverse(v: Visitor)
3255 do
3256 v.visit(_n_ne)
3257 end
3258 end
3259 redef class ALeMethid
3260 redef fun n_le=(n)
3261 do
3262 _n_le = n
3263 n.parent = self
3264 end
3265
3266 private init empty_init do end
3267
3268 init init_alemethid (
3269 n_le: nullable TLe
3270 )
3271 do
3272 empty_init
3273 _n_le = n_le.as(not null)
3274 n_le.parent = self
3275 end
3276
3277 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3278 do
3279 if _n_le == old_child then
3280 if new_child != null then
3281 new_child.parent = self
3282 assert new_child isa TLe
3283 _n_le = new_child
3284 else
3285 abort
3286 end
3287 return
3288 end
3289 end
3290
3291 redef fun visit_all(v: Visitor)
3292 do
3293 v.visit(_n_le)
3294 end
3295
3296 redef fun visit_all_reverse(v: Visitor)
3297 do
3298 v.visit(_n_le)
3299 end
3300 end
3301 redef class AGeMethid
3302 redef fun n_ge=(n)
3303 do
3304 _n_ge = n
3305 n.parent = self
3306 end
3307
3308 private init empty_init do end
3309
3310 init init_agemethid (
3311 n_ge: nullable TGe
3312 )
3313 do
3314 empty_init
3315 _n_ge = n_ge.as(not null)
3316 n_ge.parent = self
3317 end
3318
3319 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3320 do
3321 if _n_ge == old_child then
3322 if new_child != null then
3323 new_child.parent = self
3324 assert new_child isa TGe
3325 _n_ge = new_child
3326 else
3327 abort
3328 end
3329 return
3330 end
3331 end
3332
3333 redef fun visit_all(v: Visitor)
3334 do
3335 v.visit(_n_ge)
3336 end
3337
3338 redef fun visit_all_reverse(v: Visitor)
3339 do
3340 v.visit(_n_ge)
3341 end
3342 end
3343 redef class ALtMethid
3344 redef fun n_lt=(n)
3345 do
3346 _n_lt = n
3347 n.parent = self
3348 end
3349
3350 private init empty_init do end
3351
3352 init init_altmethid (
3353 n_lt: nullable TLt
3354 )
3355 do
3356 empty_init
3357 _n_lt = n_lt.as(not null)
3358 n_lt.parent = self
3359 end
3360
3361 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3362 do
3363 if _n_lt == old_child then
3364 if new_child != null then
3365 new_child.parent = self
3366 assert new_child isa TLt
3367 _n_lt = new_child
3368 else
3369 abort
3370 end
3371 return
3372 end
3373 end
3374
3375 redef fun visit_all(v: Visitor)
3376 do
3377 v.visit(_n_lt)
3378 end
3379
3380 redef fun visit_all_reverse(v: Visitor)
3381 do
3382 v.visit(_n_lt)
3383 end
3384 end
3385 redef class AGtMethid
3386 redef fun n_gt=(n)
3387 do
3388 _n_gt = n
3389 n.parent = self
3390 end
3391
3392 private init empty_init do end
3393
3394 init init_agtmethid (
3395 n_gt: nullable TGt
3396 )
3397 do
3398 empty_init
3399 _n_gt = n_gt.as(not null)
3400 n_gt.parent = self
3401 end
3402
3403 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3404 do
3405 if _n_gt == old_child then
3406 if new_child != null then
3407 new_child.parent = self
3408 assert new_child isa TGt
3409 _n_gt = new_child
3410 else
3411 abort
3412 end
3413 return
3414 end
3415 end
3416
3417 redef fun visit_all(v: Visitor)
3418 do
3419 v.visit(_n_gt)
3420 end
3421
3422 redef fun visit_all_reverse(v: Visitor)
3423 do
3424 v.visit(_n_gt)
3425 end
3426 end
3427 redef class ABraMethid
3428 redef fun n_obra=(n)
3429 do
3430 _n_obra = n
3431 n.parent = self
3432 end
3433 redef fun n_cbra=(n)
3434 do
3435 _n_cbra = n
3436 n.parent = self
3437 end
3438
3439 private init empty_init do end
3440
3441 init init_abramethid (
3442 n_obra: nullable TObra ,
3443 n_cbra: nullable TCbra
3444 )
3445 do
3446 empty_init
3447 _n_obra = n_obra.as(not null)
3448 n_obra.parent = self
3449 _n_cbra = n_cbra.as(not null)
3450 n_cbra.parent = self
3451 end
3452
3453 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3454 do
3455 if _n_obra == old_child then
3456 if new_child != null then
3457 new_child.parent = self
3458 assert new_child isa TObra
3459 _n_obra = new_child
3460 else
3461 abort
3462 end
3463 return
3464 end
3465 if _n_cbra == old_child then
3466 if new_child != null then
3467 new_child.parent = self
3468 assert new_child isa TCbra
3469 _n_cbra = new_child
3470 else
3471 abort
3472 end
3473 return
3474 end
3475 end
3476
3477 redef fun visit_all(v: Visitor)
3478 do
3479 v.visit(_n_obra)
3480 v.visit(_n_cbra)
3481 end
3482
3483 redef fun visit_all_reverse(v: Visitor)
3484 do
3485 v.visit(_n_obra)
3486 v.visit(_n_cbra)
3487 end
3488 end
3489 redef class AStarshipMethid
3490 redef fun n_starship=(n)
3491 do
3492 _n_starship = n
3493 n.parent = self
3494 end
3495
3496 private init empty_init do end
3497
3498 init init_astarshipmethid (
3499 n_starship: nullable TStarship
3500 )
3501 do
3502 empty_init
3503 _n_starship = n_starship.as(not null)
3504 n_starship.parent = self
3505 end
3506
3507 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3508 do
3509 if _n_starship == old_child then
3510 if new_child != null then
3511 new_child.parent = self
3512 assert new_child isa TStarship
3513 _n_starship = new_child
3514 else
3515 abort
3516 end
3517 return
3518 end
3519 end
3520
3521 redef fun visit_all(v: Visitor)
3522 do
3523 v.visit(_n_starship)
3524 end
3525
3526 redef fun visit_all_reverse(v: Visitor)
3527 do
3528 v.visit(_n_starship)
3529 end
3530 end
3531 redef class AAssignMethid
3532 redef fun n_id=(n)
3533 do
3534 _n_id = n
3535 n.parent = self
3536 end
3537 redef fun n_assign=(n)
3538 do
3539 _n_assign = n
3540 n.parent = self
3541 end
3542
3543 private init empty_init do end
3544
3545 init init_aassignmethid (
3546 n_id: nullable TId ,
3547 n_assign: nullable TAssign
3548 )
3549 do
3550 empty_init
3551 _n_id = n_id.as(not null)
3552 n_id.parent = self
3553 _n_assign = n_assign.as(not null)
3554 n_assign.parent = self
3555 end
3556
3557 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3558 do
3559 if _n_id == old_child then
3560 if new_child != null then
3561 new_child.parent = self
3562 assert new_child isa TId
3563 _n_id = new_child
3564 else
3565 abort
3566 end
3567 return
3568 end
3569 if _n_assign == old_child then
3570 if new_child != null then
3571 new_child.parent = self
3572 assert new_child isa TAssign
3573 _n_assign = new_child
3574 else
3575 abort
3576 end
3577 return
3578 end
3579 end
3580
3581 redef fun visit_all(v: Visitor)
3582 do
3583 v.visit(_n_id)
3584 v.visit(_n_assign)
3585 end
3586
3587 redef fun visit_all_reverse(v: Visitor)
3588 do
3589 v.visit(_n_id)
3590 v.visit(_n_assign)
3591 end
3592 end
3593 redef class ABraassignMethid
3594 redef fun n_obra=(n)
3595 do
3596 _n_obra = n
3597 n.parent = self
3598 end
3599 redef fun n_cbra=(n)
3600 do
3601 _n_cbra = n
3602 n.parent = self
3603 end
3604 redef fun n_assign=(n)
3605 do
3606 _n_assign = n
3607 n.parent = self
3608 end
3609
3610 private init empty_init do end
3611
3612 init init_abraassignmethid (
3613 n_obra: nullable TObra ,
3614 n_cbra: nullable TCbra ,
3615 n_assign: nullable TAssign
3616 )
3617 do
3618 empty_init
3619 _n_obra = n_obra.as(not null)
3620 n_obra.parent = self
3621 _n_cbra = n_cbra.as(not null)
3622 n_cbra.parent = self
3623 _n_assign = n_assign.as(not null)
3624 n_assign.parent = self
3625 end
3626
3627 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3628 do
3629 if _n_obra == old_child then
3630 if new_child != null then
3631 new_child.parent = self
3632 assert new_child isa TObra
3633 _n_obra = new_child
3634 else
3635 abort
3636 end
3637 return
3638 end
3639 if _n_cbra == old_child then
3640 if new_child != null then
3641 new_child.parent = self
3642 assert new_child isa TCbra
3643 _n_cbra = new_child
3644 else
3645 abort
3646 end
3647 return
3648 end
3649 if _n_assign == old_child then
3650 if new_child != null then
3651 new_child.parent = self
3652 assert new_child isa TAssign
3653 _n_assign = new_child
3654 else
3655 abort
3656 end
3657 return
3658 end
3659 end
3660
3661 redef fun visit_all(v: Visitor)
3662 do
3663 v.visit(_n_obra)
3664 v.visit(_n_cbra)
3665 v.visit(_n_assign)
3666 end
3667
3668 redef fun visit_all_reverse(v: Visitor)
3669 do
3670 v.visit(_n_obra)
3671 v.visit(_n_cbra)
3672 v.visit(_n_assign)
3673 end
3674 end
3675 redef class ASignature
3676 redef fun n_type=(n)
3677 do
3678 _n_type = n
3679 if n != null then
3680 n.parent = self
3681 end
3682 end
3683
3684 private init empty_init do end
3685
3686 init init_asignature (
3687 n_params: Collection[Object] , # Should be Collection[PParam]
3688 n_type: nullable PType ,
3689 n_closure_decls: Collection[Object] # Should be Collection[PClosureDecl]
3690 )
3691 do
3692 empty_init
3693 for n in n_params do
3694 assert n isa PParam
3695 _n_params.add(n)
3696 n.parent = self
3697 end
3698 _n_type = n_type
3699 if n_type != null then
3700 n_type.parent = self
3701 end
3702 for n in n_closure_decls do
3703 assert n isa PClosureDecl
3704 _n_closure_decls.add(n)
3705 n.parent = self
3706 end
3707 end
3708
3709 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3710 do
3711 for i in [0.._n_params.length[ do
3712 if _n_params[i] == old_child then
3713 if new_child != null then
3714 assert new_child isa PParam
3715 _n_params[i] = new_child
3716 new_child.parent = self
3717 else
3718 _n_params.remove_at(i)
3719 end
3720 return
3721 end
3722 end
3723 if _n_type == old_child then
3724 if new_child != null then
3725 new_child.parent = self
3726 assert new_child isa PType
3727 _n_type = new_child
3728 else
3729 _n_type = null
3730 end
3731 return
3732 end
3733 for i in [0.._n_closure_decls.length[ do
3734 if _n_closure_decls[i] == old_child then
3735 if new_child != null then
3736 assert new_child isa PClosureDecl
3737 _n_closure_decls[i] = new_child
3738 new_child.parent = self
3739 else
3740 _n_closure_decls.remove_at(i)
3741 end
3742 return
3743 end
3744 end
3745 end
3746
3747 redef fun visit_all(v: Visitor)
3748 do
3749 for n in _n_params do
3750 v.visit(n)
3751 end
3752 if _n_type != null then
3753 v.visit(_n_type.as(not null))
3754 end
3755 for n in _n_closure_decls do
3756 v.visit(n)
3757 end
3758 end
3759
3760 redef fun visit_all_reverse(v: Visitor)
3761 do
3762 do
3763 var i = _n_params.length
3764 while i >= 0 do
3765 v.visit(_n_params[i])
3766 i = i - 1
3767 end
3768 end
3769 if _n_type != null then
3770 v.visit(_n_type.as(not null))
3771 end
3772 do
3773 var i = _n_closure_decls.length
3774 while i >= 0 do
3775 v.visit(_n_closure_decls[i])
3776 i = i - 1
3777 end
3778 end
3779 end
3780 end
3781 redef class AParam
3782 redef fun n_id=(n)
3783 do
3784 _n_id = n
3785 n.parent = self
3786 end
3787 redef fun n_type=(n)
3788 do
3789 _n_type = n
3790 if n != null then
3791 n.parent = self
3792 end
3793 end
3794 redef fun n_dotdotdot=(n)
3795 do
3796 _n_dotdotdot = n
3797 if n != null then
3798 n.parent = self
3799 end
3800 end
3801
3802 private init empty_init do end
3803
3804 init init_aparam (
3805 n_id: nullable TId ,
3806 n_type: nullable PType ,
3807 n_dotdotdot: nullable TDotdotdot
3808 )
3809 do
3810 empty_init
3811 _n_id = n_id.as(not null)
3812 n_id.parent = self
3813 _n_type = n_type
3814 if n_type != null then
3815 n_type.parent = self
3816 end
3817 _n_dotdotdot = n_dotdotdot
3818 if n_dotdotdot != null then
3819 n_dotdotdot.parent = self
3820 end
3821 end
3822
3823 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3824 do
3825 if _n_id == old_child then
3826 if new_child != null then
3827 new_child.parent = self
3828 assert new_child isa TId
3829 _n_id = new_child
3830 else
3831 abort
3832 end
3833 return
3834 end
3835 if _n_type == old_child then
3836 if new_child != null then
3837 new_child.parent = self
3838 assert new_child isa PType
3839 _n_type = new_child
3840 else
3841 _n_type = null
3842 end
3843 return
3844 end
3845 if _n_dotdotdot == old_child then
3846 if new_child != null then
3847 new_child.parent = self
3848 assert new_child isa TDotdotdot
3849 _n_dotdotdot = new_child
3850 else
3851 _n_dotdotdot = null
3852 end
3853 return
3854 end
3855 end
3856
3857 redef fun visit_all(v: Visitor)
3858 do
3859 v.visit(_n_id)
3860 if _n_type != null then
3861 v.visit(_n_type.as(not null))
3862 end
3863 if _n_dotdotdot != null then
3864 v.visit(_n_dotdotdot.as(not null))
3865 end
3866 end
3867
3868 redef fun visit_all_reverse(v: Visitor)
3869 do
3870 v.visit(_n_id)
3871 if _n_type != null then
3872 v.visit(_n_type.as(not null))
3873 end
3874 if _n_dotdotdot != null then
3875 v.visit(_n_dotdotdot.as(not null))
3876 end
3877 end
3878 end
3879 redef class AClosureDecl
3880 redef fun n_kwwith=(n)
3881 do
3882 _n_kwwith = n
3883 n.parent = self
3884 end
3885 redef fun n_kwbreak=(n)
3886 do
3887 _n_kwbreak = n
3888 if n != null then
3889 n.parent = self
3890 end
3891 end
3892 redef fun n_id=(n)
3893 do
3894 _n_id = n
3895 n.parent = self
3896 end
3897 redef fun n_signature=(n)
3898 do
3899 _n_signature = n
3900 n.parent = self
3901 end
3902 redef fun n_expr=(n)
3903 do
3904 _n_expr = n
3905 if n != null then
3906 n.parent = self
3907 end
3908 end
3909
3910 private init empty_init do end
3911
3912 init init_aclosuredecl (
3913 n_kwwith: nullable TKwwith ,
3914 n_kwbreak: nullable TKwbreak ,
3915 n_id: nullable TId ,
3916 n_signature: nullable PSignature ,
3917 n_expr: nullable PExpr
3918 )
3919 do
3920 empty_init
3921 _n_kwwith = n_kwwith.as(not null)
3922 n_kwwith.parent = self
3923 _n_kwbreak = n_kwbreak
3924 if n_kwbreak != null then
3925 n_kwbreak.parent = self
3926 end
3927 _n_id = n_id.as(not null)
3928 n_id.parent = self
3929 _n_signature = n_signature.as(not null)
3930 n_signature.parent = self
3931 _n_expr = n_expr
3932 if n_expr != null then
3933 n_expr.parent = self
3934 end
3935 end
3936
3937 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
3938 do
3939 if _n_kwwith == old_child then
3940 if new_child != null then
3941 new_child.parent = self
3942 assert new_child isa TKwwith
3943 _n_kwwith = new_child
3944 else
3945 abort
3946 end
3947 return
3948 end
3949 if _n_kwbreak == old_child then
3950 if new_child != null then
3951 new_child.parent = self
3952 assert new_child isa TKwbreak
3953 _n_kwbreak = new_child
3954 else
3955 _n_kwbreak = null
3956 end
3957 return
3958 end
3959 if _n_id == old_child then
3960 if new_child != null then
3961 new_child.parent = self
3962 assert new_child isa TId
3963 _n_id = new_child
3964 else
3965 abort
3966 end
3967 return
3968 end
3969 if _n_signature == old_child then
3970 if new_child != null then
3971 new_child.parent = self
3972 assert new_child isa PSignature
3973 _n_signature = new_child
3974 else
3975 abort
3976 end
3977 return
3978 end
3979 if _n_expr == old_child then
3980 if new_child != null then
3981 new_child.parent = self
3982 assert new_child isa PExpr
3983 _n_expr = new_child
3984 else
3985 _n_expr = null
3986 end
3987 return
3988 end
3989 end
3990
3991 redef fun visit_all(v: Visitor)
3992 do
3993 v.visit(_n_kwwith)
3994 if _n_kwbreak != null then
3995 v.visit(_n_kwbreak.as(not null))
3996 end
3997 v.visit(_n_id)
3998 v.visit(_n_signature)
3999 if _n_expr != null then
4000 v.visit(_n_expr.as(not null))
4001 end
4002 end
4003
4004 redef fun visit_all_reverse(v: Visitor)
4005 do
4006 v.visit(_n_kwwith)
4007 if _n_kwbreak != null then
4008 v.visit(_n_kwbreak.as(not null))
4009 end
4010 v.visit(_n_id)
4011 v.visit(_n_signature)
4012 if _n_expr != null then
4013 v.visit(_n_expr.as(not null))
4014 end
4015 end
4016 end
4017 redef class AType
4018 redef fun n_kwnullable=(n)
4019 do
4020 _n_kwnullable = n
4021 if n != null then
4022 n.parent = self
4023 end
4024 end
4025 redef fun n_id=(n)
4026 do
4027 _n_id = n
4028 n.parent = self
4029 end
4030
4031 private init empty_init do end
4032
4033 init init_atype (
4034 n_kwnullable: nullable TKwnullable ,
4035 n_id: nullable TClassid ,
4036 n_types: Collection[Object] # Should be Collection[PType]
4037 )
4038 do
4039 empty_init
4040 _n_kwnullable = n_kwnullable
4041 if n_kwnullable != null then
4042 n_kwnullable.parent = self
4043 end
4044 _n_id = n_id.as(not null)
4045 n_id.parent = self
4046 for n in n_types do
4047 assert n isa PType
4048 _n_types.add(n)
4049 n.parent = self
4050 end
4051 end
4052
4053 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4054 do
4055 if _n_kwnullable == old_child then
4056 if new_child != null then
4057 new_child.parent = self
4058 assert new_child isa TKwnullable
4059 _n_kwnullable = new_child
4060 else
4061 _n_kwnullable = null
4062 end
4063 return
4064 end
4065 if _n_id == old_child then
4066 if new_child != null then
4067 new_child.parent = self
4068 assert new_child isa TClassid
4069 _n_id = new_child
4070 else
4071 abort
4072 end
4073 return
4074 end
4075 for i in [0.._n_types.length[ do
4076 if _n_types[i] == old_child then
4077 if new_child != null then
4078 assert new_child isa PType
4079 _n_types[i] = new_child
4080 new_child.parent = self
4081 else
4082 _n_types.remove_at(i)
4083 end
4084 return
4085 end
4086 end
4087 end
4088
4089 redef fun visit_all(v: Visitor)
4090 do
4091 if _n_kwnullable != null then
4092 v.visit(_n_kwnullable.as(not null))
4093 end
4094 v.visit(_n_id)
4095 for n in _n_types do
4096 v.visit(n)
4097 end
4098 end
4099
4100 redef fun visit_all_reverse(v: Visitor)
4101 do
4102 if _n_kwnullable != null then
4103 v.visit(_n_kwnullable.as(not null))
4104 end
4105 v.visit(_n_id)
4106 do
4107 var i = _n_types.length
4108 while i >= 0 do
4109 v.visit(_n_types[i])
4110 i = i - 1
4111 end
4112 end
4113 end
4114 end
4115 redef class ABlockExpr
4116
4117 private init empty_init do end
4118
4119 init init_ablockexpr (
4120 n_expr: Collection[Object] # Should be Collection[PExpr]
4121 )
4122 do
4123 empty_init
4124 for n in n_expr do
4125 assert n isa PExpr
4126 _n_expr.add(n)
4127 n.parent = self
4128 end
4129 end
4130
4131 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4132 do
4133 for i in [0.._n_expr.length[ do
4134 if _n_expr[i] == old_child then
4135 if new_child != null then
4136 assert new_child isa PExpr
4137 _n_expr[i] = new_child
4138 new_child.parent = self
4139 else
4140 _n_expr.remove_at(i)
4141 end
4142 return
4143 end
4144 end
4145 end
4146
4147 redef fun visit_all(v: Visitor)
4148 do
4149 for n in _n_expr do
4150 v.visit(n)
4151 end
4152 end
4153
4154 redef fun visit_all_reverse(v: Visitor)
4155 do
4156 do
4157 var i = _n_expr.length
4158 while i >= 0 do
4159 v.visit(_n_expr[i])
4160 i = i - 1
4161 end
4162 end
4163 end
4164 end
4165 redef class AVardeclExpr
4166 redef fun n_kwvar=(n)
4167 do
4168 _n_kwvar = n
4169 n.parent = self
4170 end
4171 redef fun n_id=(n)
4172 do
4173 _n_id = n
4174 n.parent = self
4175 end
4176 redef fun n_type=(n)
4177 do
4178 _n_type = n
4179 if n != null then
4180 n.parent = self
4181 end
4182 end
4183 redef fun n_assign=(n)
4184 do
4185 _n_assign = n
4186 if n != null then
4187 n.parent = self
4188 end
4189 end
4190 redef fun n_expr=(n)
4191 do
4192 _n_expr = n
4193 if n != null then
4194 n.parent = self
4195 end
4196 end
4197
4198 private init empty_init do end
4199
4200 init init_avardeclexpr (
4201 n_kwvar: nullable TKwvar ,
4202 n_id: nullable TId ,
4203 n_type: nullable PType ,
4204 n_assign: nullable TAssign ,
4205 n_expr: nullable PExpr
4206 )
4207 do
4208 empty_init
4209 _n_kwvar = n_kwvar.as(not null)
4210 n_kwvar.parent = self
4211 _n_id = n_id.as(not null)
4212 n_id.parent = self
4213 _n_type = n_type
4214 if n_type != null then
4215 n_type.parent = self
4216 end
4217 _n_assign = n_assign
4218 if n_assign != null then
4219 n_assign.parent = self
4220 end
4221 _n_expr = n_expr
4222 if n_expr != null then
4223 n_expr.parent = self
4224 end
4225 end
4226
4227 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4228 do
4229 if _n_kwvar == old_child then
4230 if new_child != null then
4231 new_child.parent = self
4232 assert new_child isa TKwvar
4233 _n_kwvar = new_child
4234 else
4235 abort
4236 end
4237 return
4238 end
4239 if _n_id == old_child then
4240 if new_child != null then
4241 new_child.parent = self
4242 assert new_child isa TId
4243 _n_id = new_child
4244 else
4245 abort
4246 end
4247 return
4248 end
4249 if _n_type == old_child then
4250 if new_child != null then
4251 new_child.parent = self
4252 assert new_child isa PType
4253 _n_type = new_child
4254 else
4255 _n_type = null
4256 end
4257 return
4258 end
4259 if _n_assign == old_child then
4260 if new_child != null then
4261 new_child.parent = self
4262 assert new_child isa TAssign
4263 _n_assign = new_child
4264 else
4265 _n_assign = null
4266 end
4267 return
4268 end
4269 if _n_expr == old_child then
4270 if new_child != null then
4271 new_child.parent = self
4272 assert new_child isa PExpr
4273 _n_expr = new_child
4274 else
4275 _n_expr = null
4276 end
4277 return
4278 end
4279 end
4280
4281 redef fun visit_all(v: Visitor)
4282 do
4283 v.visit(_n_kwvar)
4284 v.visit(_n_id)
4285 if _n_type != null then
4286 v.visit(_n_type.as(not null))
4287 end
4288 if _n_assign != null then
4289 v.visit(_n_assign.as(not null))
4290 end
4291 if _n_expr != null then
4292 v.visit(_n_expr.as(not null))
4293 end
4294 end
4295
4296 redef fun visit_all_reverse(v: Visitor)
4297 do
4298 v.visit(_n_kwvar)
4299 v.visit(_n_id)
4300 if _n_type != null then
4301 v.visit(_n_type.as(not null))
4302 end
4303 if _n_assign != null then
4304 v.visit(_n_assign.as(not null))
4305 end
4306 if _n_expr != null then
4307 v.visit(_n_expr.as(not null))
4308 end
4309 end
4310 end
4311 redef class AReturnExpr
4312 redef fun n_kwreturn=(n)
4313 do
4314 _n_kwreturn = n
4315 n.parent = self
4316 end
4317 redef fun n_expr=(n)
4318 do
4319 _n_expr = n
4320 if n != null then
4321 n.parent = self
4322 end
4323 end
4324
4325 private init empty_init do end
4326
4327 init init_areturnexpr (
4328 n_kwreturn: nullable TKwreturn ,
4329 n_expr: nullable PExpr
4330 )
4331 do
4332 empty_init
4333 _n_kwreturn = n_kwreturn.as(not null)
4334 n_kwreturn.parent = self
4335 _n_expr = n_expr
4336 if n_expr != null then
4337 n_expr.parent = self
4338 end
4339 end
4340
4341 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4342 do
4343 if _n_kwreturn == old_child then
4344 if new_child != null then
4345 new_child.parent = self
4346 assert new_child isa TKwreturn
4347 _n_kwreturn = new_child
4348 else
4349 abort
4350 end
4351 return
4352 end
4353 if _n_expr == old_child then
4354 if new_child != null then
4355 new_child.parent = self
4356 assert new_child isa PExpr
4357 _n_expr = new_child
4358 else
4359 _n_expr = null
4360 end
4361 return
4362 end
4363 end
4364
4365 redef fun visit_all(v: Visitor)
4366 do
4367 v.visit(_n_kwreturn)
4368 if _n_expr != null then
4369 v.visit(_n_expr.as(not null))
4370 end
4371 end
4372
4373 redef fun visit_all_reverse(v: Visitor)
4374 do
4375 v.visit(_n_kwreturn)
4376 if _n_expr != null then
4377 v.visit(_n_expr.as(not null))
4378 end
4379 end
4380 end
4381 redef class ABreakExpr
4382 redef fun n_kwbreak=(n)
4383 do
4384 _n_kwbreak = n
4385 n.parent = self
4386 end
4387 redef fun n_expr=(n)
4388 do
4389 _n_expr = n
4390 if n != null then
4391 n.parent = self
4392 end
4393 end
4394
4395 private init empty_init do end
4396
4397 init init_abreakexpr (
4398 n_kwbreak: nullable TKwbreak ,
4399 n_expr: nullable PExpr
4400 )
4401 do
4402 empty_init
4403 _n_kwbreak = n_kwbreak.as(not null)
4404 n_kwbreak.parent = self
4405 _n_expr = n_expr
4406 if n_expr != null then
4407 n_expr.parent = self
4408 end
4409 end
4410
4411 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4412 do
4413 if _n_kwbreak == old_child then
4414 if new_child != null then
4415 new_child.parent = self
4416 assert new_child isa TKwbreak
4417 _n_kwbreak = new_child
4418 else
4419 abort
4420 end
4421 return
4422 end
4423 if _n_expr == old_child then
4424 if new_child != null then
4425 new_child.parent = self
4426 assert new_child isa PExpr
4427 _n_expr = new_child
4428 else
4429 _n_expr = null
4430 end
4431 return
4432 end
4433 end
4434
4435 redef fun visit_all(v: Visitor)
4436 do
4437 v.visit(_n_kwbreak)
4438 if _n_expr != null then
4439 v.visit(_n_expr.as(not null))
4440 end
4441 end
4442
4443 redef fun visit_all_reverse(v: Visitor)
4444 do
4445 v.visit(_n_kwbreak)
4446 if _n_expr != null then
4447 v.visit(_n_expr.as(not null))
4448 end
4449 end
4450 end
4451 redef class AAbortExpr
4452 redef fun n_kwabort=(n)
4453 do
4454 _n_kwabort = n
4455 n.parent = self
4456 end
4457
4458 private init empty_init do end
4459
4460 init init_aabortexpr (
4461 n_kwabort: nullable TKwabort
4462 )
4463 do
4464 empty_init
4465 _n_kwabort = n_kwabort.as(not null)
4466 n_kwabort.parent = self
4467 end
4468
4469 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4470 do
4471 if _n_kwabort == old_child then
4472 if new_child != null then
4473 new_child.parent = self
4474 assert new_child isa TKwabort
4475 _n_kwabort = new_child
4476 else
4477 abort
4478 end
4479 return
4480 end
4481 end
4482
4483 redef fun visit_all(v: Visitor)
4484 do
4485 v.visit(_n_kwabort)
4486 end
4487
4488 redef fun visit_all_reverse(v: Visitor)
4489 do
4490 v.visit(_n_kwabort)
4491 end
4492 end
4493 redef class AContinueExpr
4494 redef fun n_kwcontinue=(n)
4495 do
4496 _n_kwcontinue = n
4497 n.parent = self
4498 end
4499 redef fun n_expr=(n)
4500 do
4501 _n_expr = n
4502 if n != null then
4503 n.parent = self
4504 end
4505 end
4506
4507 private init empty_init do end
4508
4509 init init_acontinueexpr (
4510 n_kwcontinue: nullable TKwcontinue ,
4511 n_expr: nullable PExpr
4512 )
4513 do
4514 empty_init
4515 _n_kwcontinue = n_kwcontinue.as(not null)
4516 n_kwcontinue.parent = self
4517 _n_expr = n_expr
4518 if n_expr != null then
4519 n_expr.parent = self
4520 end
4521 end
4522
4523 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4524 do
4525 if _n_kwcontinue == old_child then
4526 if new_child != null then
4527 new_child.parent = self
4528 assert new_child isa TKwcontinue
4529 _n_kwcontinue = new_child
4530 else
4531 abort
4532 end
4533 return
4534 end
4535 if _n_expr == old_child then
4536 if new_child != null then
4537 new_child.parent = self
4538 assert new_child isa PExpr
4539 _n_expr = new_child
4540 else
4541 _n_expr = null
4542 end
4543 return
4544 end
4545 end
4546
4547 redef fun visit_all(v: Visitor)
4548 do
4549 v.visit(_n_kwcontinue)
4550 if _n_expr != null then
4551 v.visit(_n_expr.as(not null))
4552 end
4553 end
4554
4555 redef fun visit_all_reverse(v: Visitor)
4556 do
4557 v.visit(_n_kwcontinue)
4558 if _n_expr != null then
4559 v.visit(_n_expr.as(not null))
4560 end
4561 end
4562 end
4563 redef class ADoExpr
4564 redef fun n_kwdo=(n)
4565 do
4566 _n_kwdo = n
4567 n.parent = self
4568 end
4569 redef fun n_block=(n)
4570 do
4571 _n_block = n
4572 if n != null then
4573 n.parent = self
4574 end
4575 end
4576
4577 private init empty_init do end
4578
4579 init init_adoexpr (
4580 n_kwdo: nullable TKwdo ,
4581 n_block: nullable PExpr
4582 )
4583 do
4584 empty_init
4585 _n_kwdo = n_kwdo.as(not null)
4586 n_kwdo.parent = self
4587 _n_block = n_block
4588 if n_block != null then
4589 n_block.parent = self
4590 end
4591 end
4592
4593 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4594 do
4595 if _n_kwdo == old_child then
4596 if new_child != null then
4597 new_child.parent = self
4598 assert new_child isa TKwdo
4599 _n_kwdo = new_child
4600 else
4601 abort
4602 end
4603 return
4604 end
4605 if _n_block == old_child then
4606 if new_child != null then
4607 new_child.parent = self
4608 assert new_child isa PExpr
4609 _n_block = new_child
4610 else
4611 _n_block = null
4612 end
4613 return
4614 end
4615 end
4616
4617 redef fun visit_all(v: Visitor)
4618 do
4619 v.visit(_n_kwdo)
4620 if _n_block != null then
4621 v.visit(_n_block.as(not null))
4622 end
4623 end
4624
4625 redef fun visit_all_reverse(v: Visitor)
4626 do
4627 v.visit(_n_kwdo)
4628 if _n_block != null then
4629 v.visit(_n_block.as(not null))
4630 end
4631 end
4632 end
4633 redef class AIfExpr
4634 redef fun n_kwif=(n)
4635 do
4636 _n_kwif = n
4637 n.parent = self
4638 end
4639 redef fun n_expr=(n)
4640 do
4641 _n_expr = n
4642 n.parent = self
4643 end
4644 redef fun n_then=(n)
4645 do
4646 _n_then = n
4647 if n != null then
4648 n.parent = self
4649 end
4650 end
4651 redef fun n_else=(n)
4652 do
4653 _n_else = n
4654 if n != null then
4655 n.parent = self
4656 end
4657 end
4658
4659 private init empty_init do end
4660
4661 init init_aifexpr (
4662 n_kwif: nullable TKwif ,
4663 n_expr: nullable PExpr ,
4664 n_then: nullable PExpr ,
4665 n_else: nullable PExpr
4666 )
4667 do
4668 empty_init
4669 _n_kwif = n_kwif.as(not null)
4670 n_kwif.parent = self
4671 _n_expr = n_expr.as(not null)
4672 n_expr.parent = self
4673 _n_then = n_then
4674 if n_then != null then
4675 n_then.parent = self
4676 end
4677 _n_else = n_else
4678 if n_else != null then
4679 n_else.parent = self
4680 end
4681 end
4682
4683 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4684 do
4685 if _n_kwif == old_child then
4686 if new_child != null then
4687 new_child.parent = self
4688 assert new_child isa TKwif
4689 _n_kwif = new_child
4690 else
4691 abort
4692 end
4693 return
4694 end
4695 if _n_expr == old_child then
4696 if new_child != null then
4697 new_child.parent = self
4698 assert new_child isa PExpr
4699 _n_expr = new_child
4700 else
4701 abort
4702 end
4703 return
4704 end
4705 if _n_then == old_child then
4706 if new_child != null then
4707 new_child.parent = self
4708 assert new_child isa PExpr
4709 _n_then = new_child
4710 else
4711 _n_then = null
4712 end
4713 return
4714 end
4715 if _n_else == old_child then
4716 if new_child != null then
4717 new_child.parent = self
4718 assert new_child isa PExpr
4719 _n_else = new_child
4720 else
4721 _n_else = null
4722 end
4723 return
4724 end
4725 end
4726
4727 redef fun visit_all(v: Visitor)
4728 do
4729 v.visit(_n_kwif)
4730 v.visit(_n_expr)
4731 if _n_then != null then
4732 v.visit(_n_then.as(not null))
4733 end
4734 if _n_else != null then
4735 v.visit(_n_else.as(not null))
4736 end
4737 end
4738
4739 redef fun visit_all_reverse(v: Visitor)
4740 do
4741 v.visit(_n_kwif)
4742 v.visit(_n_expr)
4743 if _n_then != null then
4744 v.visit(_n_then.as(not null))
4745 end
4746 if _n_else != null then
4747 v.visit(_n_else.as(not null))
4748 end
4749 end
4750 end
4751 redef class AIfexprExpr
4752 redef fun n_kwif=(n)
4753 do
4754 _n_kwif = n
4755 n.parent = self
4756 end
4757 redef fun n_expr=(n)
4758 do
4759 _n_expr = n
4760 n.parent = self
4761 end
4762 redef fun n_kwthen=(n)
4763 do
4764 _n_kwthen = n
4765 n.parent = self
4766 end
4767 redef fun n_then=(n)
4768 do
4769 _n_then = n
4770 n.parent = self
4771 end
4772 redef fun n_kwelse=(n)
4773 do
4774 _n_kwelse = n
4775 n.parent = self
4776 end
4777 redef fun n_else=(n)
4778 do
4779 _n_else = n
4780 n.parent = self
4781 end
4782
4783 private init empty_init do end
4784
4785 init init_aifexprexpr (
4786 n_kwif: nullable TKwif ,
4787 n_expr: nullable PExpr ,
4788 n_kwthen: nullable TKwthen ,
4789 n_then: nullable PExpr ,
4790 n_kwelse: nullable TKwelse ,
4791 n_else: nullable PExpr
4792 )
4793 do
4794 empty_init
4795 _n_kwif = n_kwif.as(not null)
4796 n_kwif.parent = self
4797 _n_expr = n_expr.as(not null)
4798 n_expr.parent = self
4799 _n_kwthen = n_kwthen.as(not null)
4800 n_kwthen.parent = self
4801 _n_then = n_then.as(not null)
4802 n_then.parent = self
4803 _n_kwelse = n_kwelse.as(not null)
4804 n_kwelse.parent = self
4805 _n_else = n_else.as(not null)
4806 n_else.parent = self
4807 end
4808
4809 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4810 do
4811 if _n_kwif == old_child then
4812 if new_child != null then
4813 new_child.parent = self
4814 assert new_child isa TKwif
4815 _n_kwif = new_child
4816 else
4817 abort
4818 end
4819 return
4820 end
4821 if _n_expr == old_child then
4822 if new_child != null then
4823 new_child.parent = self
4824 assert new_child isa PExpr
4825 _n_expr = new_child
4826 else
4827 abort
4828 end
4829 return
4830 end
4831 if _n_kwthen == old_child then
4832 if new_child != null then
4833 new_child.parent = self
4834 assert new_child isa TKwthen
4835 _n_kwthen = new_child
4836 else
4837 abort
4838 end
4839 return
4840 end
4841 if _n_then == old_child then
4842 if new_child != null then
4843 new_child.parent = self
4844 assert new_child isa PExpr
4845 _n_then = new_child
4846 else
4847 abort
4848 end
4849 return
4850 end
4851 if _n_kwelse == old_child then
4852 if new_child != null then
4853 new_child.parent = self
4854 assert new_child isa TKwelse
4855 _n_kwelse = new_child
4856 else
4857 abort
4858 end
4859 return
4860 end
4861 if _n_else == old_child then
4862 if new_child != null then
4863 new_child.parent = self
4864 assert new_child isa PExpr
4865 _n_else = new_child
4866 else
4867 abort
4868 end
4869 return
4870 end
4871 end
4872
4873 redef fun visit_all(v: Visitor)
4874 do
4875 v.visit(_n_kwif)
4876 v.visit(_n_expr)
4877 v.visit(_n_kwthen)
4878 v.visit(_n_then)
4879 v.visit(_n_kwelse)
4880 v.visit(_n_else)
4881 end
4882
4883 redef fun visit_all_reverse(v: Visitor)
4884 do
4885 v.visit(_n_kwif)
4886 v.visit(_n_expr)
4887 v.visit(_n_kwthen)
4888 v.visit(_n_then)
4889 v.visit(_n_kwelse)
4890 v.visit(_n_else)
4891 end
4892 end
4893 redef class AWhileExpr
4894 redef fun n_kwwhile=(n)
4895 do
4896 _n_kwwhile = n
4897 n.parent = self
4898 end
4899 redef fun n_expr=(n)
4900 do
4901 _n_expr = n
4902 n.parent = self
4903 end
4904 redef fun n_kwdo=(n)
4905 do
4906 _n_kwdo = n
4907 n.parent = self
4908 end
4909 redef fun n_block=(n)
4910 do
4911 _n_block = n
4912 if n != null then
4913 n.parent = self
4914 end
4915 end
4916
4917 private init empty_init do end
4918
4919 init init_awhileexpr (
4920 n_kwwhile: nullable TKwwhile ,
4921 n_expr: nullable PExpr ,
4922 n_kwdo: nullable TKwdo ,
4923 n_block: nullable PExpr
4924 )
4925 do
4926 empty_init
4927 _n_kwwhile = n_kwwhile.as(not null)
4928 n_kwwhile.parent = self
4929 _n_expr = n_expr.as(not null)
4930 n_expr.parent = self
4931 _n_kwdo = n_kwdo.as(not null)
4932 n_kwdo.parent = self
4933 _n_block = n_block
4934 if n_block != null then
4935 n_block.parent = self
4936 end
4937 end
4938
4939 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
4940 do
4941 if _n_kwwhile == old_child then
4942 if new_child != null then
4943 new_child.parent = self
4944 assert new_child isa TKwwhile
4945 _n_kwwhile = new_child
4946 else
4947 abort
4948 end
4949 return
4950 end
4951 if _n_expr == old_child then
4952 if new_child != null then
4953 new_child.parent = self
4954 assert new_child isa PExpr
4955 _n_expr = new_child
4956 else
4957 abort
4958 end
4959 return
4960 end
4961 if _n_kwdo == old_child then
4962 if new_child != null then
4963 new_child.parent = self
4964 assert new_child isa TKwdo
4965 _n_kwdo = new_child
4966 else
4967 abort
4968 end
4969 return
4970 end
4971 if _n_block == old_child then
4972 if new_child != null then
4973 new_child.parent = self
4974 assert new_child isa PExpr
4975 _n_block = new_child
4976 else
4977 _n_block = null
4978 end
4979 return
4980 end
4981 end
4982
4983 redef fun visit_all(v: Visitor)
4984 do
4985 v.visit(_n_kwwhile)
4986 v.visit(_n_expr)
4987 v.visit(_n_kwdo)
4988 if _n_block != null then
4989 v.visit(_n_block.as(not null))
4990 end
4991 end
4992
4993 redef fun visit_all_reverse(v: Visitor)
4994 do
4995 v.visit(_n_kwwhile)
4996 v.visit(_n_expr)
4997 v.visit(_n_kwdo)
4998 if _n_block != null then
4999 v.visit(_n_block.as(not null))
5000 end
5001 end
5002 end
5003 redef class AForExpr
5004 redef fun n_kwfor=(n)
5005 do
5006 _n_kwfor = n
5007 n.parent = self
5008 end
5009 redef fun n_id=(n)
5010 do
5011 _n_id = n
5012 n.parent = self
5013 end
5014 redef fun n_expr=(n)
5015 do
5016 _n_expr = n
5017 n.parent = self
5018 end
5019 redef fun n_kwdo=(n)
5020 do
5021 _n_kwdo = n
5022 n.parent = self
5023 end
5024 redef fun n_block=(n)
5025 do
5026 _n_block = n
5027 if n != null then
5028 n.parent = self
5029 end
5030 end
5031
5032 private init empty_init do end
5033
5034 init init_aforexpr (
5035 n_kwfor: nullable TKwfor ,
5036 n_id: nullable TId ,
5037 n_expr: nullable PExpr ,
5038 n_kwdo: nullable TKwdo ,
5039 n_block: nullable PExpr
5040 )
5041 do
5042 empty_init
5043 _n_kwfor = n_kwfor.as(not null)
5044 n_kwfor.parent = self
5045 _n_id = n_id.as(not null)
5046 n_id.parent = self
5047 _n_expr = n_expr.as(not null)
5048 n_expr.parent = self
5049 _n_kwdo = n_kwdo.as(not null)
5050 n_kwdo.parent = self
5051 _n_block = n_block
5052 if n_block != null then
5053 n_block.parent = self
5054 end
5055 end
5056
5057 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5058 do
5059 if _n_kwfor == old_child then
5060 if new_child != null then
5061 new_child.parent = self
5062 assert new_child isa TKwfor
5063 _n_kwfor = new_child
5064 else
5065 abort
5066 end
5067 return
5068 end
5069 if _n_id == old_child then
5070 if new_child != null then
5071 new_child.parent = self
5072 assert new_child isa TId
5073 _n_id = new_child
5074 else
5075 abort
5076 end
5077 return
5078 end
5079 if _n_expr == old_child then
5080 if new_child != null then
5081 new_child.parent = self
5082 assert new_child isa PExpr
5083 _n_expr = new_child
5084 else
5085 abort
5086 end
5087 return
5088 end
5089 if _n_kwdo == old_child then
5090 if new_child != null then
5091 new_child.parent = self
5092 assert new_child isa TKwdo
5093 _n_kwdo = new_child
5094 else
5095 abort
5096 end
5097 return
5098 end
5099 if _n_block == old_child then
5100 if new_child != null then
5101 new_child.parent = self
5102 assert new_child isa PExpr
5103 _n_block = new_child
5104 else
5105 _n_block = null
5106 end
5107 return
5108 end
5109 end
5110
5111 redef fun visit_all(v: Visitor)
5112 do
5113 v.visit(_n_kwfor)
5114 v.visit(_n_id)
5115 v.visit(_n_expr)
5116 v.visit(_n_kwdo)
5117 if _n_block != null then
5118 v.visit(_n_block.as(not null))
5119 end
5120 end
5121
5122 redef fun visit_all_reverse(v: Visitor)
5123 do
5124 v.visit(_n_kwfor)
5125 v.visit(_n_id)
5126 v.visit(_n_expr)
5127 v.visit(_n_kwdo)
5128 if _n_block != null then
5129 v.visit(_n_block.as(not null))
5130 end
5131 end
5132 end
5133 redef class AAssertExpr
5134 redef fun n_kwassert=(n)
5135 do
5136 _n_kwassert = n
5137 n.parent = self
5138 end
5139 redef fun n_id=(n)
5140 do
5141 _n_id = n
5142 if n != null then
5143 n.parent = self
5144 end
5145 end
5146 redef fun n_expr=(n)
5147 do
5148 _n_expr = n
5149 n.parent = self
5150 end
5151
5152 private init empty_init do end
5153
5154 init init_aassertexpr (
5155 n_kwassert: nullable TKwassert ,
5156 n_id: nullable TId ,
5157 n_expr: nullable PExpr
5158 )
5159 do
5160 empty_init
5161 _n_kwassert = n_kwassert.as(not null)
5162 n_kwassert.parent = self
5163 _n_id = n_id
5164 if n_id != null then
5165 n_id.parent = self
5166 end
5167 _n_expr = n_expr.as(not null)
5168 n_expr.parent = self
5169 end
5170
5171 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5172 do
5173 if _n_kwassert == old_child then
5174 if new_child != null then
5175 new_child.parent = self
5176 assert new_child isa TKwassert
5177 _n_kwassert = new_child
5178 else
5179 abort
5180 end
5181 return
5182 end
5183 if _n_id == old_child then
5184 if new_child != null then
5185 new_child.parent = self
5186 assert new_child isa TId
5187 _n_id = new_child
5188 else
5189 _n_id = null
5190 end
5191 return
5192 end
5193 if _n_expr == old_child then
5194 if new_child != null then
5195 new_child.parent = self
5196 assert new_child isa PExpr
5197 _n_expr = new_child
5198 else
5199 abort
5200 end
5201 return
5202 end
5203 end
5204
5205 redef fun visit_all(v: Visitor)
5206 do
5207 v.visit(_n_kwassert)
5208 if _n_id != null then
5209 v.visit(_n_id.as(not null))
5210 end
5211 v.visit(_n_expr)
5212 end
5213
5214 redef fun visit_all_reverse(v: Visitor)
5215 do
5216 v.visit(_n_kwassert)
5217 if _n_id != null then
5218 v.visit(_n_id.as(not null))
5219 end
5220 v.visit(_n_expr)
5221 end
5222 end
5223 redef class AOnceExpr
5224 redef fun n_kwonce=(n)
5225 do
5226 _n_kwonce = n
5227 n.parent = self
5228 end
5229 redef fun n_expr=(n)
5230 do
5231 _n_expr = n
5232 n.parent = self
5233 end
5234
5235 private init empty_init do end
5236
5237 init init_aonceexpr (
5238 n_kwonce: nullable TKwonce ,
5239 n_expr: nullable PExpr
5240 )
5241 do
5242 empty_init
5243 _n_kwonce = n_kwonce.as(not null)
5244 n_kwonce.parent = self
5245 _n_expr = n_expr.as(not null)
5246 n_expr.parent = self
5247 end
5248
5249 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5250 do
5251 if _n_kwonce == old_child then
5252 if new_child != null then
5253 new_child.parent = self
5254 assert new_child isa TKwonce
5255 _n_kwonce = new_child
5256 else
5257 abort
5258 end
5259 return
5260 end
5261 if _n_expr == old_child then
5262 if new_child != null then
5263 new_child.parent = self
5264 assert new_child isa PExpr
5265 _n_expr = new_child
5266 else
5267 abort
5268 end
5269 return
5270 end
5271 end
5272
5273 redef fun visit_all(v: Visitor)
5274 do
5275 v.visit(_n_kwonce)
5276 v.visit(_n_expr)
5277 end
5278
5279 redef fun visit_all_reverse(v: Visitor)
5280 do
5281 v.visit(_n_kwonce)
5282 v.visit(_n_expr)
5283 end
5284 end
5285 redef class ASendExpr
5286 redef fun n_expr=(n)
5287 do
5288 _n_expr = n
5289 n.parent = self
5290 end
5291
5292 private init empty_init do end
5293
5294 init init_asendexpr (
5295 n_expr: nullable PExpr
5296 )
5297 do
5298 empty_init
5299 _n_expr = n_expr.as(not null)
5300 n_expr.parent = self
5301 end
5302
5303 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5304 do
5305 if _n_expr == old_child then
5306 if new_child != null then
5307 new_child.parent = self
5308 assert new_child isa PExpr
5309 _n_expr = new_child
5310 else
5311 abort
5312 end
5313 return
5314 end
5315 end
5316
5317 redef fun visit_all(v: Visitor)
5318 do
5319 v.visit(_n_expr)
5320 end
5321
5322 redef fun visit_all_reverse(v: Visitor)
5323 do
5324 v.visit(_n_expr)
5325 end
5326 end
5327 redef class ABinopExpr
5328 redef fun n_expr=(n)
5329 do
5330 _n_expr = n
5331 n.parent = self
5332 end
5333 redef fun n_expr2=(n)
5334 do
5335 _n_expr2 = n
5336 n.parent = self
5337 end
5338
5339 private init empty_init do end
5340
5341 init init_abinopexpr (
5342 n_expr: nullable PExpr ,
5343 n_expr2: nullable PExpr
5344 )
5345 do
5346 empty_init
5347 _n_expr = n_expr.as(not null)
5348 n_expr.parent = self
5349 _n_expr2 = n_expr2.as(not null)
5350 n_expr2.parent = self
5351 end
5352
5353 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5354 do
5355 if _n_expr == old_child then
5356 if new_child != null then
5357 new_child.parent = self
5358 assert new_child isa PExpr
5359 _n_expr = new_child
5360 else
5361 abort
5362 end
5363 return
5364 end
5365 if _n_expr2 == old_child then
5366 if new_child != null then
5367 new_child.parent = self
5368 assert new_child isa PExpr
5369 _n_expr2 = new_child
5370 else
5371 abort
5372 end
5373 return
5374 end
5375 end
5376
5377 redef fun visit_all(v: Visitor)
5378 do
5379 v.visit(_n_expr)
5380 v.visit(_n_expr2)
5381 end
5382
5383 redef fun visit_all_reverse(v: Visitor)
5384 do
5385 v.visit(_n_expr)
5386 v.visit(_n_expr2)
5387 end
5388 end
5389 redef class AOrExpr
5390 redef fun n_expr=(n)
5391 do
5392 _n_expr = n
5393 n.parent = self
5394 end
5395 redef fun n_expr2=(n)
5396 do
5397 _n_expr2 = n
5398 n.parent = self
5399 end
5400
5401 private init empty_init do end
5402
5403 init init_aorexpr (
5404 n_expr: nullable PExpr ,
5405 n_expr2: nullable PExpr
5406 )
5407 do
5408 empty_init
5409 _n_expr = n_expr.as(not null)
5410 n_expr.parent = self
5411 _n_expr2 = n_expr2.as(not null)
5412 n_expr2.parent = self
5413 end
5414
5415 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5416 do
5417 if _n_expr == old_child then
5418 if new_child != null then
5419 new_child.parent = self
5420 assert new_child isa PExpr
5421 _n_expr = new_child
5422 else
5423 abort
5424 end
5425 return
5426 end
5427 if _n_expr2 == old_child then
5428 if new_child != null then
5429 new_child.parent = self
5430 assert new_child isa PExpr
5431 _n_expr2 = new_child
5432 else
5433 abort
5434 end
5435 return
5436 end
5437 end
5438
5439 redef fun visit_all(v: Visitor)
5440 do
5441 v.visit(_n_expr)
5442 v.visit(_n_expr2)
5443 end
5444
5445 redef fun visit_all_reverse(v: Visitor)
5446 do
5447 v.visit(_n_expr)
5448 v.visit(_n_expr2)
5449 end
5450 end
5451 redef class AAndExpr
5452 redef fun n_expr=(n)
5453 do
5454 _n_expr = n
5455 n.parent = self
5456 end
5457 redef fun n_expr2=(n)
5458 do
5459 _n_expr2 = n
5460 n.parent = self
5461 end
5462
5463 private init empty_init do end
5464
5465 init init_aandexpr (
5466 n_expr: nullable PExpr ,
5467 n_expr2: nullable PExpr
5468 )
5469 do
5470 empty_init
5471 _n_expr = n_expr.as(not null)
5472 n_expr.parent = self
5473 _n_expr2 = n_expr2.as(not null)
5474 n_expr2.parent = self
5475 end
5476
5477 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5478 do
5479 if _n_expr == old_child then
5480 if new_child != null then
5481 new_child.parent = self
5482 assert new_child isa PExpr
5483 _n_expr = new_child
5484 else
5485 abort
5486 end
5487 return
5488 end
5489 if _n_expr2 == old_child then
5490 if new_child != null then
5491 new_child.parent = self
5492 assert new_child isa PExpr
5493 _n_expr2 = new_child
5494 else
5495 abort
5496 end
5497 return
5498 end
5499 end
5500
5501 redef fun visit_all(v: Visitor)
5502 do
5503 v.visit(_n_expr)
5504 v.visit(_n_expr2)
5505 end
5506
5507 redef fun visit_all_reverse(v: Visitor)
5508 do
5509 v.visit(_n_expr)
5510 v.visit(_n_expr2)
5511 end
5512 end
5513 redef class ANotExpr
5514 redef fun n_kwnot=(n)
5515 do
5516 _n_kwnot = n
5517 n.parent = self
5518 end
5519 redef fun n_expr=(n)
5520 do
5521 _n_expr = n
5522 n.parent = self
5523 end
5524
5525 private init empty_init do end
5526
5527 init init_anotexpr (
5528 n_kwnot: nullable TKwnot ,
5529 n_expr: nullable PExpr
5530 )
5531 do
5532 empty_init
5533 _n_kwnot = n_kwnot.as(not null)
5534 n_kwnot.parent = self
5535 _n_expr = n_expr.as(not null)
5536 n_expr.parent = self
5537 end
5538
5539 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5540 do
5541 if _n_kwnot == old_child then
5542 if new_child != null then
5543 new_child.parent = self
5544 assert new_child isa TKwnot
5545 _n_kwnot = new_child
5546 else
5547 abort
5548 end
5549 return
5550 end
5551 if _n_expr == old_child then
5552 if new_child != null then
5553 new_child.parent = self
5554 assert new_child isa PExpr
5555 _n_expr = new_child
5556 else
5557 abort
5558 end
5559 return
5560 end
5561 end
5562
5563 redef fun visit_all(v: Visitor)
5564 do
5565 v.visit(_n_kwnot)
5566 v.visit(_n_expr)
5567 end
5568
5569 redef fun visit_all_reverse(v: Visitor)
5570 do
5571 v.visit(_n_kwnot)
5572 v.visit(_n_expr)
5573 end
5574 end
5575 redef class AEqExpr
5576 redef fun n_expr=(n)
5577 do
5578 _n_expr = n
5579 n.parent = self
5580 end
5581 redef fun n_expr2=(n)
5582 do
5583 _n_expr2 = n
5584 n.parent = self
5585 end
5586
5587 private init empty_init do end
5588
5589 init init_aeqexpr (
5590 n_expr: nullable PExpr ,
5591 n_expr2: nullable PExpr
5592 )
5593 do
5594 empty_init
5595 _n_expr = n_expr.as(not null)
5596 n_expr.parent = self
5597 _n_expr2 = n_expr2.as(not null)
5598 n_expr2.parent = self
5599 end
5600
5601 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5602 do
5603 if _n_expr == old_child then
5604 if new_child != null then
5605 new_child.parent = self
5606 assert new_child isa PExpr
5607 _n_expr = new_child
5608 else
5609 abort
5610 end
5611 return
5612 end
5613 if _n_expr2 == old_child then
5614 if new_child != null then
5615 new_child.parent = self
5616 assert new_child isa PExpr
5617 _n_expr2 = new_child
5618 else
5619 abort
5620 end
5621 return
5622 end
5623 end
5624
5625 redef fun visit_all(v: Visitor)
5626 do
5627 v.visit(_n_expr)
5628 v.visit(_n_expr2)
5629 end
5630
5631 redef fun visit_all_reverse(v: Visitor)
5632 do
5633 v.visit(_n_expr)
5634 v.visit(_n_expr2)
5635 end
5636 end
5637 redef class AEeExpr
5638 redef fun n_expr=(n)
5639 do
5640 _n_expr = n
5641 n.parent = self
5642 end
5643 redef fun n_expr2=(n)
5644 do
5645 _n_expr2 = n
5646 n.parent = self
5647 end
5648
5649 private init empty_init do end
5650
5651 init init_aeeexpr (
5652 n_expr: nullable PExpr ,
5653 n_expr2: nullable PExpr
5654 )
5655 do
5656 empty_init
5657 _n_expr = n_expr.as(not null)
5658 n_expr.parent = self
5659 _n_expr2 = n_expr2.as(not null)
5660 n_expr2.parent = self
5661 end
5662
5663 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5664 do
5665 if _n_expr == old_child then
5666 if new_child != null then
5667 new_child.parent = self
5668 assert new_child isa PExpr
5669 _n_expr = new_child
5670 else
5671 abort
5672 end
5673 return
5674 end
5675 if _n_expr2 == old_child then
5676 if new_child != null then
5677 new_child.parent = self
5678 assert new_child isa PExpr
5679 _n_expr2 = new_child
5680 else
5681 abort
5682 end
5683 return
5684 end
5685 end
5686
5687 redef fun visit_all(v: Visitor)
5688 do
5689 v.visit(_n_expr)
5690 v.visit(_n_expr2)
5691 end
5692
5693 redef fun visit_all_reverse(v: Visitor)
5694 do
5695 v.visit(_n_expr)
5696 v.visit(_n_expr2)
5697 end
5698 end
5699 redef class ANeExpr
5700 redef fun n_expr=(n)
5701 do
5702 _n_expr = n
5703 n.parent = self
5704 end
5705 redef fun n_expr2=(n)
5706 do
5707 _n_expr2 = n
5708 n.parent = self
5709 end
5710
5711 private init empty_init do end
5712
5713 init init_aneexpr (
5714 n_expr: nullable PExpr ,
5715 n_expr2: nullable PExpr
5716 )
5717 do
5718 empty_init
5719 _n_expr = n_expr.as(not null)
5720 n_expr.parent = self
5721 _n_expr2 = n_expr2.as(not null)
5722 n_expr2.parent = self
5723 end
5724
5725 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5726 do
5727 if _n_expr == old_child then
5728 if new_child != null then
5729 new_child.parent = self
5730 assert new_child isa PExpr
5731 _n_expr = new_child
5732 else
5733 abort
5734 end
5735 return
5736 end
5737 if _n_expr2 == old_child then
5738 if new_child != null then
5739 new_child.parent = self
5740 assert new_child isa PExpr
5741 _n_expr2 = new_child
5742 else
5743 abort
5744 end
5745 return
5746 end
5747 end
5748
5749 redef fun visit_all(v: Visitor)
5750 do
5751 v.visit(_n_expr)
5752 v.visit(_n_expr2)
5753 end
5754
5755 redef fun visit_all_reverse(v: Visitor)
5756 do
5757 v.visit(_n_expr)
5758 v.visit(_n_expr2)
5759 end
5760 end
5761 redef class ALtExpr
5762 redef fun n_expr=(n)
5763 do
5764 _n_expr = n
5765 n.parent = self
5766 end
5767 redef fun n_expr2=(n)
5768 do
5769 _n_expr2 = n
5770 n.parent = self
5771 end
5772
5773 private init empty_init do end
5774
5775 init init_altexpr (
5776 n_expr: nullable PExpr ,
5777 n_expr2: nullable PExpr
5778 )
5779 do
5780 empty_init
5781 _n_expr = n_expr.as(not null)
5782 n_expr.parent = self
5783 _n_expr2 = n_expr2.as(not null)
5784 n_expr2.parent = self
5785 end
5786
5787 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5788 do
5789 if _n_expr == old_child then
5790 if new_child != null then
5791 new_child.parent = self
5792 assert new_child isa PExpr
5793 _n_expr = new_child
5794 else
5795 abort
5796 end
5797 return
5798 end
5799 if _n_expr2 == old_child then
5800 if new_child != null then
5801 new_child.parent = self
5802 assert new_child isa PExpr
5803 _n_expr2 = new_child
5804 else
5805 abort
5806 end
5807 return
5808 end
5809 end
5810
5811 redef fun visit_all(v: Visitor)
5812 do
5813 v.visit(_n_expr)
5814 v.visit(_n_expr2)
5815 end
5816
5817 redef fun visit_all_reverse(v: Visitor)
5818 do
5819 v.visit(_n_expr)
5820 v.visit(_n_expr2)
5821 end
5822 end
5823 redef class ALeExpr
5824 redef fun n_expr=(n)
5825 do
5826 _n_expr = n
5827 n.parent = self
5828 end
5829 redef fun n_expr2=(n)
5830 do
5831 _n_expr2 = n
5832 n.parent = self
5833 end
5834
5835 private init empty_init do end
5836
5837 init init_aleexpr (
5838 n_expr: nullable PExpr ,
5839 n_expr2: nullable PExpr
5840 )
5841 do
5842 empty_init
5843 _n_expr = n_expr.as(not null)
5844 n_expr.parent = self
5845 _n_expr2 = n_expr2.as(not null)
5846 n_expr2.parent = self
5847 end
5848
5849 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5850 do
5851 if _n_expr == old_child then
5852 if new_child != null then
5853 new_child.parent = self
5854 assert new_child isa PExpr
5855 _n_expr = new_child
5856 else
5857 abort
5858 end
5859 return
5860 end
5861 if _n_expr2 == old_child then
5862 if new_child != null then
5863 new_child.parent = self
5864 assert new_child isa PExpr
5865 _n_expr2 = new_child
5866 else
5867 abort
5868 end
5869 return
5870 end
5871 end
5872
5873 redef fun visit_all(v: Visitor)
5874 do
5875 v.visit(_n_expr)
5876 v.visit(_n_expr2)
5877 end
5878
5879 redef fun visit_all_reverse(v: Visitor)
5880 do
5881 v.visit(_n_expr)
5882 v.visit(_n_expr2)
5883 end
5884 end
5885 redef class AGtExpr
5886 redef fun n_expr=(n)
5887 do
5888 _n_expr = n
5889 n.parent = self
5890 end
5891 redef fun n_expr2=(n)
5892 do
5893 _n_expr2 = n
5894 n.parent = self
5895 end
5896
5897 private init empty_init do end
5898
5899 init init_agtexpr (
5900 n_expr: nullable PExpr ,
5901 n_expr2: nullable PExpr
5902 )
5903 do
5904 empty_init
5905 _n_expr = n_expr.as(not null)
5906 n_expr.parent = self
5907 _n_expr2 = n_expr2.as(not null)
5908 n_expr2.parent = self
5909 end
5910
5911 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5912 do
5913 if _n_expr == old_child then
5914 if new_child != null then
5915 new_child.parent = self
5916 assert new_child isa PExpr
5917 _n_expr = new_child
5918 else
5919 abort
5920 end
5921 return
5922 end
5923 if _n_expr2 == old_child then
5924 if new_child != null then
5925 new_child.parent = self
5926 assert new_child isa PExpr
5927 _n_expr2 = new_child
5928 else
5929 abort
5930 end
5931 return
5932 end
5933 end
5934
5935 redef fun visit_all(v: Visitor)
5936 do
5937 v.visit(_n_expr)
5938 v.visit(_n_expr2)
5939 end
5940
5941 redef fun visit_all_reverse(v: Visitor)
5942 do
5943 v.visit(_n_expr)
5944 v.visit(_n_expr2)
5945 end
5946 end
5947 redef class AGeExpr
5948 redef fun n_expr=(n)
5949 do
5950 _n_expr = n
5951 n.parent = self
5952 end
5953 redef fun n_expr2=(n)
5954 do
5955 _n_expr2 = n
5956 n.parent = self
5957 end
5958
5959 private init empty_init do end
5960
5961 init init_ageexpr (
5962 n_expr: nullable PExpr ,
5963 n_expr2: nullable PExpr
5964 )
5965 do
5966 empty_init
5967 _n_expr = n_expr.as(not null)
5968 n_expr.parent = self
5969 _n_expr2 = n_expr2.as(not null)
5970 n_expr2.parent = self
5971 end
5972
5973 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
5974 do
5975 if _n_expr == old_child then
5976 if new_child != null then
5977 new_child.parent = self
5978 assert new_child isa PExpr
5979 _n_expr = new_child
5980 else
5981 abort
5982 end
5983 return
5984 end
5985 if _n_expr2 == old_child then
5986 if new_child != null then
5987 new_child.parent = self
5988 assert new_child isa PExpr
5989 _n_expr2 = new_child
5990 else
5991 abort
5992 end
5993 return
5994 end
5995 end
5996
5997 redef fun visit_all(v: Visitor)
5998 do
5999 v.visit(_n_expr)
6000 v.visit(_n_expr2)
6001 end
6002
6003 redef fun visit_all_reverse(v: Visitor)
6004 do
6005 v.visit(_n_expr)
6006 v.visit(_n_expr2)
6007 end
6008 end
6009 redef class AIsaExpr
6010 redef fun n_expr=(n)
6011 do
6012 _n_expr = n
6013 n.parent = self
6014 end
6015 redef fun n_type=(n)
6016 do
6017 _n_type = n
6018 n.parent = self
6019 end
6020
6021 private init empty_init do end
6022
6023 init init_aisaexpr (
6024 n_expr: nullable PExpr ,
6025 n_type: nullable PType
6026 )
6027 do
6028 empty_init
6029 _n_expr = n_expr.as(not null)
6030 n_expr.parent = self
6031 _n_type = n_type.as(not null)
6032 n_type.parent = self
6033 end
6034
6035 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6036 do
6037 if _n_expr == old_child then
6038 if new_child != null then
6039 new_child.parent = self
6040 assert new_child isa PExpr
6041 _n_expr = new_child
6042 else
6043 abort
6044 end
6045 return
6046 end
6047 if _n_type == old_child then
6048 if new_child != null then
6049 new_child.parent = self
6050 assert new_child isa PType
6051 _n_type = new_child
6052 else
6053 abort
6054 end
6055 return
6056 end
6057 end
6058
6059 redef fun visit_all(v: Visitor)
6060 do
6061 v.visit(_n_expr)
6062 v.visit(_n_type)
6063 end
6064
6065 redef fun visit_all_reverse(v: Visitor)
6066 do
6067 v.visit(_n_expr)
6068 v.visit(_n_type)
6069 end
6070 end
6071 redef class APlusExpr
6072 redef fun n_expr=(n)
6073 do
6074 _n_expr = n
6075 n.parent = self
6076 end
6077 redef fun n_expr2=(n)
6078 do
6079 _n_expr2 = n
6080 n.parent = self
6081 end
6082
6083 private init empty_init do end
6084
6085 init init_aplusexpr (
6086 n_expr: nullable PExpr ,
6087 n_expr2: nullable PExpr
6088 )
6089 do
6090 empty_init
6091 _n_expr = n_expr.as(not null)
6092 n_expr.parent = self
6093 _n_expr2 = n_expr2.as(not null)
6094 n_expr2.parent = self
6095 end
6096
6097 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6098 do
6099 if _n_expr == old_child then
6100 if new_child != null then
6101 new_child.parent = self
6102 assert new_child isa PExpr
6103 _n_expr = new_child
6104 else
6105 abort
6106 end
6107 return
6108 end
6109 if _n_expr2 == old_child then
6110 if new_child != null then
6111 new_child.parent = self
6112 assert new_child isa PExpr
6113 _n_expr2 = new_child
6114 else
6115 abort
6116 end
6117 return
6118 end
6119 end
6120
6121 redef fun visit_all(v: Visitor)
6122 do
6123 v.visit(_n_expr)
6124 v.visit(_n_expr2)
6125 end
6126
6127 redef fun visit_all_reverse(v: Visitor)
6128 do
6129 v.visit(_n_expr)
6130 v.visit(_n_expr2)
6131 end
6132 end
6133 redef class AMinusExpr
6134 redef fun n_expr=(n)
6135 do
6136 _n_expr = n
6137 n.parent = self
6138 end
6139 redef fun n_expr2=(n)
6140 do
6141 _n_expr2 = n
6142 n.parent = self
6143 end
6144
6145 private init empty_init do end
6146
6147 init init_aminusexpr (
6148 n_expr: nullable PExpr ,
6149 n_expr2: nullable PExpr
6150 )
6151 do
6152 empty_init
6153 _n_expr = n_expr.as(not null)
6154 n_expr.parent = self
6155 _n_expr2 = n_expr2.as(not null)
6156 n_expr2.parent = self
6157 end
6158
6159 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6160 do
6161 if _n_expr == old_child then
6162 if new_child != null then
6163 new_child.parent = self
6164 assert new_child isa PExpr
6165 _n_expr = new_child
6166 else
6167 abort
6168 end
6169 return
6170 end
6171 if _n_expr2 == old_child then
6172 if new_child != null then
6173 new_child.parent = self
6174 assert new_child isa PExpr
6175 _n_expr2 = new_child
6176 else
6177 abort
6178 end
6179 return
6180 end
6181 end
6182
6183 redef fun visit_all(v: Visitor)
6184 do
6185 v.visit(_n_expr)
6186 v.visit(_n_expr2)
6187 end
6188
6189 redef fun visit_all_reverse(v: Visitor)
6190 do
6191 v.visit(_n_expr)
6192 v.visit(_n_expr2)
6193 end
6194 end
6195 redef class AStarshipExpr
6196 redef fun n_expr=(n)
6197 do
6198 _n_expr = n
6199 n.parent = self
6200 end
6201 redef fun n_expr2=(n)
6202 do
6203 _n_expr2 = n
6204 n.parent = self
6205 end
6206
6207 private init empty_init do end
6208
6209 init init_astarshipexpr (
6210 n_expr: nullable PExpr ,
6211 n_expr2: nullable PExpr
6212 )
6213 do
6214 empty_init
6215 _n_expr = n_expr.as(not null)
6216 n_expr.parent = self
6217 _n_expr2 = n_expr2.as(not null)
6218 n_expr2.parent = self
6219 end
6220
6221 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6222 do
6223 if _n_expr == old_child then
6224 if new_child != null then
6225 new_child.parent = self
6226 assert new_child isa PExpr
6227 _n_expr = new_child
6228 else
6229 abort
6230 end
6231 return
6232 end
6233 if _n_expr2 == old_child then
6234 if new_child != null then
6235 new_child.parent = self
6236 assert new_child isa PExpr
6237 _n_expr2 = new_child
6238 else
6239 abort
6240 end
6241 return
6242 end
6243 end
6244
6245 redef fun visit_all(v: Visitor)
6246 do
6247 v.visit(_n_expr)
6248 v.visit(_n_expr2)
6249 end
6250
6251 redef fun visit_all_reverse(v: Visitor)
6252 do
6253 v.visit(_n_expr)
6254 v.visit(_n_expr2)
6255 end
6256 end
6257 redef class AStarExpr
6258 redef fun n_expr=(n)
6259 do
6260 _n_expr = n
6261 n.parent = self
6262 end
6263 redef fun n_expr2=(n)
6264 do
6265 _n_expr2 = n
6266 n.parent = self
6267 end
6268
6269 private init empty_init do end
6270
6271 init init_astarexpr (
6272 n_expr: nullable PExpr ,
6273 n_expr2: nullable PExpr
6274 )
6275 do
6276 empty_init
6277 _n_expr = n_expr.as(not null)
6278 n_expr.parent = self
6279 _n_expr2 = n_expr2.as(not null)
6280 n_expr2.parent = self
6281 end
6282
6283 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6284 do
6285 if _n_expr == old_child then
6286 if new_child != null then
6287 new_child.parent = self
6288 assert new_child isa PExpr
6289 _n_expr = new_child
6290 else
6291 abort
6292 end
6293 return
6294 end
6295 if _n_expr2 == old_child then
6296 if new_child != null then
6297 new_child.parent = self
6298 assert new_child isa PExpr
6299 _n_expr2 = new_child
6300 else
6301 abort
6302 end
6303 return
6304 end
6305 end
6306
6307 redef fun visit_all(v: Visitor)
6308 do
6309 v.visit(_n_expr)
6310 v.visit(_n_expr2)
6311 end
6312
6313 redef fun visit_all_reverse(v: Visitor)
6314 do
6315 v.visit(_n_expr)
6316 v.visit(_n_expr2)
6317 end
6318 end
6319 redef class ASlashExpr
6320 redef fun n_expr=(n)
6321 do
6322 _n_expr = n
6323 n.parent = self
6324 end
6325 redef fun n_expr2=(n)
6326 do
6327 _n_expr2 = n
6328 n.parent = self
6329 end
6330
6331 private init empty_init do end
6332
6333 init init_aslashexpr (
6334 n_expr: nullable PExpr ,
6335 n_expr2: nullable PExpr
6336 )
6337 do
6338 empty_init
6339 _n_expr = n_expr.as(not null)
6340 n_expr.parent = self
6341 _n_expr2 = n_expr2.as(not null)
6342 n_expr2.parent = self
6343 end
6344
6345 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6346 do
6347 if _n_expr == old_child then
6348 if new_child != null then
6349 new_child.parent = self
6350 assert new_child isa PExpr
6351 _n_expr = new_child
6352 else
6353 abort
6354 end
6355 return
6356 end
6357 if _n_expr2 == old_child then
6358 if new_child != null then
6359 new_child.parent = self
6360 assert new_child isa PExpr
6361 _n_expr2 = new_child
6362 else
6363 abort
6364 end
6365 return
6366 end
6367 end
6368
6369 redef fun visit_all(v: Visitor)
6370 do
6371 v.visit(_n_expr)
6372 v.visit(_n_expr2)
6373 end
6374
6375 redef fun visit_all_reverse(v: Visitor)
6376 do
6377 v.visit(_n_expr)
6378 v.visit(_n_expr2)
6379 end
6380 end
6381 redef class APercentExpr
6382 redef fun n_expr=(n)
6383 do
6384 _n_expr = n
6385 n.parent = self
6386 end
6387 redef fun n_expr2=(n)
6388 do
6389 _n_expr2 = n
6390 n.parent = self
6391 end
6392
6393 private init empty_init do end
6394
6395 init init_apercentexpr (
6396 n_expr: nullable PExpr ,
6397 n_expr2: nullable PExpr
6398 )
6399 do
6400 empty_init
6401 _n_expr = n_expr.as(not null)
6402 n_expr.parent = self
6403 _n_expr2 = n_expr2.as(not null)
6404 n_expr2.parent = self
6405 end
6406
6407 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6408 do
6409 if _n_expr == old_child then
6410 if new_child != null then
6411 new_child.parent = self
6412 assert new_child isa PExpr
6413 _n_expr = new_child
6414 else
6415 abort
6416 end
6417 return
6418 end
6419 if _n_expr2 == old_child then
6420 if new_child != null then
6421 new_child.parent = self
6422 assert new_child isa PExpr
6423 _n_expr2 = new_child
6424 else
6425 abort
6426 end
6427 return
6428 end
6429 end
6430
6431 redef fun visit_all(v: Visitor)
6432 do
6433 v.visit(_n_expr)
6434 v.visit(_n_expr2)
6435 end
6436
6437 redef fun visit_all_reverse(v: Visitor)
6438 do
6439 v.visit(_n_expr)
6440 v.visit(_n_expr2)
6441 end
6442 end
6443 redef class AUminusExpr
6444 redef fun n_minus=(n)
6445 do
6446 _n_minus = n
6447 n.parent = self
6448 end
6449 redef fun n_expr=(n)
6450 do
6451 _n_expr = n
6452 n.parent = self
6453 end
6454
6455 private init empty_init do end
6456
6457 init init_auminusexpr (
6458 n_minus: nullable TMinus ,
6459 n_expr: nullable PExpr
6460 )
6461 do
6462 empty_init
6463 _n_minus = n_minus.as(not null)
6464 n_minus.parent = self
6465 _n_expr = n_expr.as(not null)
6466 n_expr.parent = self
6467 end
6468
6469 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6470 do
6471 if _n_minus == old_child then
6472 if new_child != null then
6473 new_child.parent = self
6474 assert new_child isa TMinus
6475 _n_minus = new_child
6476 else
6477 abort
6478 end
6479 return
6480 end
6481 if _n_expr == old_child then
6482 if new_child != null then
6483 new_child.parent = self
6484 assert new_child isa PExpr
6485 _n_expr = new_child
6486 else
6487 abort
6488 end
6489 return
6490 end
6491 end
6492
6493 redef fun visit_all(v: Visitor)
6494 do
6495 v.visit(_n_minus)
6496 v.visit(_n_expr)
6497 end
6498
6499 redef fun visit_all_reverse(v: Visitor)
6500 do
6501 v.visit(_n_minus)
6502 v.visit(_n_expr)
6503 end
6504 end
6505 redef class ANewExpr
6506 redef fun n_kwnew=(n)
6507 do
6508 _n_kwnew = n
6509 n.parent = self
6510 end
6511 redef fun n_type=(n)
6512 do
6513 _n_type = n
6514 n.parent = self
6515 end
6516 redef fun n_id=(n)
6517 do
6518 _n_id = n
6519 if n != null then
6520 n.parent = self
6521 end
6522 end
6523
6524 private init empty_init do end
6525
6526 init init_anewexpr (
6527 n_kwnew: nullable TKwnew ,
6528 n_type: nullable PType ,
6529 n_id: nullable TId ,
6530 n_args: Collection[Object] # Should be Collection[PExpr]
6531 )
6532 do
6533 empty_init
6534 _n_kwnew = n_kwnew.as(not null)
6535 n_kwnew.parent = self
6536 _n_type = n_type.as(not null)
6537 n_type.parent = self
6538 _n_id = n_id
6539 if n_id != null then
6540 n_id.parent = self
6541 end
6542 for n in n_args do
6543 assert n isa PExpr
6544 _n_args.add(n)
6545 n.parent = self
6546 end
6547 end
6548
6549 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6550 do
6551 if _n_kwnew == old_child then
6552 if new_child != null then
6553 new_child.parent = self
6554 assert new_child isa TKwnew
6555 _n_kwnew = new_child
6556 else
6557 abort
6558 end
6559 return
6560 end
6561 if _n_type == old_child then
6562 if new_child != null then
6563 new_child.parent = self
6564 assert new_child isa PType
6565 _n_type = new_child
6566 else
6567 abort
6568 end
6569 return
6570 end
6571 if _n_id == old_child then
6572 if new_child != null then
6573 new_child.parent = self
6574 assert new_child isa TId
6575 _n_id = new_child
6576 else
6577 _n_id = null
6578 end
6579 return
6580 end
6581 for i in [0.._n_args.length[ do
6582 if _n_args[i] == old_child then
6583 if new_child != null then
6584 assert new_child isa PExpr
6585 _n_args[i] = new_child
6586 new_child.parent = self
6587 else
6588 _n_args.remove_at(i)
6589 end
6590 return
6591 end
6592 end
6593 end
6594
6595 redef fun visit_all(v: Visitor)
6596 do
6597 v.visit(_n_kwnew)
6598 v.visit(_n_type)
6599 if _n_id != null then
6600 v.visit(_n_id.as(not null))
6601 end
6602 for n in _n_args do
6603 v.visit(n)
6604 end
6605 end
6606
6607 redef fun visit_all_reverse(v: Visitor)
6608 do
6609 v.visit(_n_kwnew)
6610 v.visit(_n_type)
6611 if _n_id != null then
6612 v.visit(_n_id.as(not null))
6613 end
6614 do
6615 var i = _n_args.length
6616 while i >= 0 do
6617 v.visit(_n_args[i])
6618 i = i - 1
6619 end
6620 end
6621 end
6622 end
6623 redef class AAttrExpr
6624 redef fun n_expr=(n)
6625 do
6626 _n_expr = n
6627 n.parent = self
6628 end
6629 redef fun n_id=(n)
6630 do
6631 _n_id = n
6632 n.parent = self
6633 end
6634
6635 private init empty_init do end
6636
6637 init init_aattrexpr (
6638 n_expr: nullable PExpr ,
6639 n_id: nullable TAttrid
6640 )
6641 do
6642 empty_init
6643 _n_expr = n_expr.as(not null)
6644 n_expr.parent = self
6645 _n_id = n_id.as(not null)
6646 n_id.parent = self
6647 end
6648
6649 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6650 do
6651 if _n_expr == old_child then
6652 if new_child != null then
6653 new_child.parent = self
6654 assert new_child isa PExpr
6655 _n_expr = new_child
6656 else
6657 abort
6658 end
6659 return
6660 end
6661 if _n_id == old_child then
6662 if new_child != null then
6663 new_child.parent = self
6664 assert new_child isa TAttrid
6665 _n_id = new_child
6666 else
6667 abort
6668 end
6669 return
6670 end
6671 end
6672
6673 redef fun visit_all(v: Visitor)
6674 do
6675 v.visit(_n_expr)
6676 v.visit(_n_id)
6677 end
6678
6679 redef fun visit_all_reverse(v: Visitor)
6680 do
6681 v.visit(_n_expr)
6682 v.visit(_n_id)
6683 end
6684 end
6685 redef class AAttrAssignExpr
6686 redef fun n_expr=(n)
6687 do
6688 _n_expr = n
6689 n.parent = self
6690 end
6691 redef fun n_id=(n)
6692 do
6693 _n_id = n
6694 n.parent = self
6695 end
6696 redef fun n_assign=(n)
6697 do
6698 _n_assign = n
6699 n.parent = self
6700 end
6701 redef fun n_value=(n)
6702 do
6703 _n_value = n
6704 n.parent = self
6705 end
6706
6707 private init empty_init do end
6708
6709 init init_aattrassignexpr (
6710 n_expr: nullable PExpr ,
6711 n_id: nullable TAttrid ,
6712 n_assign: nullable TAssign ,
6713 n_value: nullable PExpr
6714 )
6715 do
6716 empty_init
6717 _n_expr = n_expr.as(not null)
6718 n_expr.parent = self
6719 _n_id = n_id.as(not null)
6720 n_id.parent = self
6721 _n_assign = n_assign.as(not null)
6722 n_assign.parent = self
6723 _n_value = n_value.as(not null)
6724 n_value.parent = self
6725 end
6726
6727 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6728 do
6729 if _n_expr == old_child then
6730 if new_child != null then
6731 new_child.parent = self
6732 assert new_child isa PExpr
6733 _n_expr = new_child
6734 else
6735 abort
6736 end
6737 return
6738 end
6739 if _n_id == old_child then
6740 if new_child != null then
6741 new_child.parent = self
6742 assert new_child isa TAttrid
6743 _n_id = new_child
6744 else
6745 abort
6746 end
6747 return
6748 end
6749 if _n_assign == old_child then
6750 if new_child != null then
6751 new_child.parent = self
6752 assert new_child isa TAssign
6753 _n_assign = new_child
6754 else
6755 abort
6756 end
6757 return
6758 end
6759 if _n_value == old_child then
6760 if new_child != null then
6761 new_child.parent = self
6762 assert new_child isa PExpr
6763 _n_value = new_child
6764 else
6765 abort
6766 end
6767 return
6768 end
6769 end
6770
6771 redef fun visit_all(v: Visitor)
6772 do
6773 v.visit(_n_expr)
6774 v.visit(_n_id)
6775 v.visit(_n_assign)
6776 v.visit(_n_value)
6777 end
6778
6779 redef fun visit_all_reverse(v: Visitor)
6780 do
6781 v.visit(_n_expr)
6782 v.visit(_n_id)
6783 v.visit(_n_assign)
6784 v.visit(_n_value)
6785 end
6786 end
6787 redef class AAttrReassignExpr
6788 redef fun n_expr=(n)
6789 do
6790 _n_expr = n
6791 n.parent = self
6792 end
6793 redef fun n_id=(n)
6794 do
6795 _n_id = n
6796 n.parent = self
6797 end
6798 redef fun n_assign_op=(n)
6799 do
6800 _n_assign_op = n
6801 n.parent = self
6802 end
6803 redef fun n_value=(n)
6804 do
6805 _n_value = n
6806 n.parent = self
6807 end
6808
6809 private init empty_init do end
6810
6811 init init_aattrreassignexpr (
6812 n_expr: nullable PExpr ,
6813 n_id: nullable TAttrid ,
6814 n_assign_op: nullable PAssignOp ,
6815 n_value: nullable PExpr
6816 )
6817 do
6818 empty_init
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 _n_assign_op = n_assign_op.as(not null)
6824 n_assign_op.parent = self
6825 _n_value = n_value.as(not null)
6826 n_value.parent = self
6827 end
6828
6829 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6830 do
6831 if _n_expr == old_child then
6832 if new_child != null then
6833 new_child.parent = self
6834 assert new_child isa PExpr
6835 _n_expr = new_child
6836 else
6837 abort
6838 end
6839 return
6840 end
6841 if _n_id == old_child then
6842 if new_child != null then
6843 new_child.parent = self
6844 assert new_child isa TAttrid
6845 _n_id = new_child
6846 else
6847 abort
6848 end
6849 return
6850 end
6851 if _n_assign_op == old_child then
6852 if new_child != null then
6853 new_child.parent = self
6854 assert new_child isa PAssignOp
6855 _n_assign_op = new_child
6856 else
6857 abort
6858 end
6859 return
6860 end
6861 if _n_value == old_child then
6862 if new_child != null then
6863 new_child.parent = self
6864 assert new_child isa PExpr
6865 _n_value = new_child
6866 else
6867 abort
6868 end
6869 return
6870 end
6871 end
6872
6873 redef fun visit_all(v: Visitor)
6874 do
6875 v.visit(_n_expr)
6876 v.visit(_n_id)
6877 v.visit(_n_assign_op)
6878 v.visit(_n_value)
6879 end
6880
6881 redef fun visit_all_reverse(v: Visitor)
6882 do
6883 v.visit(_n_expr)
6884 v.visit(_n_id)
6885 v.visit(_n_assign_op)
6886 v.visit(_n_value)
6887 end
6888 end
6889 redef class ACallExpr
6890 redef fun n_expr=(n)
6891 do
6892 _n_expr = n
6893 n.parent = self
6894 end
6895 redef fun n_id=(n)
6896 do
6897 _n_id = n
6898 n.parent = self
6899 end
6900
6901 private init empty_init do end
6902
6903 init init_acallexpr (
6904 n_expr: nullable PExpr ,
6905 n_id: nullable TId ,
6906 n_args: Collection[Object] , # Should be Collection[PExpr]
6907 n_closure_defs: Collection[Object] # Should be Collection[PClosureDef]
6908 )
6909 do
6910 empty_init
6911 _n_expr = n_expr.as(not null)
6912 n_expr.parent = self
6913 _n_id = n_id.as(not null)
6914 n_id.parent = self
6915 for n in n_args do
6916 assert n isa PExpr
6917 _n_args.add(n)
6918 n.parent = self
6919 end
6920 for n in n_closure_defs do
6921 assert n isa PClosureDef
6922 _n_closure_defs.add(n)
6923 n.parent = self
6924 end
6925 end
6926
6927 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
6928 do
6929 if _n_expr == old_child then
6930 if new_child != null then
6931 new_child.parent = self
6932 assert new_child isa PExpr
6933 _n_expr = new_child
6934 else
6935 abort
6936 end
6937 return
6938 end
6939 if _n_id == old_child then
6940 if new_child != null then
6941 new_child.parent = self
6942 assert new_child isa TId
6943 _n_id = new_child
6944 else
6945 abort
6946 end
6947 return
6948 end
6949 for i in [0.._n_args.length[ do
6950 if _n_args[i] == old_child then
6951 if new_child != null then
6952 assert new_child isa PExpr
6953 _n_args[i] = new_child
6954 new_child.parent = self
6955 else
6956 _n_args.remove_at(i)
6957 end
6958 return
6959 end
6960 end
6961 for i in [0.._n_closure_defs.length[ do
6962 if _n_closure_defs[i] == old_child then
6963 if new_child != null then
6964 assert new_child isa PClosureDef
6965 _n_closure_defs[i] = new_child
6966 new_child.parent = self
6967 else
6968 _n_closure_defs.remove_at(i)
6969 end
6970 return
6971 end
6972 end
6973 end
6974
6975 redef fun visit_all(v: Visitor)
6976 do
6977 v.visit(_n_expr)
6978 v.visit(_n_id)
6979 for n in _n_args do
6980 v.visit(n)
6981 end
6982 for n in _n_closure_defs do
6983 v.visit(n)
6984 end
6985 end
6986
6987 redef fun visit_all_reverse(v: Visitor)
6988 do
6989 v.visit(_n_expr)
6990 v.visit(_n_id)
6991 do
6992 var i = _n_args.length
6993 while i >= 0 do
6994 v.visit(_n_args[i])
6995 i = i - 1
6996 end
6997 end
6998 do
6999 var i = _n_closure_defs.length
7000 while i >= 0 do
7001 v.visit(_n_closure_defs[i])
7002 i = i - 1
7003 end
7004 end
7005 end
7006 end
7007 redef class ACallAssignExpr
7008 redef fun n_expr=(n)
7009 do
7010 _n_expr = n
7011 n.parent = self
7012 end
7013 redef fun n_id=(n)
7014 do
7015 _n_id = n
7016 n.parent = self
7017 end
7018 redef fun n_assign=(n)
7019 do
7020 _n_assign = n
7021 n.parent = self
7022 end
7023 redef fun n_value=(n)
7024 do
7025 _n_value = n
7026 n.parent = self
7027 end
7028
7029 private init empty_init do end
7030
7031 init init_acallassignexpr (
7032 n_expr: nullable PExpr ,
7033 n_id: nullable TId ,
7034 n_args: Collection[Object] , # Should be Collection[PExpr]
7035 n_assign: nullable TAssign ,
7036 n_value: nullable PExpr
7037 )
7038 do
7039 empty_init
7040 _n_expr = n_expr.as(not null)
7041 n_expr.parent = self
7042 _n_id = n_id.as(not null)
7043 n_id.parent = self
7044 for n in n_args do
7045 assert n isa PExpr
7046 _n_args.add(n)
7047 n.parent = self
7048 end
7049 _n_assign = n_assign.as(not null)
7050 n_assign.parent = self
7051 _n_value = n_value.as(not null)
7052 n_value.parent = self
7053 end
7054
7055 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7056 do
7057 if _n_expr == old_child then
7058 if new_child != null then
7059 new_child.parent = self
7060 assert new_child isa PExpr
7061 _n_expr = new_child
7062 else
7063 abort
7064 end
7065 return
7066 end
7067 if _n_id == old_child then
7068 if new_child != null then
7069 new_child.parent = self
7070 assert new_child isa TId
7071 _n_id = new_child
7072 else
7073 abort
7074 end
7075 return
7076 end
7077 for i in [0.._n_args.length[ do
7078 if _n_args[i] == old_child then
7079 if new_child != null then
7080 assert new_child isa PExpr
7081 _n_args[i] = new_child
7082 new_child.parent = self
7083 else
7084 _n_args.remove_at(i)
7085 end
7086 return
7087 end
7088 end
7089 if _n_assign == old_child then
7090 if new_child != null then
7091 new_child.parent = self
7092 assert new_child isa TAssign
7093 _n_assign = new_child
7094 else
7095 abort
7096 end
7097 return
7098 end
7099 if _n_value == old_child then
7100 if new_child != null then
7101 new_child.parent = self
7102 assert new_child isa PExpr
7103 _n_value = new_child
7104 else
7105 abort
7106 end
7107 return
7108 end
7109 end
7110
7111 redef fun visit_all(v: Visitor)
7112 do
7113 v.visit(_n_expr)
7114 v.visit(_n_id)
7115 for n in _n_args do
7116 v.visit(n)
7117 end
7118 v.visit(_n_assign)
7119 v.visit(_n_value)
7120 end
7121
7122 redef fun visit_all_reverse(v: Visitor)
7123 do
7124 v.visit(_n_expr)
7125 v.visit(_n_id)
7126 do
7127 var i = _n_args.length
7128 while i >= 0 do
7129 v.visit(_n_args[i])
7130 i = i - 1
7131 end
7132 end
7133 v.visit(_n_assign)
7134 v.visit(_n_value)
7135 end
7136 end
7137 redef class ACallReassignExpr
7138 redef fun n_expr=(n)
7139 do
7140 _n_expr = n
7141 n.parent = self
7142 end
7143 redef fun n_id=(n)
7144 do
7145 _n_id = n
7146 n.parent = self
7147 end
7148 redef fun n_assign_op=(n)
7149 do
7150 _n_assign_op = n
7151 n.parent = self
7152 end
7153 redef fun n_value=(n)
7154 do
7155 _n_value = n
7156 n.parent = self
7157 end
7158
7159 private init empty_init do end
7160
7161 init init_acallreassignexpr (
7162 n_expr: nullable PExpr ,
7163 n_id: nullable TId ,
7164 n_args: Collection[Object] , # Should be Collection[PExpr]
7165 n_assign_op: nullable PAssignOp ,
7166 n_value: nullable PExpr
7167 )
7168 do
7169 empty_init
7170 _n_expr = n_expr.as(not null)
7171 n_expr.parent = self
7172 _n_id = n_id.as(not null)
7173 n_id.parent = self
7174 for n in n_args do
7175 assert n isa PExpr
7176 _n_args.add(n)
7177 n.parent = self
7178 end
7179 _n_assign_op = n_assign_op.as(not null)
7180 n_assign_op.parent = self
7181 _n_value = n_value.as(not null)
7182 n_value.parent = self
7183 end
7184
7185 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7186 do
7187 if _n_expr == old_child then
7188 if new_child != null then
7189 new_child.parent = self
7190 assert new_child isa PExpr
7191 _n_expr = new_child
7192 else
7193 abort
7194 end
7195 return
7196 end
7197 if _n_id == old_child then
7198 if new_child != null then
7199 new_child.parent = self
7200 assert new_child isa TId
7201 _n_id = new_child
7202 else
7203 abort
7204 end
7205 return
7206 end
7207 for i in [0.._n_args.length[ do
7208 if _n_args[i] == old_child then
7209 if new_child != null then
7210 assert new_child isa PExpr
7211 _n_args[i] = new_child
7212 new_child.parent = self
7213 else
7214 _n_args.remove_at(i)
7215 end
7216 return
7217 end
7218 end
7219 if _n_assign_op == old_child then
7220 if new_child != null then
7221 new_child.parent = self
7222 assert new_child isa PAssignOp
7223 _n_assign_op = new_child
7224 else
7225 abort
7226 end
7227 return
7228 end
7229 if _n_value == old_child then
7230 if new_child != null then
7231 new_child.parent = self
7232 assert new_child isa PExpr
7233 _n_value = new_child
7234 else
7235 abort
7236 end
7237 return
7238 end
7239 end
7240
7241 redef fun visit_all(v: Visitor)
7242 do
7243 v.visit(_n_expr)
7244 v.visit(_n_id)
7245 for n in _n_args do
7246 v.visit(n)
7247 end
7248 v.visit(_n_assign_op)
7249 v.visit(_n_value)
7250 end
7251
7252 redef fun visit_all_reverse(v: Visitor)
7253 do
7254 v.visit(_n_expr)
7255 v.visit(_n_id)
7256 do
7257 var i = _n_args.length
7258 while i >= 0 do
7259 v.visit(_n_args[i])
7260 i = i - 1
7261 end
7262 end
7263 v.visit(_n_assign_op)
7264 v.visit(_n_value)
7265 end
7266 end
7267 redef class ASuperExpr
7268 redef fun n_qualified=(n)
7269 do
7270 _n_qualified = n
7271 if n != null then
7272 n.parent = self
7273 end
7274 end
7275 redef fun n_kwsuper=(n)
7276 do
7277 _n_kwsuper = n
7278 n.parent = self
7279 end
7280
7281 private init empty_init do end
7282
7283 init init_asuperexpr (
7284 n_qualified: nullable PQualified ,
7285 n_kwsuper: nullable TKwsuper ,
7286 n_args: Collection[Object] # Should be Collection[PExpr]
7287 )
7288 do
7289 empty_init
7290 _n_qualified = n_qualified
7291 if n_qualified != null then
7292 n_qualified.parent = self
7293 end
7294 _n_kwsuper = n_kwsuper.as(not null)
7295 n_kwsuper.parent = self
7296 for n in n_args do
7297 assert n isa PExpr
7298 _n_args.add(n)
7299 n.parent = self
7300 end
7301 end
7302
7303 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7304 do
7305 if _n_qualified == old_child then
7306 if new_child != null then
7307 new_child.parent = self
7308 assert new_child isa PQualified
7309 _n_qualified = new_child
7310 else
7311 _n_qualified = null
7312 end
7313 return
7314 end
7315 if _n_kwsuper == old_child then
7316 if new_child != null then
7317 new_child.parent = self
7318 assert new_child isa TKwsuper
7319 _n_kwsuper = new_child
7320 else
7321 abort
7322 end
7323 return
7324 end
7325 for i in [0.._n_args.length[ do
7326 if _n_args[i] == old_child then
7327 if new_child != null then
7328 assert new_child isa PExpr
7329 _n_args[i] = new_child
7330 new_child.parent = self
7331 else
7332 _n_args.remove_at(i)
7333 end
7334 return
7335 end
7336 end
7337 end
7338
7339 redef fun visit_all(v: Visitor)
7340 do
7341 if _n_qualified != null then
7342 v.visit(_n_qualified.as(not null))
7343 end
7344 v.visit(_n_kwsuper)
7345 for n in _n_args do
7346 v.visit(n)
7347 end
7348 end
7349
7350 redef fun visit_all_reverse(v: Visitor)
7351 do
7352 if _n_qualified != null then
7353 v.visit(_n_qualified.as(not null))
7354 end
7355 v.visit(_n_kwsuper)
7356 do
7357 var i = _n_args.length
7358 while i >= 0 do
7359 v.visit(_n_args[i])
7360 i = i - 1
7361 end
7362 end
7363 end
7364 end
7365 redef class AInitExpr
7366 redef fun n_expr=(n)
7367 do
7368 _n_expr = n
7369 n.parent = self
7370 end
7371 redef fun n_kwinit=(n)
7372 do
7373 _n_kwinit = n
7374 n.parent = self
7375 end
7376
7377 private init empty_init do end
7378
7379 init init_ainitexpr (
7380 n_expr: nullable PExpr ,
7381 n_kwinit: nullable TKwinit ,
7382 n_args: Collection[Object] # Should be Collection[PExpr]
7383 )
7384 do
7385 empty_init
7386 _n_expr = n_expr.as(not null)
7387 n_expr.parent = self
7388 _n_kwinit = n_kwinit.as(not null)
7389 n_kwinit.parent = self
7390 for n in n_args do
7391 assert n isa PExpr
7392 _n_args.add(n)
7393 n.parent = self
7394 end
7395 end
7396
7397 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7398 do
7399 if _n_expr == old_child then
7400 if new_child != null then
7401 new_child.parent = self
7402 assert new_child isa PExpr
7403 _n_expr = new_child
7404 else
7405 abort
7406 end
7407 return
7408 end
7409 if _n_kwinit == old_child then
7410 if new_child != null then
7411 new_child.parent = self
7412 assert new_child isa TKwinit
7413 _n_kwinit = new_child
7414 else
7415 abort
7416 end
7417 return
7418 end
7419 for i in [0.._n_args.length[ do
7420 if _n_args[i] == old_child then
7421 if new_child != null then
7422 assert new_child isa PExpr
7423 _n_args[i] = new_child
7424 new_child.parent = self
7425 else
7426 _n_args.remove_at(i)
7427 end
7428 return
7429 end
7430 end
7431 end
7432
7433 redef fun visit_all(v: Visitor)
7434 do
7435 v.visit(_n_expr)
7436 v.visit(_n_kwinit)
7437 for n in _n_args do
7438 v.visit(n)
7439 end
7440 end
7441
7442 redef fun visit_all_reverse(v: Visitor)
7443 do
7444 v.visit(_n_expr)
7445 v.visit(_n_kwinit)
7446 do
7447 var i = _n_args.length
7448 while i >= 0 do
7449 v.visit(_n_args[i])
7450 i = i - 1
7451 end
7452 end
7453 end
7454 end
7455 redef class ABraExpr
7456 redef fun n_expr=(n)
7457 do
7458 _n_expr = n
7459 n.parent = self
7460 end
7461
7462 private init empty_init do end
7463
7464 init init_abraexpr (
7465 n_expr: nullable PExpr ,
7466 n_args: Collection[Object] , # Should be Collection[PExpr]
7467 n_closure_defs: Collection[Object] # Should be Collection[PClosureDef]
7468 )
7469 do
7470 empty_init
7471 _n_expr = n_expr.as(not null)
7472 n_expr.parent = self
7473 for n in n_args do
7474 assert n isa PExpr
7475 _n_args.add(n)
7476 n.parent = self
7477 end
7478 for n in n_closure_defs do
7479 assert n isa PClosureDef
7480 _n_closure_defs.add(n)
7481 n.parent = self
7482 end
7483 end
7484
7485 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7486 do
7487 if _n_expr == old_child then
7488 if new_child != null then
7489 new_child.parent = self
7490 assert new_child isa PExpr
7491 _n_expr = new_child
7492 else
7493 abort
7494 end
7495 return
7496 end
7497 for i in [0.._n_args.length[ do
7498 if _n_args[i] == old_child then
7499 if new_child != null then
7500 assert new_child isa PExpr
7501 _n_args[i] = new_child
7502 new_child.parent = self
7503 else
7504 _n_args.remove_at(i)
7505 end
7506 return
7507 end
7508 end
7509 for i in [0.._n_closure_defs.length[ do
7510 if _n_closure_defs[i] == old_child then
7511 if new_child != null then
7512 assert new_child isa PClosureDef
7513 _n_closure_defs[i] = new_child
7514 new_child.parent = self
7515 else
7516 _n_closure_defs.remove_at(i)
7517 end
7518 return
7519 end
7520 end
7521 end
7522
7523 redef fun visit_all(v: Visitor)
7524 do
7525 v.visit(_n_expr)
7526 for n in _n_args do
7527 v.visit(n)
7528 end
7529 for n in _n_closure_defs do
7530 v.visit(n)
7531 end
7532 end
7533
7534 redef fun visit_all_reverse(v: Visitor)
7535 do
7536 v.visit(_n_expr)
7537 do
7538 var i = _n_args.length
7539 while i >= 0 do
7540 v.visit(_n_args[i])
7541 i = i - 1
7542 end
7543 end
7544 do
7545 var i = _n_closure_defs.length
7546 while i >= 0 do
7547 v.visit(_n_closure_defs[i])
7548 i = i - 1
7549 end
7550 end
7551 end
7552 end
7553 redef class ABraAssignExpr
7554 redef fun n_expr=(n)
7555 do
7556 _n_expr = n
7557 n.parent = self
7558 end
7559 redef fun n_assign=(n)
7560 do
7561 _n_assign = n
7562 n.parent = self
7563 end
7564 redef fun n_value=(n)
7565 do
7566 _n_value = n
7567 n.parent = self
7568 end
7569
7570 private init empty_init do end
7571
7572 init init_abraassignexpr (
7573 n_expr: nullable PExpr ,
7574 n_args: Collection[Object] , # Should be Collection[PExpr]
7575 n_assign: nullable TAssign ,
7576 n_value: nullable PExpr
7577 )
7578 do
7579 empty_init
7580 _n_expr = n_expr.as(not null)
7581 n_expr.parent = self
7582 for n in n_args do
7583 assert n isa PExpr
7584 _n_args.add(n)
7585 n.parent = self
7586 end
7587 _n_assign = n_assign.as(not null)
7588 n_assign.parent = self
7589 _n_value = n_value.as(not null)
7590 n_value.parent = self
7591 end
7592
7593 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7594 do
7595 if _n_expr == old_child then
7596 if new_child != null then
7597 new_child.parent = self
7598 assert new_child isa PExpr
7599 _n_expr = new_child
7600 else
7601 abort
7602 end
7603 return
7604 end
7605 for i in [0.._n_args.length[ do
7606 if _n_args[i] == old_child then
7607 if new_child != null then
7608 assert new_child isa PExpr
7609 _n_args[i] = new_child
7610 new_child.parent = self
7611 else
7612 _n_args.remove_at(i)
7613 end
7614 return
7615 end
7616 end
7617 if _n_assign == old_child then
7618 if new_child != null then
7619 new_child.parent = self
7620 assert new_child isa TAssign
7621 _n_assign = new_child
7622 else
7623 abort
7624 end
7625 return
7626 end
7627 if _n_value == old_child then
7628 if new_child != null then
7629 new_child.parent = self
7630 assert new_child isa PExpr
7631 _n_value = new_child
7632 else
7633 abort
7634 end
7635 return
7636 end
7637 end
7638
7639 redef fun visit_all(v: Visitor)
7640 do
7641 v.visit(_n_expr)
7642 for n in _n_args do
7643 v.visit(n)
7644 end
7645 v.visit(_n_assign)
7646 v.visit(_n_value)
7647 end
7648
7649 redef fun visit_all_reverse(v: Visitor)
7650 do
7651 v.visit(_n_expr)
7652 do
7653 var i = _n_args.length
7654 while i >= 0 do
7655 v.visit(_n_args[i])
7656 i = i - 1
7657 end
7658 end
7659 v.visit(_n_assign)
7660 v.visit(_n_value)
7661 end
7662 end
7663 redef class ABraReassignExpr
7664 redef fun n_expr=(n)
7665 do
7666 _n_expr = n
7667 n.parent = self
7668 end
7669 redef fun n_assign_op=(n)
7670 do
7671 _n_assign_op = n
7672 n.parent = self
7673 end
7674 redef fun n_value=(n)
7675 do
7676 _n_value = n
7677 n.parent = self
7678 end
7679
7680 private init empty_init do end
7681
7682 init init_abrareassignexpr (
7683 n_expr: nullable PExpr ,
7684 n_args: Collection[Object] , # Should be Collection[PExpr]
7685 n_assign_op: nullable PAssignOp ,
7686 n_value: nullable PExpr
7687 )
7688 do
7689 empty_init
7690 _n_expr = n_expr.as(not null)
7691 n_expr.parent = self
7692 for n in n_args do
7693 assert n isa PExpr
7694 _n_args.add(n)
7695 n.parent = self
7696 end
7697 _n_assign_op = n_assign_op.as(not null)
7698 n_assign_op.parent = self
7699 _n_value = n_value.as(not null)
7700 n_value.parent = self
7701 end
7702
7703 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7704 do
7705 if _n_expr == old_child then
7706 if new_child != null then
7707 new_child.parent = self
7708 assert new_child isa PExpr
7709 _n_expr = new_child
7710 else
7711 abort
7712 end
7713 return
7714 end
7715 for i in [0.._n_args.length[ do
7716 if _n_args[i] == old_child then
7717 if new_child != null then
7718 assert new_child isa PExpr
7719 _n_args[i] = new_child
7720 new_child.parent = self
7721 else
7722 _n_args.remove_at(i)
7723 end
7724 return
7725 end
7726 end
7727 if _n_assign_op == old_child then
7728 if new_child != null then
7729 new_child.parent = self
7730 assert new_child isa PAssignOp
7731 _n_assign_op = new_child
7732 else
7733 abort
7734 end
7735 return
7736 end
7737 if _n_value == old_child then
7738 if new_child != null then
7739 new_child.parent = self
7740 assert new_child isa PExpr
7741 _n_value = new_child
7742 else
7743 abort
7744 end
7745 return
7746 end
7747 end
7748
7749 redef fun visit_all(v: Visitor)
7750 do
7751 v.visit(_n_expr)
7752 for n in _n_args do
7753 v.visit(n)
7754 end
7755 v.visit(_n_assign_op)
7756 v.visit(_n_value)
7757 end
7758
7759 redef fun visit_all_reverse(v: Visitor)
7760 do
7761 v.visit(_n_expr)
7762 do
7763 var i = _n_args.length
7764 while i >= 0 do
7765 v.visit(_n_args[i])
7766 i = i - 1
7767 end
7768 end
7769 v.visit(_n_assign_op)
7770 v.visit(_n_value)
7771 end
7772 end
7773 redef class AClosureCallExpr
7774 redef fun n_id=(n)
7775 do
7776 _n_id = n
7777 n.parent = self
7778 end
7779
7780 private init empty_init do end
7781
7782 init init_aclosurecallexpr (
7783 n_id: nullable TId ,
7784 n_args: Collection[Object] , # Should be Collection[PExpr]
7785 n_closure_defs: Collection[Object] # Should be Collection[PClosureDef]
7786 )
7787 do
7788 empty_init
7789 _n_id = n_id.as(not null)
7790 n_id.parent = self
7791 for n in n_args do
7792 assert n isa PExpr
7793 _n_args.add(n)
7794 n.parent = self
7795 end
7796 for n in n_closure_defs do
7797 assert n isa PClosureDef
7798 _n_closure_defs.add(n)
7799 n.parent = self
7800 end
7801 end
7802
7803 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7804 do
7805 if _n_id == old_child then
7806 if new_child != null then
7807 new_child.parent = self
7808 assert new_child isa TId
7809 _n_id = new_child
7810 else
7811 abort
7812 end
7813 return
7814 end
7815 for i in [0.._n_args.length[ do
7816 if _n_args[i] == old_child then
7817 if new_child != null then
7818 assert new_child isa PExpr
7819 _n_args[i] = new_child
7820 new_child.parent = self
7821 else
7822 _n_args.remove_at(i)
7823 end
7824 return
7825 end
7826 end
7827 for i in [0.._n_closure_defs.length[ do
7828 if _n_closure_defs[i] == old_child then
7829 if new_child != null then
7830 assert new_child isa PClosureDef
7831 _n_closure_defs[i] = new_child
7832 new_child.parent = self
7833 else
7834 _n_closure_defs.remove_at(i)
7835 end
7836 return
7837 end
7838 end
7839 end
7840
7841 redef fun visit_all(v: Visitor)
7842 do
7843 v.visit(_n_id)
7844 for n in _n_args do
7845 v.visit(n)
7846 end
7847 for n in _n_closure_defs do
7848 v.visit(n)
7849 end
7850 end
7851
7852 redef fun visit_all_reverse(v: Visitor)
7853 do
7854 v.visit(_n_id)
7855 do
7856 var i = _n_args.length
7857 while i >= 0 do
7858 v.visit(_n_args[i])
7859 i = i - 1
7860 end
7861 end
7862 do
7863 var i = _n_closure_defs.length
7864 while i >= 0 do
7865 v.visit(_n_closure_defs[i])
7866 i = i - 1
7867 end
7868 end
7869 end
7870 end
7871 redef class AVarExpr
7872 redef fun n_id=(n)
7873 do
7874 _n_id = n
7875 n.parent = self
7876 end
7877
7878 private init empty_init do end
7879
7880 init init_avarexpr (
7881 n_id: nullable TId
7882 )
7883 do
7884 empty_init
7885 _n_id = n_id.as(not null)
7886 n_id.parent = self
7887 end
7888
7889 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7890 do
7891 if _n_id == old_child then
7892 if new_child != null then
7893 new_child.parent = self
7894 assert new_child isa TId
7895 _n_id = new_child
7896 else
7897 abort
7898 end
7899 return
7900 end
7901 end
7902
7903 redef fun visit_all(v: Visitor)
7904 do
7905 v.visit(_n_id)
7906 end
7907
7908 redef fun visit_all_reverse(v: Visitor)
7909 do
7910 v.visit(_n_id)
7911 end
7912 end
7913 redef class AVarAssignExpr
7914 redef fun n_id=(n)
7915 do
7916 _n_id = n
7917 n.parent = self
7918 end
7919 redef fun n_assign=(n)
7920 do
7921 _n_assign = n
7922 n.parent = self
7923 end
7924 redef fun n_value=(n)
7925 do
7926 _n_value = n
7927 n.parent = self
7928 end
7929
7930 private init empty_init do end
7931
7932 init init_avarassignexpr (
7933 n_id: nullable TId ,
7934 n_assign: nullable TAssign ,
7935 n_value: nullable PExpr
7936 )
7937 do
7938 empty_init
7939 _n_id = n_id.as(not null)
7940 n_id.parent = self
7941 _n_assign = n_assign.as(not null)
7942 n_assign.parent = self
7943 _n_value = n_value.as(not null)
7944 n_value.parent = self
7945 end
7946
7947 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
7948 do
7949 if _n_id == old_child then
7950 if new_child != null then
7951 new_child.parent = self
7952 assert new_child isa TId
7953 _n_id = new_child
7954 else
7955 abort
7956 end
7957 return
7958 end
7959 if _n_assign == old_child then
7960 if new_child != null then
7961 new_child.parent = self
7962 assert new_child isa TAssign
7963 _n_assign = new_child
7964 else
7965 abort
7966 end
7967 return
7968 end
7969 if _n_value == old_child then
7970 if new_child != null then
7971 new_child.parent = self
7972 assert new_child isa PExpr
7973 _n_value = new_child
7974 else
7975 abort
7976 end
7977 return
7978 end
7979 end
7980
7981 redef fun visit_all(v: Visitor)
7982 do
7983 v.visit(_n_id)
7984 v.visit(_n_assign)
7985 v.visit(_n_value)
7986 end
7987
7988 redef fun visit_all_reverse(v: Visitor)
7989 do
7990 v.visit(_n_id)
7991 v.visit(_n_assign)
7992 v.visit(_n_value)
7993 end
7994 end
7995 redef class AVarReassignExpr
7996 redef fun n_id=(n)
7997 do
7998 _n_id = n
7999 n.parent = self
8000 end
8001 redef fun n_assign_op=(n)
8002 do
8003 _n_assign_op = n
8004 n.parent = self
8005 end
8006 redef fun n_value=(n)
8007 do
8008 _n_value = n
8009 n.parent = self
8010 end
8011
8012 private init empty_init do end
8013
8014 init init_avarreassignexpr (
8015 n_id: nullable TId ,
8016 n_assign_op: nullable PAssignOp ,
8017 n_value: nullable PExpr
8018 )
8019 do
8020 empty_init
8021 _n_id = n_id.as(not null)
8022 n_id.parent = self
8023 _n_assign_op = n_assign_op.as(not null)
8024 n_assign_op.parent = self
8025 _n_value = n_value.as(not null)
8026 n_value.parent = self
8027 end
8028
8029 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8030 do
8031 if _n_id == old_child then
8032 if new_child != null then
8033 new_child.parent = self
8034 assert new_child isa TId
8035 _n_id = new_child
8036 else
8037 abort
8038 end
8039 return
8040 end
8041 if _n_assign_op == old_child then
8042 if new_child != null then
8043 new_child.parent = self
8044 assert new_child isa PAssignOp
8045 _n_assign_op = new_child
8046 else
8047 abort
8048 end
8049 return
8050 end
8051 if _n_value == old_child then
8052 if new_child != null then
8053 new_child.parent = self
8054 assert new_child isa PExpr
8055 _n_value = new_child
8056 else
8057 abort
8058 end
8059 return
8060 end
8061 end
8062
8063 redef fun visit_all(v: Visitor)
8064 do
8065 v.visit(_n_id)
8066 v.visit(_n_assign_op)
8067 v.visit(_n_value)
8068 end
8069
8070 redef fun visit_all_reverse(v: Visitor)
8071 do
8072 v.visit(_n_id)
8073 v.visit(_n_assign_op)
8074 v.visit(_n_value)
8075 end
8076 end
8077 redef class ARangeExpr
8078 redef fun n_expr=(n)
8079 do
8080 _n_expr = n
8081 n.parent = self
8082 end
8083 redef fun n_expr2=(n)
8084 do
8085 _n_expr2 = n
8086 n.parent = self
8087 end
8088
8089 private init empty_init do end
8090
8091 init init_arangeexpr (
8092 n_expr: nullable PExpr ,
8093 n_expr2: nullable PExpr
8094 )
8095 do
8096 empty_init
8097 _n_expr = n_expr.as(not null)
8098 n_expr.parent = self
8099 _n_expr2 = n_expr2.as(not null)
8100 n_expr2.parent = self
8101 end
8102
8103 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8104 do
8105 if _n_expr == old_child then
8106 if new_child != null then
8107 new_child.parent = self
8108 assert new_child isa PExpr
8109 _n_expr = new_child
8110 else
8111 abort
8112 end
8113 return
8114 end
8115 if _n_expr2 == old_child then
8116 if new_child != null then
8117 new_child.parent = self
8118 assert new_child isa PExpr
8119 _n_expr2 = new_child
8120 else
8121 abort
8122 end
8123 return
8124 end
8125 end
8126
8127 redef fun visit_all(v: Visitor)
8128 do
8129 v.visit(_n_expr)
8130 v.visit(_n_expr2)
8131 end
8132
8133 redef fun visit_all_reverse(v: Visitor)
8134 do
8135 v.visit(_n_expr)
8136 v.visit(_n_expr2)
8137 end
8138 end
8139 redef class ACrangeExpr
8140 redef fun n_expr=(n)
8141 do
8142 _n_expr = n
8143 n.parent = self
8144 end
8145 redef fun n_expr2=(n)
8146 do
8147 _n_expr2 = n
8148 n.parent = self
8149 end
8150
8151 private init empty_init do end
8152
8153 init init_acrangeexpr (
8154 n_expr: nullable PExpr ,
8155 n_expr2: nullable PExpr
8156 )
8157 do
8158 empty_init
8159 _n_expr = n_expr.as(not null)
8160 n_expr.parent = self
8161 _n_expr2 = n_expr2.as(not null)
8162 n_expr2.parent = self
8163 end
8164
8165 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8166 do
8167 if _n_expr == old_child then
8168 if new_child != null then
8169 new_child.parent = self
8170 assert new_child isa PExpr
8171 _n_expr = new_child
8172 else
8173 abort
8174 end
8175 return
8176 end
8177 if _n_expr2 == old_child then
8178 if new_child != null then
8179 new_child.parent = self
8180 assert new_child isa PExpr
8181 _n_expr2 = new_child
8182 else
8183 abort
8184 end
8185 return
8186 end
8187 end
8188
8189 redef fun visit_all(v: Visitor)
8190 do
8191 v.visit(_n_expr)
8192 v.visit(_n_expr2)
8193 end
8194
8195 redef fun visit_all_reverse(v: Visitor)
8196 do
8197 v.visit(_n_expr)
8198 v.visit(_n_expr2)
8199 end
8200 end
8201 redef class AOrangeExpr
8202 redef fun n_expr=(n)
8203 do
8204 _n_expr = n
8205 n.parent = self
8206 end
8207 redef fun n_expr2=(n)
8208 do
8209 _n_expr2 = n
8210 n.parent = self
8211 end
8212
8213 private init empty_init do end
8214
8215 init init_aorangeexpr (
8216 n_expr: nullable PExpr ,
8217 n_expr2: nullable PExpr
8218 )
8219 do
8220 empty_init
8221 _n_expr = n_expr.as(not null)
8222 n_expr.parent = self
8223 _n_expr2 = n_expr2.as(not null)
8224 n_expr2.parent = self
8225 end
8226
8227 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8228 do
8229 if _n_expr == old_child then
8230 if new_child != null then
8231 new_child.parent = self
8232 assert new_child isa PExpr
8233 _n_expr = new_child
8234 else
8235 abort
8236 end
8237 return
8238 end
8239 if _n_expr2 == old_child then
8240 if new_child != null then
8241 new_child.parent = self
8242 assert new_child isa PExpr
8243 _n_expr2 = new_child
8244 else
8245 abort
8246 end
8247 return
8248 end
8249 end
8250
8251 redef fun visit_all(v: Visitor)
8252 do
8253 v.visit(_n_expr)
8254 v.visit(_n_expr2)
8255 end
8256
8257 redef fun visit_all_reverse(v: Visitor)
8258 do
8259 v.visit(_n_expr)
8260 v.visit(_n_expr2)
8261 end
8262 end
8263 redef class AArrayExpr
8264
8265 private init empty_init do end
8266
8267 init init_aarrayexpr (
8268 n_exprs: Collection[Object] # Should be Collection[PExpr]
8269 )
8270 do
8271 empty_init
8272 for n in n_exprs do
8273 assert n isa PExpr
8274 _n_exprs.add(n)
8275 n.parent = self
8276 end
8277 end
8278
8279 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8280 do
8281 for i in [0.._n_exprs.length[ do
8282 if _n_exprs[i] == old_child then
8283 if new_child != null then
8284 assert new_child isa PExpr
8285 _n_exprs[i] = new_child
8286 new_child.parent = self
8287 else
8288 _n_exprs.remove_at(i)
8289 end
8290 return
8291 end
8292 end
8293 end
8294
8295 redef fun visit_all(v: Visitor)
8296 do
8297 for n in _n_exprs do
8298 v.visit(n)
8299 end
8300 end
8301
8302 redef fun visit_all_reverse(v: Visitor)
8303 do
8304 do
8305 var i = _n_exprs.length
8306 while i >= 0 do
8307 v.visit(_n_exprs[i])
8308 i = i - 1
8309 end
8310 end
8311 end
8312 end
8313 redef class ASelfExpr
8314 redef fun n_kwself=(n)
8315 do
8316 _n_kwself = n
8317 n.parent = self
8318 end
8319
8320 private init empty_init do end
8321
8322 init init_aselfexpr (
8323 n_kwself: nullable TKwself
8324 )
8325 do
8326 empty_init
8327 _n_kwself = n_kwself.as(not null)
8328 n_kwself.parent = self
8329 end
8330
8331 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8332 do
8333 if _n_kwself == old_child then
8334 if new_child != null then
8335 new_child.parent = self
8336 assert new_child isa TKwself
8337 _n_kwself = new_child
8338 else
8339 abort
8340 end
8341 return
8342 end
8343 end
8344
8345 redef fun visit_all(v: Visitor)
8346 do
8347 v.visit(_n_kwself)
8348 end
8349
8350 redef fun visit_all_reverse(v: Visitor)
8351 do
8352 v.visit(_n_kwself)
8353 end
8354 end
8355 redef class AImplicitSelfExpr
8356
8357 private init empty_init do end
8358
8359 init init_aimplicitselfexpr
8360 do
8361 empty_init
8362 end
8363
8364 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8365 do
8366 end
8367
8368 redef fun visit_all(v: Visitor)
8369 do
8370 end
8371
8372 redef fun visit_all_reverse(v: Visitor)
8373 do
8374 end
8375 end
8376 redef class ATrueExpr
8377 redef fun n_kwtrue=(n)
8378 do
8379 _n_kwtrue = n
8380 n.parent = self
8381 end
8382
8383 private init empty_init do end
8384
8385 init init_atrueexpr (
8386 n_kwtrue: nullable TKwtrue
8387 )
8388 do
8389 empty_init
8390 _n_kwtrue = n_kwtrue.as(not null)
8391 n_kwtrue.parent = self
8392 end
8393
8394 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8395 do
8396 if _n_kwtrue == old_child then
8397 if new_child != null then
8398 new_child.parent = self
8399 assert new_child isa TKwtrue
8400 _n_kwtrue = new_child
8401 else
8402 abort
8403 end
8404 return
8405 end
8406 end
8407
8408 redef fun visit_all(v: Visitor)
8409 do
8410 v.visit(_n_kwtrue)
8411 end
8412
8413 redef fun visit_all_reverse(v: Visitor)
8414 do
8415 v.visit(_n_kwtrue)
8416 end
8417 end
8418 redef class AFalseExpr
8419 redef fun n_kwfalse=(n)
8420 do
8421 _n_kwfalse = n
8422 n.parent = self
8423 end
8424
8425 private init empty_init do end
8426
8427 init init_afalseexpr (
8428 n_kwfalse: nullable TKwfalse
8429 )
8430 do
8431 empty_init
8432 _n_kwfalse = n_kwfalse.as(not null)
8433 n_kwfalse.parent = self
8434 end
8435
8436 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8437 do
8438 if _n_kwfalse == old_child then
8439 if new_child != null then
8440 new_child.parent = self
8441 assert new_child isa TKwfalse
8442 _n_kwfalse = new_child
8443 else
8444 abort
8445 end
8446 return
8447 end
8448 end
8449
8450 redef fun visit_all(v: Visitor)
8451 do
8452 v.visit(_n_kwfalse)
8453 end
8454
8455 redef fun visit_all_reverse(v: Visitor)
8456 do
8457 v.visit(_n_kwfalse)
8458 end
8459 end
8460 redef class ANullExpr
8461 redef fun n_kwnull=(n)
8462 do
8463 _n_kwnull = n
8464 n.parent = self
8465 end
8466
8467 private init empty_init do end
8468
8469 init init_anullexpr (
8470 n_kwnull: nullable TKwnull
8471 )
8472 do
8473 empty_init
8474 _n_kwnull = n_kwnull.as(not null)
8475 n_kwnull.parent = self
8476 end
8477
8478 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8479 do
8480 if _n_kwnull == old_child then
8481 if new_child != null then
8482 new_child.parent = self
8483 assert new_child isa TKwnull
8484 _n_kwnull = new_child
8485 else
8486 abort
8487 end
8488 return
8489 end
8490 end
8491
8492 redef fun visit_all(v: Visitor)
8493 do
8494 v.visit(_n_kwnull)
8495 end
8496
8497 redef fun visit_all_reverse(v: Visitor)
8498 do
8499 v.visit(_n_kwnull)
8500 end
8501 end
8502 redef class AIntExpr
8503 redef fun n_number=(n)
8504 do
8505 _n_number = n
8506 n.parent = self
8507 end
8508
8509 private init empty_init do end
8510
8511 init init_aintexpr (
8512 n_number: nullable TNumber
8513 )
8514 do
8515 empty_init
8516 _n_number = n_number.as(not null)
8517 n_number.parent = self
8518 end
8519
8520 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8521 do
8522 if _n_number == old_child then
8523 if new_child != null then
8524 new_child.parent = self
8525 assert new_child isa TNumber
8526 _n_number = new_child
8527 else
8528 abort
8529 end
8530 return
8531 end
8532 end
8533
8534 redef fun visit_all(v: Visitor)
8535 do
8536 v.visit(_n_number)
8537 end
8538
8539 redef fun visit_all_reverse(v: Visitor)
8540 do
8541 v.visit(_n_number)
8542 end
8543 end
8544 redef class AFloatExpr
8545 redef fun n_float=(n)
8546 do
8547 _n_float = n
8548 n.parent = self
8549 end
8550
8551 private init empty_init do end
8552
8553 init init_afloatexpr (
8554 n_float: nullable TFloat
8555 )
8556 do
8557 empty_init
8558 _n_float = n_float.as(not null)
8559 n_float.parent = self
8560 end
8561
8562 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8563 do
8564 if _n_float == old_child then
8565 if new_child != null then
8566 new_child.parent = self
8567 assert new_child isa TFloat
8568 _n_float = new_child
8569 else
8570 abort
8571 end
8572 return
8573 end
8574 end
8575
8576 redef fun visit_all(v: Visitor)
8577 do
8578 v.visit(_n_float)
8579 end
8580
8581 redef fun visit_all_reverse(v: Visitor)
8582 do
8583 v.visit(_n_float)
8584 end
8585 end
8586 redef class ACharExpr
8587 redef fun n_char=(n)
8588 do
8589 _n_char = n
8590 n.parent = self
8591 end
8592
8593 private init empty_init do end
8594
8595 init init_acharexpr (
8596 n_char: nullable TChar
8597 )
8598 do
8599 empty_init
8600 _n_char = n_char.as(not null)
8601 n_char.parent = self
8602 end
8603
8604 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8605 do
8606 if _n_char == old_child then
8607 if new_child != null then
8608 new_child.parent = self
8609 assert new_child isa TChar
8610 _n_char = new_child
8611 else
8612 abort
8613 end
8614 return
8615 end
8616 end
8617
8618 redef fun visit_all(v: Visitor)
8619 do
8620 v.visit(_n_char)
8621 end
8622
8623 redef fun visit_all_reverse(v: Visitor)
8624 do
8625 v.visit(_n_char)
8626 end
8627 end
8628 redef class AStringExpr
8629 redef fun n_string=(n)
8630 do
8631 _n_string = n
8632 n.parent = self
8633 end
8634
8635 private init empty_init do end
8636
8637 init init_astringexpr (
8638 n_string: nullable TString
8639 )
8640 do
8641 empty_init
8642 _n_string = n_string.as(not null)
8643 n_string.parent = self
8644 end
8645
8646 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8647 do
8648 if _n_string == old_child then
8649 if new_child != null then
8650 new_child.parent = self
8651 assert new_child isa TString
8652 _n_string = new_child
8653 else
8654 abort
8655 end
8656 return
8657 end
8658 end
8659
8660 redef fun visit_all(v: Visitor)
8661 do
8662 v.visit(_n_string)
8663 end
8664
8665 redef fun visit_all_reverse(v: Visitor)
8666 do
8667 v.visit(_n_string)
8668 end
8669 end
8670 redef class AStartStringExpr
8671 redef fun n_string=(n)
8672 do
8673 _n_string = n
8674 n.parent = self
8675 end
8676
8677 private init empty_init do end
8678
8679 init init_astartstringexpr (
8680 n_string: nullable TStartString
8681 )
8682 do
8683 empty_init
8684 _n_string = n_string.as(not null)
8685 n_string.parent = self
8686 end
8687
8688 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8689 do
8690 if _n_string == old_child then
8691 if new_child != null then
8692 new_child.parent = self
8693 assert new_child isa TStartString
8694 _n_string = new_child
8695 else
8696 abort
8697 end
8698 return
8699 end
8700 end
8701
8702 redef fun visit_all(v: Visitor)
8703 do
8704 v.visit(_n_string)
8705 end
8706
8707 redef fun visit_all_reverse(v: Visitor)
8708 do
8709 v.visit(_n_string)
8710 end
8711 end
8712 redef class AMidStringExpr
8713 redef fun n_string=(n)
8714 do
8715 _n_string = n
8716 n.parent = self
8717 end
8718
8719 private init empty_init do end
8720
8721 init init_amidstringexpr (
8722 n_string: nullable TMidString
8723 )
8724 do
8725 empty_init
8726 _n_string = n_string.as(not null)
8727 n_string.parent = self
8728 end
8729
8730 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8731 do
8732 if _n_string == old_child then
8733 if new_child != null then
8734 new_child.parent = self
8735 assert new_child isa TMidString
8736 _n_string = new_child
8737 else
8738 abort
8739 end
8740 return
8741 end
8742 end
8743
8744 redef fun visit_all(v: Visitor)
8745 do
8746 v.visit(_n_string)
8747 end
8748
8749 redef fun visit_all_reverse(v: Visitor)
8750 do
8751 v.visit(_n_string)
8752 end
8753 end
8754 redef class AEndStringExpr
8755 redef fun n_string=(n)
8756 do
8757 _n_string = n
8758 n.parent = self
8759 end
8760
8761 private init empty_init do end
8762
8763 init init_aendstringexpr (
8764 n_string: nullable TEndString
8765 )
8766 do
8767 empty_init
8768 _n_string = n_string.as(not null)
8769 n_string.parent = self
8770 end
8771
8772 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8773 do
8774 if _n_string == old_child then
8775 if new_child != null then
8776 new_child.parent = self
8777 assert new_child isa TEndString
8778 _n_string = new_child
8779 else
8780 abort
8781 end
8782 return
8783 end
8784 end
8785
8786 redef fun visit_all(v: Visitor)
8787 do
8788 v.visit(_n_string)
8789 end
8790
8791 redef fun visit_all_reverse(v: Visitor)
8792 do
8793 v.visit(_n_string)
8794 end
8795 end
8796 redef class ASuperstringExpr
8797
8798 private init empty_init do end
8799
8800 init init_asuperstringexpr (
8801 n_exprs: Collection[Object] # Should be Collection[PExpr]
8802 )
8803 do
8804 empty_init
8805 for n in n_exprs do
8806 assert n isa PExpr
8807 _n_exprs.add(n)
8808 n.parent = self
8809 end
8810 end
8811
8812 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8813 do
8814 for i in [0.._n_exprs.length[ do
8815 if _n_exprs[i] == old_child then
8816 if new_child != null then
8817 assert new_child isa PExpr
8818 _n_exprs[i] = new_child
8819 new_child.parent = self
8820 else
8821 _n_exprs.remove_at(i)
8822 end
8823 return
8824 end
8825 end
8826 end
8827
8828 redef fun visit_all(v: Visitor)
8829 do
8830 for n in _n_exprs do
8831 v.visit(n)
8832 end
8833 end
8834
8835 redef fun visit_all_reverse(v: Visitor)
8836 do
8837 do
8838 var i = _n_exprs.length
8839 while i >= 0 do
8840 v.visit(_n_exprs[i])
8841 i = i - 1
8842 end
8843 end
8844 end
8845 end
8846 redef class AParExpr
8847 redef fun n_expr=(n)
8848 do
8849 _n_expr = n
8850 n.parent = self
8851 end
8852
8853 private init empty_init do end
8854
8855 init init_aparexpr (
8856 n_expr: nullable PExpr
8857 )
8858 do
8859 empty_init
8860 _n_expr = n_expr.as(not null)
8861 n_expr.parent = self
8862 end
8863
8864 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8865 do
8866 if _n_expr == old_child then
8867 if new_child != null then
8868 new_child.parent = self
8869 assert new_child isa PExpr
8870 _n_expr = new_child
8871 else
8872 abort
8873 end
8874 return
8875 end
8876 end
8877
8878 redef fun visit_all(v: Visitor)
8879 do
8880 v.visit(_n_expr)
8881 end
8882
8883 redef fun visit_all_reverse(v: Visitor)
8884 do
8885 v.visit(_n_expr)
8886 end
8887 end
8888 redef class AAsCastExpr
8889 redef fun n_expr=(n)
8890 do
8891 _n_expr = n
8892 n.parent = self
8893 end
8894 redef fun n_kwas=(n)
8895 do
8896 _n_kwas = n
8897 n.parent = self
8898 end
8899 redef fun n_type=(n)
8900 do
8901 _n_type = n
8902 n.parent = self
8903 end
8904
8905 private init empty_init do end
8906
8907 init init_aascastexpr (
8908 n_expr: nullable PExpr ,
8909 n_kwas: nullable TKwas ,
8910 n_type: nullable PType
8911 )
8912 do
8913 empty_init
8914 _n_expr = n_expr.as(not null)
8915 n_expr.parent = self
8916 _n_kwas = n_kwas.as(not null)
8917 n_kwas.parent = self
8918 _n_type = n_type.as(not null)
8919 n_type.parent = self
8920 end
8921
8922 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
8923 do
8924 if _n_expr == old_child then
8925 if new_child != null then
8926 new_child.parent = self
8927 assert new_child isa PExpr
8928 _n_expr = new_child
8929 else
8930 abort
8931 end
8932 return
8933 end
8934 if _n_kwas == old_child then
8935 if new_child != null then
8936 new_child.parent = self
8937 assert new_child isa TKwas
8938 _n_kwas = new_child
8939 else
8940 abort
8941 end
8942 return
8943 end
8944 if _n_type == old_child then
8945 if new_child != null then
8946 new_child.parent = self
8947 assert new_child isa PType
8948 _n_type = new_child
8949 else
8950 abort
8951 end
8952 return
8953 end
8954 end
8955
8956 redef fun visit_all(v: Visitor)
8957 do
8958 v.visit(_n_expr)
8959 v.visit(_n_kwas)
8960 v.visit(_n_type)
8961 end
8962
8963 redef fun visit_all_reverse(v: Visitor)
8964 do
8965 v.visit(_n_expr)
8966 v.visit(_n_kwas)
8967 v.visit(_n_type)
8968 end
8969 end
8970 redef class AAsNotnullExpr
8971 redef fun n_expr=(n)
8972 do
8973 _n_expr = n
8974 n.parent = self
8975 end
8976 redef fun n_kwas=(n)
8977 do
8978 _n_kwas = n
8979 n.parent = self
8980 end
8981 redef fun n_kwnot=(n)
8982 do
8983 _n_kwnot = n
8984 n.parent = self
8985 end
8986 redef fun n_kwnull=(n)
8987 do
8988 _n_kwnull = n
8989 n.parent = self
8990 end
8991
8992 private init empty_init do end
8993
8994 init init_aasnotnullexpr (
8995 n_expr: nullable PExpr ,
8996 n_kwas: nullable TKwas ,
8997 n_kwnot: nullable TKwnot ,
8998 n_kwnull: nullable TKwnull
8999 )
9000 do
9001 empty_init
9002 _n_expr = n_expr.as(not null)
9003 n_expr.parent = self
9004 _n_kwas = n_kwas.as(not null)
9005 n_kwas.parent = self
9006 _n_kwnot = n_kwnot.as(not null)
9007 n_kwnot.parent = self
9008 _n_kwnull = n_kwnull.as(not null)
9009 n_kwnull.parent = self
9010 end
9011
9012 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9013 do
9014 if _n_expr == old_child then
9015 if new_child != null then
9016 new_child.parent = self
9017 assert new_child isa PExpr
9018 _n_expr = new_child
9019 else
9020 abort
9021 end
9022 return
9023 end
9024 if _n_kwas == old_child then
9025 if new_child != null then
9026 new_child.parent = self
9027 assert new_child isa TKwas
9028 _n_kwas = new_child
9029 else
9030 abort
9031 end
9032 return
9033 end
9034 if _n_kwnot == old_child then
9035 if new_child != null then
9036 new_child.parent = self
9037 assert new_child isa TKwnot
9038 _n_kwnot = new_child
9039 else
9040 abort
9041 end
9042 return
9043 end
9044 if _n_kwnull == old_child then
9045 if new_child != null then
9046 new_child.parent = self
9047 assert new_child isa TKwnull
9048 _n_kwnull = new_child
9049 else
9050 abort
9051 end
9052 return
9053 end
9054 end
9055
9056 redef fun visit_all(v: Visitor)
9057 do
9058 v.visit(_n_expr)
9059 v.visit(_n_kwas)
9060 v.visit(_n_kwnot)
9061 v.visit(_n_kwnull)
9062 end
9063
9064 redef fun visit_all_reverse(v: Visitor)
9065 do
9066 v.visit(_n_expr)
9067 v.visit(_n_kwas)
9068 v.visit(_n_kwnot)
9069 v.visit(_n_kwnull)
9070 end
9071 end
9072 redef class AIssetAttrExpr
9073 redef fun n_kwisset=(n)
9074 do
9075 _n_kwisset = n
9076 n.parent = self
9077 end
9078 redef fun n_expr=(n)
9079 do
9080 _n_expr = n
9081 n.parent = self
9082 end
9083 redef fun n_id=(n)
9084 do
9085 _n_id = n
9086 n.parent = self
9087 end
9088
9089 private init empty_init do end
9090
9091 init init_aissetattrexpr (
9092 n_kwisset: nullable TKwisset ,
9093 n_expr: nullable PExpr ,
9094 n_id: nullable TAttrid
9095 )
9096 do
9097 empty_init
9098 _n_kwisset = n_kwisset.as(not null)
9099 n_kwisset.parent = self
9100 _n_expr = n_expr.as(not null)
9101 n_expr.parent = self
9102 _n_id = n_id.as(not null)
9103 n_id.parent = self
9104 end
9105
9106 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9107 do
9108 if _n_kwisset == old_child then
9109 if new_child != null then
9110 new_child.parent = self
9111 assert new_child isa TKwisset
9112 _n_kwisset = new_child
9113 else
9114 abort
9115 end
9116 return
9117 end
9118 if _n_expr == old_child then
9119 if new_child != null then
9120 new_child.parent = self
9121 assert new_child isa PExpr
9122 _n_expr = new_child
9123 else
9124 abort
9125 end
9126 return
9127 end
9128 if _n_id == old_child then
9129 if new_child != null then
9130 new_child.parent = self
9131 assert new_child isa TAttrid
9132 _n_id = new_child
9133 else
9134 abort
9135 end
9136 return
9137 end
9138 end
9139
9140 redef fun visit_all(v: Visitor)
9141 do
9142 v.visit(_n_kwisset)
9143 v.visit(_n_expr)
9144 v.visit(_n_id)
9145 end
9146
9147 redef fun visit_all_reverse(v: Visitor)
9148 do
9149 v.visit(_n_kwisset)
9150 v.visit(_n_expr)
9151 v.visit(_n_id)
9152 end
9153 end
9154 redef class APlusAssignOp
9155 redef fun n_pluseq=(n)
9156 do
9157 _n_pluseq = n
9158 n.parent = self
9159 end
9160
9161 private init empty_init do end
9162
9163 init init_aplusassignop (
9164 n_pluseq: nullable TPluseq
9165 )
9166 do
9167 empty_init
9168 _n_pluseq = n_pluseq.as(not null)
9169 n_pluseq.parent = self
9170 end
9171
9172 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9173 do
9174 if _n_pluseq == old_child then
9175 if new_child != null then
9176 new_child.parent = self
9177 assert new_child isa TPluseq
9178 _n_pluseq = new_child
9179 else
9180 abort
9181 end
9182 return
9183 end
9184 end
9185
9186 redef fun visit_all(v: Visitor)
9187 do
9188 v.visit(_n_pluseq)
9189 end
9190
9191 redef fun visit_all_reverse(v: Visitor)
9192 do
9193 v.visit(_n_pluseq)
9194 end
9195 end
9196 redef class AMinusAssignOp
9197 redef fun n_minuseq=(n)
9198 do
9199 _n_minuseq = n
9200 n.parent = self
9201 end
9202
9203 private init empty_init do end
9204
9205 init init_aminusassignop (
9206 n_minuseq: nullable TMinuseq
9207 )
9208 do
9209 empty_init
9210 _n_minuseq = n_minuseq.as(not null)
9211 n_minuseq.parent = self
9212 end
9213
9214 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9215 do
9216 if _n_minuseq == old_child then
9217 if new_child != null then
9218 new_child.parent = self
9219 assert new_child isa TMinuseq
9220 _n_minuseq = new_child
9221 else
9222 abort
9223 end
9224 return
9225 end
9226 end
9227
9228 redef fun visit_all(v: Visitor)
9229 do
9230 v.visit(_n_minuseq)
9231 end
9232
9233 redef fun visit_all_reverse(v: Visitor)
9234 do
9235 v.visit(_n_minuseq)
9236 end
9237 end
9238 redef class AClosureDef
9239 redef fun n_kwwith=(n)
9240 do
9241 _n_kwwith = n
9242 n.parent = self
9243 end
9244 redef fun n_kwdo=(n)
9245 do
9246 _n_kwdo = n
9247 n.parent = self
9248 end
9249 redef fun n_expr=(n)
9250 do
9251 _n_expr = n
9252 if n != null then
9253 n.parent = self
9254 end
9255 end
9256
9257 private init empty_init do end
9258
9259 init init_aclosuredef (
9260 n_kwwith: nullable TKwwith ,
9261 n_id: Collection[Object] , # Should be Collection[TId]
9262 n_kwdo: nullable TKwdo ,
9263 n_expr: nullable PExpr
9264 )
9265 do
9266 empty_init
9267 _n_kwwith = n_kwwith.as(not null)
9268 n_kwwith.parent = self
9269 for n in n_id do
9270 assert n isa TId
9271 _n_id.add(n)
9272 n.parent = self
9273 end
9274 _n_kwdo = n_kwdo.as(not null)
9275 n_kwdo.parent = self
9276 _n_expr = n_expr
9277 if n_expr != null then
9278 n_expr.parent = self
9279 end
9280 end
9281
9282 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9283 do
9284 if _n_kwwith == old_child then
9285 if new_child != null then
9286 new_child.parent = self
9287 assert new_child isa TKwwith
9288 _n_kwwith = new_child
9289 else
9290 abort
9291 end
9292 return
9293 end
9294 for i in [0.._n_id.length[ do
9295 if _n_id[i] == old_child then
9296 if new_child != null then
9297 assert new_child isa TId
9298 _n_id[i] = new_child
9299 new_child.parent = self
9300 else
9301 _n_id.remove_at(i)
9302 end
9303 return
9304 end
9305 end
9306 if _n_kwdo == old_child then
9307 if new_child != null then
9308 new_child.parent = self
9309 assert new_child isa TKwdo
9310 _n_kwdo = new_child
9311 else
9312 abort
9313 end
9314 return
9315 end
9316 if _n_expr == old_child then
9317 if new_child != null then
9318 new_child.parent = self
9319 assert new_child isa PExpr
9320 _n_expr = new_child
9321 else
9322 _n_expr = null
9323 end
9324 return
9325 end
9326 end
9327
9328 redef fun visit_all(v: Visitor)
9329 do
9330 v.visit(_n_kwwith)
9331 for n in _n_id do
9332 v.visit(n)
9333 end
9334 v.visit(_n_kwdo)
9335 if _n_expr != null then
9336 v.visit(_n_expr.as(not null))
9337 end
9338 end
9339
9340 redef fun visit_all_reverse(v: Visitor)
9341 do
9342 v.visit(_n_kwwith)
9343 do
9344 var i = _n_id.length
9345 while i >= 0 do
9346 v.visit(_n_id[i])
9347 i = i - 1
9348 end
9349 end
9350 v.visit(_n_kwdo)
9351 if _n_expr != null then
9352 v.visit(_n_expr.as(not null))
9353 end
9354 end
9355 end
9356 redef class AQualified
9357 redef fun n_classid=(n)
9358 do
9359 _n_classid = n
9360 if n != null then
9361 n.parent = self
9362 end
9363 end
9364
9365 private init empty_init do end
9366
9367 init init_aqualified (
9368 n_id: Collection[Object] , # Should be Collection[TId]
9369 n_classid: nullable TClassid
9370 )
9371 do
9372 empty_init
9373 for n in n_id do
9374 assert n isa TId
9375 _n_id.add(n)
9376 n.parent = self
9377 end
9378 _n_classid = n_classid
9379 if n_classid != null then
9380 n_classid.parent = self
9381 end
9382 end
9383
9384 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9385 do
9386 for i in [0.._n_id.length[ do
9387 if _n_id[i] == old_child then
9388 if new_child != null then
9389 assert new_child isa TId
9390 _n_id[i] = new_child
9391 new_child.parent = self
9392 else
9393 _n_id.remove_at(i)
9394 end
9395 return
9396 end
9397 end
9398 if _n_classid == old_child then
9399 if new_child != null then
9400 new_child.parent = self
9401 assert new_child isa TClassid
9402 _n_classid = new_child
9403 else
9404 _n_classid = null
9405 end
9406 return
9407 end
9408 end
9409
9410 redef fun visit_all(v: Visitor)
9411 do
9412 for n in _n_id do
9413 v.visit(n)
9414 end
9415 if _n_classid != null then
9416 v.visit(_n_classid.as(not null))
9417 end
9418 end
9419
9420 redef fun visit_all_reverse(v: Visitor)
9421 do
9422 do
9423 var i = _n_id.length
9424 while i >= 0 do
9425 v.visit(_n_id[i])
9426 i = i - 1
9427 end
9428 end
9429 if _n_classid != null then
9430 v.visit(_n_classid.as(not null))
9431 end
9432 end
9433 end
9434 redef class ADoc
9435
9436 private init empty_init do end
9437
9438 init init_adoc (
9439 n_comment: Collection[Object] # Should be Collection[TComment]
9440 )
9441 do
9442 empty_init
9443 for n in n_comment do
9444 assert n isa TComment
9445 _n_comment.add(n)
9446 n.parent = self
9447 end
9448 end
9449
9450 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9451 do
9452 for i in [0.._n_comment.length[ do
9453 if _n_comment[i] == old_child then
9454 if new_child != null then
9455 assert new_child isa TComment
9456 _n_comment[i] = new_child
9457 new_child.parent = self
9458 else
9459 _n_comment.remove_at(i)
9460 end
9461 return
9462 end
9463 end
9464 end
9465
9466 redef fun visit_all(v: Visitor)
9467 do
9468 for n in _n_comment do
9469 v.visit(n)
9470 end
9471 end
9472
9473 redef fun visit_all_reverse(v: Visitor)
9474 do
9475 do
9476 var i = _n_comment.length
9477 while i >= 0 do
9478 v.visit(_n_comment[i])
9479 i = i - 1
9480 end
9481 end
9482 end
9483 end
9484
9485 redef class Start
9486 init(
9487 n_base: nullable PModule,
9488 n_eof: EOF)
9489 do
9490 _n_base = n_base
9491 _n_eof = n_eof
9492 end
9493
9494 redef fun replace_child(old_child: PNode, new_child: nullable PNode)
9495 do
9496 if _n_base == old_child then
9497 if new_child == null then
9498 else
9499 new_child.parent = self
9500 assert new_child isa PModule
9501 _n_base = new_child
9502 end
9503 old_child.parent = null
9504 return
9505 end
9506 end
9507
9508 redef fun visit_all(v: Visitor)
9509 do
9510 if _n_base != null then
9511 v.visit(_n_base.as(not null))
9512 end
9513 end
9514
9515 redef fun visit_all_reverse(v: Visitor)
9516 do
9517 if _n_base != null then
9518 v.visit(_n_base.as(not null))
9519 end
9520 end
9521 end