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