X-Git-Url: http://nitlanguage.org diff --git a/src/parser/parser_prod.nit b/src/parser/parser_prod.nit index fe86fb2..05daac5 100644 --- a/src/parser/parser_prod.nit +++ b/src/parser/parser_prod.nit @@ -1,72 +1,11 @@ # Production AST nodes full definition. # This file was generated by SableCC (http://www.sablecc.org/). -package parser_prod +module parser_prod import lexer intrude import parser_nodes private import tables -redef class ANode - # Parent of the node in the AST - readable writable var _parent: nullable ANode - - # Remove a child from the AST - fun remove_child(child: ANode) - do - replace_child(child, null) - end - - # Replace a child with an other node in the AST - fun replace_child(old_child: ANode, new_child: nullable ANode) is abstract - - # Replace itself with an other node in the AST - fun replace_with(node: ANode) - do - if _parent != null then - _parent.replace_child(self, node) - end - end - - # Visit all nodes in order. - # Thus, call "v.visit(e)" for each node e - fun visit_all(v: Visitor) is abstract -end - -redef class Token - redef fun visit_all(v: Visitor) do end - redef fun replace_child(old_child: ANode, new_child: nullable ANode) do end -end - -redef class Prod - redef fun replace_with(n: ANode) - do - super - assert n isa Prod - n.location = location - end -end - -# Abstract standard visitor -abstract class Visitor - # What the visitor do when a node is visited - # Concrete visitors should redefine this method. - protected fun visit(e: nullable ANode) is abstract - - # Ask the visitor to visit a given node. - # Usually automatically called by visit_all* methods. - # This methos should not be redefined - fun enter_visit(e: nullable ANode) - do - var old = _current_node - _current_node = e - visit(e) - _current_node = old - end - - # The current visited node - readable var _current_node: nullable ANode = null -end - redef class AModule private init empty_init do end @@ -149,6 +88,15 @@ redef class AModule end end + redef fun n_moduledecl=(node) + do + _n_moduledecl = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_moduledecl != null then @@ -171,7 +119,8 @@ redef class AModuledecl init init_amoduledecl ( n_doc: nullable ADoc, n_kwmodule: nullable TKwmodule, - n_name: nullable AModuleName + n_name: nullable AModuleName, + n_annotations: nullable AAnnotations ) do empty_init @@ -183,6 +132,10 @@ redef class AModuledecl n_kwmodule.parent = self _n_name = n_name.as(not null) n_name.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -217,8 +170,44 @@ redef class AModuledecl end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwmodule=(node) + do + _n_kwmodule = node + node.parent = self + end + redef fun n_name=(node) + do + _n_name = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -226,6 +215,9 @@ redef class AModuledecl end v.enter_visit(_n_kwmodule) v.enter_visit(_n_name) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AStdImport @@ -234,7 +226,8 @@ redef class AStdImport init init_astdimport ( n_visibility: nullable AVisibility, n_kwimport: nullable TKwimport, - n_name: nullable AModuleName + n_name: nullable AModuleName, + n_annotations: nullable AAnnotations ) do empty_init @@ -244,6 +237,10 @@ redef class AStdImport n_kwimport.parent = self _n_name = n_name.as(not null) n_name.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -278,13 +275,50 @@ redef class AStdImport end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwimport=(node) + do + _n_kwimport = node + node.parent = self + end + redef fun n_name=(node) + do + _n_name = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_visibility) v.enter_visit(_n_kwimport) v.enter_visit(_n_name) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ANoImport @@ -339,6 +373,23 @@ redef class ANoImport end end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwimport=(node) + do + _n_kwimport = node + node.parent = self + end + redef fun n_kwend=(node) + do + _n_kwend = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_visibility) @@ -358,6 +409,8 @@ redef class APublicVisibility do end + + redef fun visit_all(v: Visitor) do end @@ -388,6 +441,13 @@ redef class APrivateVisibility end end + redef fun n_kwprivate=(node) + do + _n_kwprivate = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwprivate) @@ -419,6 +479,13 @@ redef class AProtectedVisibility end end + redef fun n_kwprotected=(node) + do + _n_kwprotected = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwprotected) @@ -450,6 +517,13 @@ redef class AIntrudeVisibility end end + redef fun n_kwintrude=(node) + do + _n_kwintrude = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwintrude) @@ -465,6 +539,7 @@ redef class AStdClassdef n_classkind: nullable AClasskind, n_id: nullable TClassid, n_formaldefs: Collection[Object], # Should be Collection[AFormaldef] + n_annotations: nullable AAnnotations, n_extern_code_block: nullable AExternCodeBlock, n_superclasses: Collection[Object], # Should be Collection[ASuperclass] n_propdefs: Collection[Object], # Should be Collection[APropdef] @@ -493,6 +568,10 @@ redef class AStdClassdef _n_formaldefs.add(n) n.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end _n_extern_code_block = n_extern_code_block if n_extern_code_block != null then n_extern_code_block.parent = self @@ -575,6 +654,16 @@ redef class AStdClassdef return end end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end if _n_extern_code_block == old_child then if new_child != null then new_child.parent = self @@ -621,6 +710,58 @@ redef class AStdClassdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_classkind=(node) + do + _n_classkind = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + if node != null then + node.parent = self + end + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + redef fun n_extern_code_block=(node) + do + _n_extern_code_block = node + if node != null then + node.parent = self + end + end + redef fun n_kwend=(node) + do + _n_kwend = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -637,6 +778,9 @@ redef class AStdClassdef for n in _n_formaldefs do v.enter_visit(n) end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end if _n_extern_code_block != null then v.enter_visit(_n_extern_code_block.as(not null)) end @@ -680,6 +824,8 @@ redef class ATopClassdef end end + + redef fun visit_all(v: Visitor) do for n in _n_propdefs do @@ -718,6 +864,8 @@ redef class AMainClassdef end end + + redef fun visit_all(v: Visitor) do for n in _n_propdefs do @@ -751,6 +899,13 @@ redef class AConcreteClasskind end end + redef fun n_kwclass=(node) + do + _n_kwclass = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwclass) @@ -795,6 +950,18 @@ redef class AAbstractClasskind end end + redef fun n_kwabstract=(node) + do + _n_kwabstract = node + node.parent = self + end + redef fun n_kwclass=(node) + do + _n_kwclass = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwabstract) @@ -827,6 +994,13 @@ redef class AInterfaceClasskind end end + redef fun n_kwinterface=(node) + do + _n_kwinterface = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwinterface) @@ -858,6 +1032,13 @@ redef class AEnumClasskind end end + redef fun n_kwenum=(node) + do + _n_kwenum = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwenum) @@ -904,6 +1085,20 @@ redef class AExternClasskind end end + redef fun n_kwextern=(node) + do + _n_kwextern = node + node.parent = self + end + redef fun n_kwclass=(node) + do + _n_kwclass = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwextern) @@ -917,7 +1112,8 @@ redef class AFormaldef init init_aformaldef ( n_id: nullable TClassid, - n_type: nullable AType + n_type: nullable AType, + n_annotations: nullable AAnnotations ) do empty_init @@ -927,6 +1123,10 @@ redef class AFormaldef if n_type != null then n_type.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -951,14 +1151,48 @@ redef class AFormaldef end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + if node != null then + node.parent = self + end + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_id) if _n_type != null then v.enter_visit(_n_type.as(not null)) end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ASuperclass @@ -966,7 +1200,8 @@ redef class ASuperclass init init_asuperclass ( n_kwsuper: nullable TKwsuper, - n_type: nullable AType + n_type: nullable AType, + n_annotations: nullable AAnnotations ) do empty_init @@ -974,6 +1209,10 @@ redef class ASuperclass n_kwsuper.parent = self _n_type = n_type.as(not null) n_type.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -998,12 +1237,44 @@ redef class ASuperclass end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwsuper=(node) + do + _n_kwsuper = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwsuper) v.enter_visit(_n_type) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AAttrPropdef @@ -1019,6 +1290,7 @@ redef class AAttrPropdef n_id: nullable TAttrid, n_id2: nullable TId, n_type: nullable AType, + n_annotations: nullable AAnnotations, n_expr: nullable AExpr ) do @@ -1055,6 +1327,10 @@ redef class AAttrPropdef if n_type != null then n_type.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end _n_expr = n_expr if n_expr != null then n_expr.parent = self @@ -1153,6 +1429,16 @@ redef class AAttrPropdef end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end if _n_expr == old_child then if new_child != null then new_child.parent = self @@ -1165,6 +1451,81 @@ redef class AAttrPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_readable=(node) + do + _n_readable = node + if node != null then + node.parent = self + end + end + redef fun n_writable=(node) + do + _n_writable = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwvar=(node) + do + _n_kwvar = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + if node != null then + node.parent = self + end + end + redef fun n_id2=(node) + do + _n_id2 = node + if node != null then + node.parent = self + end + end + redef fun n_type=(node) + do + _n_type = node + if node != null then + node.parent = self + end + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + redef fun n_expr=(node) + do + _n_expr = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1190,6 +1551,9 @@ redef class AAttrPropdef if _n_type != null then v.enter_visit(_n_type.as(not null)) end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end if _n_expr != null then v.enter_visit(_n_expr.as(not null)) end @@ -1277,6 +1641,37 @@ redef class AMethPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1299,7 +1694,8 @@ redef class ADeferredMethPropdef n_visibility: nullable AVisibility, n_kwmeth: nullable TKwmeth, n_methid: nullable AMethid, - n_signature: nullable ASignature + n_signature: nullable ASignature, + n_annotations: nullable AAnnotations ) do empty_init @@ -1319,6 +1715,10 @@ redef class ADeferredMethPropdef n_methid.parent = self _n_signature = n_signature.as(not null) n_signature.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -1383,8 +1783,61 @@ redef class ADeferredMethPropdef end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwmeth=(node) + do + _n_kwmeth = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1397,6 +1850,9 @@ redef class ADeferredMethPropdef v.enter_visit(_n_kwmeth) v.enter_visit(_n_methid) v.enter_visit(_n_signature) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AInternMethPropdef @@ -1494,6 +1950,42 @@ redef class AInternMethPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwmeth=(node) + do + _n_kwmeth = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1648,6 +2140,63 @@ redef class AExternMethPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwmeth=(node) + do + _n_kwmeth = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + redef fun n_extern=(node) + do + _n_extern = node + if node != null then + node.parent = self + end + end + redef fun n_extern_calls=(node) + do + _n_extern_calls = node + if node != null then + node.parent = self + end + end + redef fun n_extern_code_block=(node) + do + _n_extern_code_block = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1681,6 +2230,7 @@ redef class AConcreteMethPropdef n_kwmeth: nullable TKwmeth, n_methid: nullable AMethid, n_signature: nullable ASignature, + n_annotations: nullable AAnnotations, n_block: nullable AExpr ) do @@ -1701,6 +2251,10 @@ redef class AConcreteMethPropdef n_methid.parent = self _n_signature = n_signature.as(not null) n_signature.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end _n_block = n_block if n_block != null then n_block.parent = self @@ -1769,6 +2323,16 @@ redef class AConcreteMethPropdef end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end if _n_block == old_child then if new_child != null then new_child.parent = self @@ -1781,6 +2345,56 @@ redef class AConcreteMethPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwmeth=(node) + do + _n_kwmeth = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1793,6 +2407,9 @@ redef class AConcreteMethPropdef v.enter_visit(_n_kwmeth) v.enter_visit(_n_methid) v.enter_visit(_n_signature) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end if _n_block != null then v.enter_visit(_n_block.as(not null)) end @@ -1808,6 +2425,7 @@ redef class AConcreteInitPropdef n_kwinit: nullable TKwinit, n_methid: nullable AMethid, n_signature: nullable ASignature, + n_annotations: nullable AAnnotations, n_block: nullable AExpr ) do @@ -1830,6 +2448,10 @@ redef class AConcreteInitPropdef end _n_signature = n_signature.as(not null) n_signature.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end _n_block = n_block if n_block != null then n_block.parent = self @@ -1898,6 +2520,16 @@ redef class AConcreteInitPropdef end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end if _n_block == old_child then if new_child != null then new_child.parent = self @@ -1910,6 +2542,58 @@ redef class AConcreteInitPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwinit=(node) + do + _n_kwinit = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + if node != null then + node.parent = self + end + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -1924,6 +2608,9 @@ redef class AConcreteInitPropdef v.enter_visit(_n_methid.as(not null)) end v.enter_visit(_n_signature) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end if _n_block != null then v.enter_visit(_n_block.as(not null)) end @@ -2071,6 +2758,65 @@ redef class AExternInitPropdef end end + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwnew=(node) + do + _n_kwnew = node + node.parent = self + end + redef fun n_methid=(node) + do + _n_methid = node + if node != null then + node.parent = self + end + end + redef fun n_signature=(node) + do + _n_signature = node + node.parent = self + end + redef fun n_extern=(node) + do + _n_extern = node + if node != null then + node.parent = self + end + end + redef fun n_extern_calls=(node) + do + _n_extern_calls = node + if node != null then + node.parent = self + end + end + redef fun n_extern_code_block=(node) + do + _n_extern_code_block = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_doc != null then @@ -2139,6 +2885,22 @@ redef class AMainMethPropdef end end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_kwredef != null then @@ -2158,7 +2920,8 @@ redef class ATypePropdef n_visibility: nullable AVisibility, n_kwtype: nullable TKwtype, n_id: nullable TClassid, - n_type: nullable AType + n_type: nullable AType, + n_annotations: nullable AAnnotations ) do empty_init @@ -2178,6 +2941,10 @@ redef class ATypePropdef n_id.parent = self _n_type = n_type.as(not null) n_type.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -2242,7 +3009,60 @@ redef class ATypePropdef end return end - end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end + end + + redef fun n_doc=(node) + do + _n_doc = node + if node != null then + node.parent = self + end + end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + node.parent = self + end + redef fun n_kwtype=(node) + do + _n_kwtype = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + redef fun visit_all(v: Visitor) do @@ -2256,6 +3076,9 @@ redef class ATypePropdef v.enter_visit(_n_kwtype) v.enter_visit(_n_id) v.enter_visit(_n_type) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AReadAble @@ -2299,6 +3122,20 @@ redef class AReadAble end end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_kwreadable=(node) + do + _n_kwreadable = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_kwredef != null then @@ -2363,6 +3200,27 @@ redef class AWriteAble end end + redef fun n_kwredef=(node) + do + _n_kwredef = node + if node != null then + node.parent = self + end + end + redef fun n_visibility=(node) + do + _n_visibility = node + if node != null then + node.parent = self + end + end + redef fun n_kwwritable=(node) + do + _n_kwwritable = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_kwredef != null then @@ -2400,6 +3258,13 @@ redef class AIdMethid end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_id) @@ -2431,6 +3296,13 @@ redef class APlusMethid end end + redef fun n_plus=(node) + do + _n_plus = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_plus) @@ -2462,6 +3334,13 @@ redef class AMinusMethid end end + redef fun n_minus=(node) + do + _n_minus = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_minus) @@ -2493,6 +3372,13 @@ redef class AStarMethid end end + redef fun n_star=(node) + do + _n_star = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_star) @@ -2524,6 +3410,13 @@ redef class ASlashMethid end end + redef fun n_slash=(node) + do + _n_slash = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_slash) @@ -2555,6 +3448,13 @@ redef class APercentMethid end end + redef fun n_percent=(node) + do + _n_percent = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_percent) @@ -2586,6 +3486,13 @@ redef class AEqMethid end end + redef fun n_eq=(node) + do + _n_eq = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_eq) @@ -2617,6 +3524,13 @@ redef class ANeMethid end end + redef fun n_ne=(node) + do + _n_ne = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_ne) @@ -2648,6 +3562,13 @@ redef class ALeMethid end end + redef fun n_le=(node) + do + _n_le = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_le) @@ -2679,6 +3600,13 @@ redef class AGeMethid end end + redef fun n_ge=(node) + do + _n_ge = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_ge) @@ -2710,6 +3638,13 @@ redef class ALtMethid end end + redef fun n_lt=(node) + do + _n_lt = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_lt) @@ -2741,6 +3676,13 @@ redef class AGtMethid end end + redef fun n_gt=(node) + do + _n_gt = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_gt) @@ -2772,6 +3714,13 @@ redef class ALlMethid end end + redef fun n_ll=(node) + do + _n_ll = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_ll) @@ -2803,6 +3752,13 @@ redef class AGgMethid end end + redef fun n_gg=(node) + do + _n_gg = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_gg) @@ -2847,6 +3803,18 @@ redef class ABraMethid end end + redef fun n_obra=(node) + do + _n_obra = node + node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) @@ -2879,6 +3847,13 @@ redef class AStarshipMethid end end + redef fun n_starship=(node) + do + _n_starship = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_starship) @@ -2923,6 +3898,18 @@ redef class AAssignMethid end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_id) @@ -2981,6 +3968,23 @@ redef class ABraassignMethid end end + redef fun n_obra=(node) + do + _n_obra = node + node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) @@ -2995,8 +3999,7 @@ redef class ASignature n_opar: nullable TOpar, n_params: Collection[Object], # Should be Collection[AParam] n_cpar: nullable TCpar, - n_type: nullable AType, - n_closure_decls: Collection[Object] # Should be Collection[AClosureDecl] + n_type: nullable AType ) do empty_init @@ -3017,11 +4020,6 @@ redef class ASignature if n_type != null then n_type.parent = self end - for n in n_closure_decls do - assert n isa AClosureDecl - _n_closure_decls.add(n) - n.parent = self - end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3068,20 +4066,31 @@ redef class ASignature end return end - for i in [0.._n_closure_decls.length[ do - if _n_closure_decls[i] == old_child then - if new_child != null then - assert new_child isa AClosureDecl - _n_closure_decls[i] = new_child - new_child.parent = self - else - _n_closure_decls.remove_at(i) - end - return - end - end end + redef fun n_opar=(node) + do + _n_opar = node + if node != null then + node.parent = self + end + end + redef fun n_cpar=(node) + do + _n_cpar = node + if node != null then + node.parent = self + end + end + redef fun n_type=(node) + do + _n_type = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_opar != null then @@ -3096,9 +4105,6 @@ redef class ASignature if _n_type != null then v.enter_visit(_n_type.as(not null)) end - for n in _n_closure_decls do - v.enter_visit(n) - end end end redef class AParam @@ -3107,7 +4113,8 @@ redef class AParam init init_aparam ( n_id: nullable TId, n_type: nullable AType, - n_dotdotdot: nullable TDotdotdot + n_dotdotdot: nullable TDotdotdot, + n_annotations: nullable AAnnotations ) do empty_init @@ -3121,6 +4128,10 @@ redef class AParam if n_dotdotdot != null then n_dotdotdot.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3155,111 +4166,57 @@ redef class AParam end return end - end - - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_id) - if _n_type != null then - v.enter_visit(_n_type.as(not null)) - end - if _n_dotdotdot != null then - v.enter_visit(_n_dotdotdot.as(not null)) - end - end -end -redef class AClosureDecl - private init empty_init do end - - init init_aclosuredecl ( - n_kwbreak: nullable TKwbreak, - n_bang: nullable TBang, - n_id: nullable TId, - n_signature: nullable ASignature, - n_expr: nullable AExpr - ) - do - empty_init - _n_kwbreak = n_kwbreak - if n_kwbreak != null then - n_kwbreak.parent = self - end - _n_bang = n_bang.as(not null) - n_bang.parent = self - _n_id = n_id.as(not null) - n_id.parent = self - _n_signature = n_signature.as(not null) - n_signature.parent = self - _n_expr = n_expr - if n_expr != null then - n_expr.parent = self - end - end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_kwbreak == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TKwbreak - _n_kwbreak = new_child - else - _n_kwbreak = null - end - return - end - if _n_bang == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TBang - _n_bang = new_child - else - abort - end - return - end - if _n_id == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TId - _n_id = new_child - else - abort - end - return - end - if _n_signature == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa ASignature - _n_signature = new_child - else - abort - end - return - end - if _n_expr == old_child then + if _n_annotations == old_child then if new_child != null then new_child.parent = self - assert new_child isa AExpr - _n_expr = new_child + assert new_child isa AAnnotations + _n_annotations = new_child else - _n_expr = null + _n_annotations = null end return end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + if node != null then + node.parent = self + end + end + redef fun n_dotdotdot=(node) + do + _n_dotdotdot = node + if node != null then + node.parent = self + end + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do - if _n_kwbreak != null then - v.enter_visit(_n_kwbreak.as(not null)) - end - v.enter_visit(_n_bang) v.enter_visit(_n_id) - v.enter_visit(_n_signature) - if _n_expr != null then - v.enter_visit(_n_expr.as(not null)) + if _n_type != null then + v.enter_visit(_n_type.as(not null)) + end + if _n_dotdotdot != null then + v.enter_visit(_n_dotdotdot.as(not null)) + end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) end end end @@ -3269,7 +4226,8 @@ redef class AType init init_atype ( n_kwnullable: nullable TKwnullable, n_id: nullable TClassid, - n_types: Collection[Object] # Should be Collection[AType] + n_types: Collection[Object], # Should be Collection[AType] + n_annotations: nullable AAnnotations ) do empty_init @@ -3284,6 +4242,10 @@ redef class AType _n_types.add(n) n.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3320,8 +4282,39 @@ redef class AType return end end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwnullable=(node) + do + _n_kwnullable = node + if node != null then + node.parent = self + end + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_kwnullable != null then @@ -3331,6 +4324,9 @@ redef class AType for n in _n_types do v.enter_visit(n) end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ALabel @@ -3372,6 +4368,18 @@ redef class ALabel end end + redef fun n_kwlabel=(node) + do + _n_kwlabel = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwlabel) @@ -3424,6 +4432,15 @@ redef class ABlockExpr end end + redef fun n_kwend=(node) + do + _n_kwend = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do for n in _n_expr do @@ -3442,7 +4459,8 @@ redef class AVardeclExpr n_id: nullable TId, n_type: nullable AType, n_assign: nullable TAssign, - n_expr: nullable AExpr + n_expr: nullable AExpr, + n_annotations: nullable AAnnotations ) do empty_init @@ -3462,6 +4480,10 @@ redef class AVardeclExpr if n_expr != null then n_expr.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3516,8 +4538,58 @@ redef class AVardeclExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwvar=(node) + do + _n_kwvar = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + if node != null then + node.parent = self + end + end + redef fun n_assign=(node) + do + _n_assign = node + if node != null then + node.parent = self + end + end + redef fun n_expr=(node) + do + _n_expr = node + if node != null then + node.parent = self + end + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwvar) @@ -3531,6 +4603,9 @@ redef class AVardeclExpr if _n_expr != null then v.enter_visit(_n_expr.as(not null)) end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AReturnExpr @@ -3576,6 +4651,22 @@ redef class AReturnExpr end end + redef fun n_kwreturn=(node) + do + _n_kwreturn = node + if node != null then + node.parent = self + end + end + redef fun n_expr=(node) + do + _n_expr = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_kwreturn != null then @@ -3642,6 +4733,27 @@ redef class ABreakExpr end end + redef fun n_kwbreak=(node) + do + _n_kwbreak = node + node.parent = self + end + redef fun n_label=(node) + do + _n_label = node + if node != null then + node.parent = self + end + end + redef fun n_expr=(node) + do + _n_expr = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwbreak) @@ -3679,6 +4791,13 @@ redef class AAbortExpr end end + redef fun n_kwabort=(node) + do + _n_kwabort = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwabort) @@ -3742,6 +4861,29 @@ redef class AContinueExpr end end + redef fun n_kwcontinue=(node) + do + _n_kwcontinue = node + if node != null then + node.parent = self + end + end + redef fun n_label=(node) + do + _n_label = node + if node != null then + node.parent = self + end + end + redef fun n_expr=(node) + do + _n_expr = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do if _n_kwcontinue != null then @@ -3811,6 +4953,27 @@ redef class ADoExpr end end + redef fun n_kwdo=(node) + do + _n_kwdo = node + node.parent = self + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + redef fun n_label=(node) + do + _n_label = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwdo) @@ -3891,8 +5054,34 @@ redef class AIfExpr end end - redef fun visit_all(v: Visitor) - do + redef fun n_kwif=(node) + do + _n_kwif = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_then=(node) + do + _n_then = node + if node != null then + node.parent = self + end + end + redef fun n_else=(node) + do + _n_else = node + if node != null then + node.parent = self + end + end + + + redef fun visit_all(v: Visitor) + do v.enter_visit(_n_kwif) v.enter_visit(_n_expr) if _n_then != null then @@ -3994,6 +5183,38 @@ redef class AIfexprExpr end end + redef fun n_kwif=(node) + do + _n_kwif = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_kwthen=(node) + do + _n_kwthen = node + node.parent = self + end + redef fun n_then=(node) + do + _n_then = node + node.parent = self + end + redef fun n_kwelse=(node) + do + _n_kwelse = node + node.parent = self + end + redef fun n_else=(node) + do + _n_else = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwif) @@ -4086,6 +5307,37 @@ redef class AWhileExpr end end + redef fun n_kwwhile=(node) + do + _n_kwwhile = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_kwdo=(node) + do + _n_kwdo = node + node.parent = self + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + redef fun n_label=(node) + do + _n_label = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwwhile) @@ -4155,6 +5407,27 @@ redef class ALoopExpr end end + redef fun n_kwloop=(node) + do + _n_kwloop = node + node.parent = self + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + redef fun n_label=(node) + do + _n_label = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwloop) @@ -4266,6 +5539,37 @@ redef class AForExpr end end + redef fun n_kwfor=(node) + do + _n_kwfor = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_kwdo=(node) + do + _n_kwdo = node + node.parent = self + end + redef fun n_block=(node) + do + _n_block = node + if node != null then + node.parent = self + end + end + redef fun n_label=(node) + do + _n_label = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwfor) @@ -4351,6 +5655,32 @@ redef class AAssertExpr end end + redef fun n_kwassert=(node) + do + _n_kwassert = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + if node != null then + node.parent = self + end + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_else=(node) + do + _n_else = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwassert) @@ -4402,6 +5732,18 @@ redef class AOnceExpr end end + redef fun n_kwonce=(node) + do + _n_kwonce = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwonce) @@ -4434,6 +5776,13 @@ redef class ASendExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4478,6 +5827,18 @@ redef class ABinopExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4523,6 +5884,18 @@ redef class AOrExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4568,6 +5941,18 @@ redef class AAndExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4613,44 +5998,56 @@ redef class AOrElseExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) v.enter_visit(_n_expr2) end end -redef class ANotExpr +redef class AImpliesExpr private init empty_init do end - init init_anotexpr ( - n_kwnot: nullable TKwnot, - n_expr: nullable AExpr + init init_aimpliesexpr ( + n_expr: nullable AExpr, + n_expr2: nullable AExpr ) do empty_init - _n_kwnot = n_kwnot.as(not null) - n_kwnot.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self + _n_expr2 = n_expr2.as(not null) + n_expr2.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_kwnot == old_child then + if _n_expr == old_child then if new_child != null then new_child.parent = self - assert new_child isa TKwnot - _n_kwnot = new_child + assert new_child isa AExpr + _n_expr = new_child else abort end return end - if _n_expr == old_child then + if _n_expr2 == old_child then if new_child != null then new_child.parent = self assert new_child isa AExpr - _n_expr = new_child + _n_expr2 = new_child else abort end @@ -4658,44 +6055,56 @@ redef class ANotExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwnot) v.enter_visit(_n_expr) + v.enter_visit(_n_expr2) end end -redef class AEqExpr +redef class ANotExpr private init empty_init do end - init init_aeqexpr ( - n_expr: nullable AExpr, - n_expr2: nullable AExpr + init init_anotexpr ( + n_kwnot: nullable TKwnot, + n_expr: nullable AExpr ) do empty_init + _n_kwnot = n_kwnot.as(not null) + n_kwnot.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self - _n_expr2 = n_expr2.as(not null) - n_expr2.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_expr == old_child then + if _n_kwnot == old_child then if new_child != null then new_child.parent = self - assert new_child isa AExpr - _n_expr = new_child + assert new_child isa TKwnot + _n_kwnot = new_child else abort end return end - if _n_expr2 == old_child then + if _n_expr == old_child then if new_child != null then new_child.parent = self assert new_child isa AExpr - _n_expr2 = new_child + _n_expr = new_child else abort end @@ -4703,16 +6112,28 @@ redef class AEqExpr end end + redef fun n_kwnot=(node) + do + _n_kwnot = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do + v.enter_visit(_n_kwnot) v.enter_visit(_n_expr) - v.enter_visit(_n_expr2) end end -redef class AEeExpr +redef class AEqExpr private init empty_init do end - init init_aeeexpr ( + init init_aeqexpr ( n_expr: nullable AExpr, n_expr2: nullable AExpr ) @@ -4748,6 +6169,18 @@ redef class AEeExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4793,6 +6226,18 @@ redef class ANeExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4838,6 +6283,18 @@ redef class ALtExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4883,6 +6340,18 @@ redef class ALeExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4928,6 +6397,18 @@ redef class ALlExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -4973,6 +6454,18 @@ redef class AGtExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5018,6 +6511,18 @@ redef class AGeExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5063,6 +6568,18 @@ redef class AGgExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5108,6 +6625,18 @@ redef class AIsaExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5153,6 +6682,18 @@ redef class APlusExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5198,6 +6739,18 @@ redef class AMinusExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5243,6 +6796,18 @@ redef class AStarshipExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5288,6 +6853,18 @@ redef class AStarExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5333,6 +6910,18 @@ redef class ASlashExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5378,6 +6967,18 @@ redef class APercentExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5423,6 +7024,18 @@ redef class AUminusExpr end end + redef fun n_minus=(node) + do + _n_minus = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_minus) @@ -5496,6 +7109,30 @@ redef class ANewExpr end end + redef fun n_kwnew=(node) + do + _n_kwnew = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + if node != null then + node.parent = self + end + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwnew) @@ -5545,6 +7182,18 @@ redef class AAttrExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5616,6 +7265,28 @@ redef class AAttrAssignExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5689,6 +7360,28 @@ redef class AAttrReassignExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign_op=(node) + do + _n_assign_op = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5703,8 +7396,7 @@ redef class ACallExpr init init_acallexpr ( n_expr: nullable AExpr, n_id: nullable TId, - n_args: nullable AExprs, - n_closure_defs: Collection[Object] # Should be Collection[AClosureDef] + n_args: nullable AExprs ) do empty_init @@ -5714,11 +7406,6 @@ redef class ACallExpr n_id.parent = self _n_args = n_args.as(not null) n_args.parent = self - for n in n_closure_defs do - assert n isa AClosureDef - _n_closure_defs.add(n) - n.parent = self - end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -5753,28 +7440,30 @@ redef class ACallExpr end return end - for i in [0.._n_closure_defs.length[ do - if _n_closure_defs[i] == old_child then - if new_child != null then - assert new_child isa AClosureDef - _n_closure_defs[i] = new_child - new_child.parent = self - else - _n_closure_defs.remove_at(i) - end - return - end - end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) v.enter_visit(_n_id) v.enter_visit(_n_args) - for n in _n_closure_defs do - v.enter_visit(n) - end end end redef class ACallAssignExpr @@ -5855,6 +7544,33 @@ redef class ACallAssignExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -5942,6 +7658,33 @@ redef class ACallReassignExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + redef fun n_assign_op=(node) + do + _n_assign_op = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -6005,6 +7748,25 @@ redef class ASuperExpr end end + redef fun n_qualified=(node) + do + _n_qualified = node + if node != null then + node.parent = self + end + end + redef fun n_kwsuper=(node) + do + _n_kwsuper = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_qualified != null then @@ -6066,6 +7828,23 @@ redef class AInitExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_kwinit=(node) + do + _n_kwinit = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -6078,8 +7857,7 @@ redef class ABraExpr init init_abraexpr ( n_expr: nullable AExpr, - n_args: nullable AExprs, - n_closure_defs: Collection[Object] # Should be Collection[AClosureDef] + n_args: nullable AExprs ) do empty_init @@ -6087,11 +7865,6 @@ redef class ABraExpr n_expr.parent = self _n_args = n_args.as(not null) n_args.parent = self - for n in n_closure_defs do - assert n isa AClosureDef - _n_closure_defs.add(n) - n.parent = self - end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6116,27 +7889,24 @@ redef class ABraExpr end return end - for i in [0.._n_closure_defs.length[ do - if _n_closure_defs[i] == old_child then - if new_child != null then - assert new_child isa AClosureDef - _n_closure_defs[i] = new_child - new_child.parent = self - else - _n_closure_defs.remove_at(i) - end - return - end - end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) v.enter_visit(_n_args) - for n in _n_closure_defs do - v.enter_visit(n) - end end end redef class ABraAssignExpr @@ -6204,6 +7974,28 @@ redef class ABraAssignExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -6277,6 +8069,28 @@ redef class ABraReassignExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_args=(node) + do + _n_args = node + node.parent = self + end + redef fun n_assign_op=(node) + do + _n_assign_op = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -6285,72 +8099,6 @@ redef class ABraReassignExpr v.enter_visit(_n_value) end end -redef class AClosureCallExpr - private init empty_init do end - - init init_aclosurecallexpr ( - n_id: nullable TId, - n_args: nullable AExprs, - n_closure_defs: Collection[Object] # Should be Collection[AClosureDef] - ) - do - empty_init - _n_id = n_id.as(not null) - n_id.parent = self - _n_args = n_args.as(not null) - n_args.parent = self - for n in n_closure_defs do - assert n isa AClosureDef - _n_closure_defs.add(n) - n.parent = self - end - end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_id == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TId - _n_id = new_child - else - abort - end - return - end - if _n_args == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa AExprs - _n_args = new_child - else - abort - end - return - end - for i in [0.._n_closure_defs.length[ do - if _n_closure_defs[i] == old_child then - if new_child != null then - assert new_child isa AClosureDef - _n_closure_defs[i] = new_child - new_child.parent = self - else - _n_closure_defs.remove_at(i) - end - return - end - end - end - - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_id) - v.enter_visit(_n_args) - for n in _n_closure_defs do - v.enter_visit(n) - end - end -end redef class AVarExpr private init empty_init do end @@ -6377,6 +8125,13 @@ redef class AVarExpr end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_id) @@ -6434,6 +8189,23 @@ redef class AVarAssignExpr end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign=(node) + do + _n_assign = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_id) @@ -6493,6 +8265,23 @@ redef class AVarReassignExpr end end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + redef fun n_assign_op=(node) + do + _n_assign_op = node + node.parent = self + end + redef fun n_value=(node) + do + _n_value = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_id) @@ -6505,7 +8294,8 @@ redef class ARangeExpr init init_arangeexpr ( n_expr: nullable AExpr, - n_expr2: nullable AExpr + n_expr2: nullable AExpr, + n_annotations: nullable AAnnotations ) do empty_init @@ -6513,6 +8303,10 @@ redef class ARangeExpr n_expr.parent = self _n_expr2 = n_expr2.as(not null) n_expr2.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6537,12 +8331,44 @@ redef class ARangeExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) v.enter_visit(_n_expr2) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ACrangeExpr @@ -6552,7 +8378,8 @@ redef class ACrangeExpr n_obra: nullable TObra, n_expr: nullable AExpr, n_expr2: nullable AExpr, - n_cbra: nullable TCbra + n_cbra: nullable TCbra, + n_annotations: nullable AAnnotations ) do empty_init @@ -6564,6 +8391,10 @@ redef class ACrangeExpr n_expr2.parent = self _n_cbra = n_cbra.as(not null) n_cbra.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6608,14 +8439,56 @@ redef class ACrangeExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_obra=(node) + do + _n_obra = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) v.enter_visit(_n_expr) v.enter_visit(_n_expr2) v.enter_visit(_n_cbra) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AOrangeExpr @@ -6625,7 +8498,8 @@ redef class AOrangeExpr n_obra: nullable TObra, n_expr: nullable AExpr, n_expr2: nullable AExpr, - n_cbra: nullable TObra + n_cbra: nullable TObra, + n_annotations: nullable AAnnotations ) do empty_init @@ -6637,6 +8511,10 @@ redef class AOrangeExpr n_expr2.parent = self _n_cbra = n_cbra.as(not null) n_cbra.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6681,26 +8559,73 @@ redef class AOrangeExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_obra=(node) + do + _n_obra = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_expr2=(node) + do + _n_expr2 = node + node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) v.enter_visit(_n_expr) v.enter_visit(_n_expr2) v.enter_visit(_n_cbra) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AArrayExpr private init empty_init do end init init_aarrayexpr ( - n_exprs: nullable AExprs + n_exprs: nullable AExprs, + n_annotations: nullable AAnnotations ) do empty_init _n_exprs = n_exprs.as(not null) n_exprs.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6715,23 +8640,55 @@ redef class AArrayExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_exprs=(node) + do + _n_exprs = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_exprs) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ASelfExpr private init empty_init do end init init_aselfexpr ( - n_kwself: nullable TKwself + n_kwself: nullable TKwself, + n_annotations: nullable AAnnotations ) do empty_init _n_kwself = n_kwself.as(not null) n_kwself.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6746,11 +8703,38 @@ redef class ASelfExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwself=(node) + do + _n_kwself = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwself) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AImplicitSelfExpr @@ -6765,6 +8749,8 @@ redef class AImplicitSelfExpr do end + + redef fun visit_all(v: Visitor) do end @@ -6773,12 +8759,17 @@ redef class ATrueExpr private init empty_init do end init init_atrueexpr ( - n_kwtrue: nullable TKwtrue + n_kwtrue: nullable TKwtrue, + n_annotations: nullable AAnnotations ) do empty_init _n_kwtrue = n_kwtrue.as(not null) n_kwtrue.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6793,23 +8784,55 @@ redef class ATrueExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwtrue=(node) + do + _n_kwtrue = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwtrue) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AFalseExpr private init empty_init do end init init_afalseexpr ( - n_kwfalse: nullable TKwfalse + n_kwfalse: nullable TKwfalse, + n_annotations: nullable AAnnotations ) do empty_init _n_kwfalse = n_kwfalse.as(not null) n_kwfalse.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6824,23 +8847,55 @@ redef class AFalseExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwfalse=(node) + do + _n_kwfalse = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwfalse) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ANullExpr private init empty_init do end init init_anullexpr ( - n_kwnull: nullable TKwnull + n_kwnull: nullable TKwnull, + n_annotations: nullable AAnnotations ) do empty_init _n_kwnull = n_kwnull.as(not null) n_kwnull.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6855,23 +8910,55 @@ redef class ANullExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_kwnull=(node) + do + _n_kwnull = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwnull) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AIntExpr private init empty_init do end init init_aintexpr ( - n_number: nullable TNumber + n_number: nullable TNumber, + n_annotations: nullable AAnnotations ) do empty_init _n_number = n_number.as(not null) n_number.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6886,23 +8973,55 @@ redef class AIntExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_number=(node) + do + _n_number = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_number) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AFloatExpr private init empty_init do end init init_afloatexpr ( - n_float: nullable TFloat + n_float: nullable TFloat, + n_annotations: nullable AAnnotations ) do empty_init _n_float = n_float.as(not null) n_float.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6917,23 +9036,55 @@ redef class AFloatExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_float=(node) + do + _n_float = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_float) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class ACharExpr private init empty_init do end init init_acharexpr ( - n_char: nullable TChar + n_char: nullable TChar, + n_annotations: nullable AAnnotations ) do empty_init _n_char = n_char.as(not null) n_char.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6948,23 +9099,55 @@ redef class ACharExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_char=(node) + do + _n_char = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_char) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AStringExpr private init empty_init do end init init_astringexpr ( - n_string: nullable TString + n_string: nullable TString, + n_annotations: nullable AAnnotations ) do empty_init _n_string = n_string.as(not null) n_string.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6979,11 +9162,38 @@ redef class AStringExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_string=(node) + do + _n_string = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_string) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AStartStringExpr @@ -7012,6 +9222,13 @@ redef class AStartStringExpr end end + redef fun n_string=(node) + do + _n_string = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_string) @@ -7043,6 +9260,13 @@ redef class AMidStringExpr end end + redef fun n_string=(node) + do + _n_string = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_string) @@ -7074,6 +9298,13 @@ redef class AEndStringExpr end end + redef fun n_string=(node) + do + _n_string = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_string) @@ -7083,7 +9314,8 @@ redef class ASuperstringExpr private init empty_init do end init init_asuperstringexpr ( - n_exprs: Collection[Object] # Should be Collection[AExpr] + n_exprs: Collection[Object], # Should be Collection[AExpr] + n_annotations: nullable AAnnotations ) do empty_init @@ -7092,6 +9324,10 @@ redef class ASuperstringExpr _n_exprs.add(n) n.parent = self end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -7108,13 +9344,35 @@ redef class ASuperstringExpr return end end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do for n in _n_exprs do v.enter_visit(n) end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AParExpr @@ -7123,7 +9381,8 @@ redef class AParExpr init init_aparexpr ( n_opar: nullable TOpar, n_expr: nullable AExpr, - n_cpar: nullable TCpar + n_cpar: nullable TCpar, + n_annotations: nullable AAnnotations ) do empty_init @@ -7133,6 +9392,10 @@ redef class AParExpr n_expr.parent = self _n_cpar = n_cpar.as(not null) n_cpar.parent = self + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -7167,13 +9430,50 @@ redef class AParExpr end return end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end end + redef fun n_opar=(node) + do + _n_opar = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_cpar=(node) + do + _n_cpar = node + node.parent = self + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_opar) v.enter_visit(_n_expr) v.enter_visit(_n_cpar) + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end end end redef class AAsCastExpr @@ -7254,6 +9554,33 @@ redef class AAsCastExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_kwas=(node) + do + _n_kwas = node + node.parent = self + end + redef fun n_opar=(node) + do + _n_opar = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_cpar=(node) + do + _n_cpar = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -7354,6 +9681,38 @@ redef class AAsNotnullExpr end end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_kwas=(node) + do + _n_kwas = node + node.parent = self + end + redef fun n_opar=(node) + do + _n_opar = node + node.parent = self + end + redef fun n_kwnot=(node) + do + _n_kwnot = node + node.parent = self + end + redef fun n_kwnull=(node) + do + _n_kwnull = node + node.parent = self + end + redef fun n_cpar=(node) + do + _n_cpar = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_expr) @@ -7416,6 +9775,23 @@ redef class AIssetAttrExpr end end + redef fun n_kwisset=(node) + do + _n_kwisset = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwisset) @@ -7488,6 +9864,28 @@ redef class ADebugTypeExpr end end + redef fun n_kwdebug=(node) + do + _n_kwdebug = node + node.parent = self + end + redef fun n_kwtype=(node) + do + _n_kwtype = node + node.parent = self + end + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwdebug) @@ -7527,6 +9925,8 @@ redef class AListExprs end end + + redef fun visit_all(v: Visitor) do for n in _n_exprs do @@ -7591,6 +9991,18 @@ redef class AParExprs end end + redef fun n_opar=(node) + do + _n_opar = node + node.parent = self + end + redef fun n_cpar=(node) + do + _n_cpar = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_opar) @@ -7657,6 +10069,18 @@ redef class ABraExprs end end + redef fun n_obra=(node) + do + _n_obra = node + node.parent = self + end + redef fun n_cbra=(node) + do + _n_cbra = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_obra) @@ -7692,6 +10116,13 @@ redef class APlusAssignOp end end + redef fun n_pluseq=(node) + do + _n_pluseq = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_pluseq) @@ -7723,191 +10154,16 @@ redef class AMinusAssignOp end end - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_minuseq) - end -end -redef class AClosureDef - private init empty_init do end - - init init_aclosuredef ( - n_bang: nullable TBang, - n_id: nullable AClosureId, - n_ids: Collection[Object], # Should be Collection[TId] - n_kwdo: nullable TKwdo, - n_expr: nullable AExpr, - n_label: nullable ALabel - ) - do - empty_init - _n_bang = n_bang.as(not null) - n_bang.parent = self - _n_id = n_id.as(not null) - n_id.parent = self - for n in n_ids do - assert n isa TId - _n_ids.add(n) - n.parent = self - end - _n_kwdo = n_kwdo - if n_kwdo != null then - n_kwdo.parent = self - end - _n_expr = n_expr - if n_expr != null then - n_expr.parent = self - end - _n_label = n_label - if n_label != null then - n_label.parent = self - end - end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_bang == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TBang - _n_bang = new_child - else - abort - end - return - end - if _n_id == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa AClosureId - _n_id = new_child - else - abort - end - return - end - for i in [0.._n_ids.length[ do - if _n_ids[i] == old_child then - if new_child != null then - assert new_child isa TId - _n_ids[i] = new_child - new_child.parent = self - else - _n_ids.remove_at(i) - end - return - end - end - if _n_kwdo == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TKwdo - _n_kwdo = new_child - else - _n_kwdo = null - end - return - end - if _n_expr == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa AExpr - _n_expr = new_child - else - _n_expr = null - end - return - end - if _n_label == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa ALabel - _n_label = new_child - else - _n_label = null - end - return - end - end - - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_bang) - v.enter_visit(_n_id) - for n in _n_ids do - v.enter_visit(n) - end - if _n_kwdo != null then - v.enter_visit(_n_kwdo.as(not null)) - end - if _n_expr != null then - v.enter_visit(_n_expr.as(not null)) - end - if _n_label != null then - v.enter_visit(_n_label.as(not null)) - end - end -end -redef class ASimpleClosureId - private init empty_init do end - - init init_asimpleclosureid ( - n_id: nullable TId - ) - do - empty_init - _n_id = n_id.as(not null) - n_id.parent = self - end - - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_id == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TId - _n_id = new_child - else - abort - end - return - end - end - - redef fun visit_all(v: Visitor) - do - v.enter_visit(_n_id) - end -end -redef class ABreakClosureId - private init empty_init do end - - init init_abreakclosureid ( - n_kwbreak: nullable TKwbreak - ) - do - empty_init - _n_kwbreak = n_kwbreak.as(not null) - n_kwbreak.parent = self - end + redef fun n_minuseq=(node) + do + _n_minuseq = node + node.parent = self + end - redef fun replace_child(old_child: ANode, new_child: nullable ANode) - do - if _n_kwbreak == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TKwbreak - _n_kwbreak = new_child - else - abort - end - return - end - end redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwbreak) + v.enter_visit(_n_minuseq) end end redef class AModuleName @@ -7969,6 +10225,20 @@ redef class AModuleName end end + redef fun n_quad=(node) + do + _n_quad = node + if node != null then + node.parent = self + end + end + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_quad != null then @@ -8024,6 +10294,13 @@ redef class AExternCalls end end + redef fun n_kwimport=(node) + do + _n_kwimport = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwimport) @@ -8044,6 +10321,8 @@ redef class AExternCall do end + + redef fun visit_all(v: Visitor) do end @@ -8074,6 +10353,13 @@ redef class ASuperExternCall end end + redef fun n_kwsuper=(node) + do + _n_kwsuper = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwsuper) @@ -8105,6 +10391,13 @@ redef class ALocalPropExternCall end end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_methid) @@ -8114,17 +10407,17 @@ redef class AFullPropExternCall private init empty_init do end init init_afullpropexterncall ( - n_classid: nullable TClassid, - n_quad: nullable TQuad, + n_type: nullable AType, + n_dot: nullable TDot, n_methid: nullable AMethid ) do empty_init - _n_classid = n_classid.as(not null) - n_classid.parent = self - _n_quad = n_quad - if n_quad != null then - n_quad.parent = self + _n_type = n_type.as(not null) + n_type.parent = self + _n_dot = n_dot + if n_dot != null then + n_dot.parent = self end _n_methid = n_methid.as(not null) n_methid.parent = self @@ -8132,23 +10425,23 @@ redef class AFullPropExternCall redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_classid == old_child then + if _n_type == old_child then if new_child != null then new_child.parent = self - assert new_child isa TClassid - _n_classid = new_child - else + assert new_child isa AType + _n_type = new_child + else abort end return end - if _n_quad == old_child then + if _n_dot == old_child then if new_child != null then new_child.parent = self - assert new_child isa TQuad - _n_quad = new_child + assert new_child isa TDot + _n_dot = new_child else - _n_quad = null + _n_dot = null end return end @@ -8164,11 +10457,30 @@ redef class AFullPropExternCall end end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_dot=(node) + do + _n_dot = node + if node != null then + node.parent = self + end + end + redef fun n_methid=(node) + do + _n_methid = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do - v.enter_visit(_n_classid) - if _n_quad != null then - v.enter_visit(_n_quad.as(not null)) + v.enter_visit(_n_type) + if _n_dot != null then + v.enter_visit(_n_dot.as(not null)) end v.enter_visit(_n_methid) end @@ -8177,21 +10489,21 @@ redef class AInitPropExternCall private init empty_init do end init init_ainitpropexterncall ( - n_classid: nullable TClassid + n_type: nullable AType ) do empty_init - _n_classid = n_classid.as(not null) - n_classid.parent = self + _n_type = n_type.as(not null) + n_type.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_classid == old_child then + if _n_type == old_child then if new_child != null then new_child.parent = self - assert new_child isa TClassid - _n_classid = new_child + assert new_child isa AType + _n_type = new_child else abort end @@ -8199,9 +10511,16 @@ redef class AInitPropExternCall end end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do - v.enter_visit(_n_classid) + v.enter_visit(_n_type) end end redef class ACastAsExternCall @@ -8209,6 +10528,7 @@ redef class ACastAsExternCall init init_acastasexterncall ( n_from_type: nullable AType, + n_dot: nullable TDot, n_kwas: nullable TKwas, n_to_type: nullable AType ) @@ -8216,6 +10536,10 @@ redef class ACastAsExternCall empty_init _n_from_type = n_from_type.as(not null) n_from_type.parent = self + _n_dot = n_dot + if n_dot != null then + n_dot.parent = self + end _n_kwas = n_kwas.as(not null) n_kwas.parent = self _n_to_type = n_to_type.as(not null) @@ -8234,6 +10558,16 @@ redef class ACastAsExternCall end return end + if _n_dot == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TDot + _n_dot = new_child + else + _n_dot = null + end + return + end if _n_kwas == old_child then if new_child != null then new_child.parent = self @@ -8256,9 +10590,36 @@ redef class ACastAsExternCall end end + redef fun n_from_type=(node) + do + _n_from_type = node + node.parent = self + end + redef fun n_dot=(node) + do + _n_dot = node + if node != null then + node.parent = self + end + end + redef fun n_kwas=(node) + do + _n_kwas = node + node.parent = self + end + redef fun n_to_type=(node) + do + _n_to_type = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_from_type) + if _n_dot != null then + v.enter_visit(_n_dot.as(not null)) + end v.enter_visit(_n_kwas) v.enter_visit(_n_to_type) end @@ -8315,6 +10676,23 @@ redef class AAsNullableExternCall end end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_kwas=(node) + do + _n_kwas = node + node.parent = self + end + redef fun n_kwnullable=(node) + do + _n_kwnullable = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_type) @@ -8387,6 +10765,28 @@ redef class AAsNotNullableExternCall end end + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + redef fun n_kwas=(node) + do + _n_kwas = node + node.parent = self + end + redef fun n_kwnot=(node) + do + _n_kwnot = node + node.parent = self + end + redef fun n_kwnullable=(node) + do + _n_kwnullable = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_type) @@ -8434,6 +10834,18 @@ redef class AInLanguage end end + redef fun n_kwin=(node) + do + _n_kwin = node + node.parent = self + end + redef fun n_string=(node) + do + _n_string = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do v.enter_visit(_n_kwin) @@ -8481,6 +10893,20 @@ redef class AExternCodeBlock end end + redef fun n_in_language=(node) + do + _n_in_language = node + if node != null then + node.parent = self + end + end + redef fun n_extern_code_segment=(node) + do + _n_extern_code_segment = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do if _n_in_language != null then @@ -8535,6 +10961,15 @@ redef class AQualified end end + redef fun n_classid=(node) + do + _n_classid = node + if node != null then + node.parent = self + end + end + + redef fun visit_all(v: Visitor) do for n in _n_id do @@ -8576,6 +11011,8 @@ redef class ADoc end end + + redef fun visit_all(v: Visitor) do for n in _n_comment do @@ -8583,6 +11020,597 @@ redef class ADoc end end end +redef class AAnnotations + private init empty_init do end + + init init_aannotations ( + n_at: nullable TAt, + n_opar: nullable TOpar, + n_items: Collection[Object], # Should be Collection[AAnnotation] + n_cpar: nullable TCpar + ) + do + empty_init + _n_at = n_at + if n_at != null then + n_at.parent = self + end + _n_opar = n_opar + if n_opar != null then + n_opar.parent = self + end + for n in n_items do + assert n isa AAnnotation + _n_items.add(n) + n.parent = self + end + _n_cpar = n_cpar + if n_cpar != null then + n_cpar.parent = self + end + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_at == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TAt + _n_at = new_child + else + _n_at = null + end + return + end + if _n_opar == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TOpar + _n_opar = new_child + else + _n_opar = null + end + return + end + for i in [0.._n_items.length[ do + if _n_items[i] == old_child then + if new_child != null then + assert new_child isa AAnnotation + _n_items[i] = new_child + new_child.parent = self + else + _n_items.remove_at(i) + end + return + end + end + if _n_cpar == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TCpar + _n_cpar = new_child + else + _n_cpar = null + end + return + end + end + + redef fun n_at=(node) + do + _n_at = node + if node != null then + node.parent = self + end + end + redef fun n_opar=(node) + do + _n_opar = node + if node != null then + node.parent = self + end + end + redef fun n_cpar=(node) + do + _n_cpar = node + if node != null then + node.parent = self + end + end + + + redef fun visit_all(v: Visitor) + do + if _n_at != null then + v.enter_visit(_n_at.as(not null)) + end + if _n_opar != null then + v.enter_visit(_n_opar.as(not null)) + end + for n in _n_items do + v.enter_visit(n) + end + if _n_cpar != null then + v.enter_visit(_n_cpar.as(not null)) + end + end +end +redef class AAnnotation + private init empty_init do end + + init init_aannotation ( + n_atid: nullable AAtid, + n_opar: nullable TOpar, + n_args: Collection[Object], # Should be Collection[AAtArg] + n_cpar: nullable TCpar, + n_annotations: nullable AAnnotations + ) + do + empty_init + _n_atid = n_atid.as(not null) + n_atid.parent = self + _n_opar = n_opar + if n_opar != null then + n_opar.parent = self + end + for n in n_args do + assert n isa AAtArg + _n_args.add(n) + n.parent = self + end + _n_cpar = n_cpar + if n_cpar != null then + n_cpar.parent = self + end + _n_annotations = n_annotations + if n_annotations != null then + n_annotations.parent = self + end + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_atid == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAtid + _n_atid = new_child + else + abort + end + return + end + if _n_opar == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TOpar + _n_opar = new_child + else + _n_opar = null + end + return + end + for i in [0.._n_args.length[ do + if _n_args[i] == old_child then + if new_child != null then + assert new_child isa AAtArg + _n_args[i] = new_child + new_child.parent = self + else + _n_args.remove_at(i) + end + return + end + end + if _n_cpar == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TCpar + _n_cpar = new_child + else + _n_cpar = null + end + return + end + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + _n_annotations = null + end + return + end + end + + redef fun n_atid=(node) + do + _n_atid = node + node.parent = self + end + redef fun n_opar=(node) + do + _n_opar = node + if node != null then + node.parent = self + end + end + redef fun n_cpar=(node) + do + _n_cpar = node + if node != null then + node.parent = self + end + end + redef fun n_annotations=(node) + do + _n_annotations = node + if node != null then + node.parent = self + end + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_atid) + if _n_opar != null then + v.enter_visit(_n_opar.as(not null)) + end + for n in _n_args do + v.enter_visit(n) + end + if _n_cpar != null then + v.enter_visit(_n_cpar.as(not null)) + end + if _n_annotations != null then + v.enter_visit(_n_annotations.as(not null)) + end + end +end +redef class ATypeAtArg + private init empty_init do end + + init init_atypeatarg ( + n_type: nullable AType + ) + do + empty_init + _n_type = n_type.as(not null) + n_type.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_type == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AType + _n_type = new_child + else + abort + end + return + end + end + + redef fun n_type=(node) + do + _n_type = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_type) + end +end +redef class AExprAtArg + private init empty_init do end + + init init_aexpratarg ( + n_expr: nullable AExpr + ) + do + empty_init + _n_expr = n_expr.as(not null) + n_expr.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_expr == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AExpr + _n_expr = new_child + else + abort + end + return + end + end + + redef fun n_expr=(node) + do + _n_expr = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_expr) + end +end +redef class AAtAtArg + private init empty_init do end + + init init_aatatarg ( + n_annotations: nullable AAnnotations + ) + do + empty_init + _n_annotations = n_annotations.as(not null) + n_annotations.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_annotations == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AAnnotations + _n_annotations = new_child + else + abort + end + return + end + end + + redef fun n_annotations=(node) + do + _n_annotations = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_annotations) + end +end +redef class AIdAtid + private init empty_init do end + + init init_aidatid ( + n_id: nullable TId + ) + do + empty_init + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TId + _n_id = new_child + else + abort + end + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end +redef class AKwexternAtid + private init empty_init do end + + init init_akwexternatid ( + n_id: nullable TKwextern + ) + do + empty_init + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwextern + _n_id = new_child + else + abort + end + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end +redef class AKwinternAtid + private init empty_init do end + + init init_akwinternatid ( + n_id: nullable TKwintern + ) + do + empty_init + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwintern + _n_id = new_child + else + abort + end + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end +redef class AKwreadableAtid + private init empty_init do end + + init init_akwreadableatid ( + n_id: nullable TKwreadable + ) + do + empty_init + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwreadable + _n_id = new_child + else + abort + end + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end +redef class AKwwritableAtid + private init empty_init do end + + init init_akwwritableatid ( + n_id: nullable TKwwritable + ) + do + empty_init + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwwritable + _n_id = new_child + else + abort + end + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end +redef class AKwimportAtid + private init empty_init do end + + init init_akwimportatid ( + n_id: nullable TKwimport + ) + do + empty_init + _n_id = n_id.as(not null) + n_id.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_id == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwimport + _n_id = new_child + else + abort + end + return + end + end + + redef fun n_id=(node) + do + _n_id = node + node.parent = self + end + + + redef fun visit_all(v: Visitor) + do + v.enter_visit(_n_id) + end +end redef class Start redef fun replace_child(old_child: ANode, new_child: nullable ANode)