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