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