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