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