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