X-Git-Url: http://nitlanguage.org diff --git a/src/parser/parser_prod.nit b/src/parser/parser_prod.nit index 155c10b..05daac5 100644 --- a/src/parser/parser_prod.nit +++ b/src/parser/parser_prod.nit @@ -1,78 +1,18 @@ # 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 -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 init init_amodule ( n_moduledecl: nullable AModuledecl, n_imports: Collection[Object], # Should be Collection[AImport] + n_extern_code_blocks: Collection[Object], # Should be Collection[AExternCodeBlock] n_classdefs: Collection[Object] # Should be Collection[AClassdef] ) do @@ -86,6 +26,11 @@ redef class AModule _n_imports.add(n) n.parent = self end + for n in n_extern_code_blocks do + assert n isa AExternCodeBlock + _n_extern_code_blocks.add(n) + n.parent = self + end for n in n_classdefs do assert n isa AClassdef _n_classdefs.add(n) @@ -117,6 +62,18 @@ redef class AModule return end end + for i in [0.._n_extern_code_blocks.length[ do + if _n_extern_code_blocks[i] == old_child then + if new_child != null then + assert new_child isa AExternCodeBlock + _n_extern_code_blocks[i] = new_child + new_child.parent = self + else + _n_extern_code_blocks.remove_at(i) + end + return + end + end for i in [0.._n_classdefs.length[ do if _n_classdefs[i] == old_child then if new_child != null then @@ -131,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 @@ -139,6 +105,9 @@ redef class AModule for n in _n_imports do v.enter_visit(n) end + for n in _n_extern_code_blocks do + v.enter_visit(n) + end for n in _n_classdefs do v.enter_visit(n) end @@ -150,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 @@ -162,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) @@ -196,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 @@ -205,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 @@ -213,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 @@ -223,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) @@ -257,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 @@ -318,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) @@ -337,6 +409,8 @@ redef class APublicVisibility do end + + redef fun visit_all(v: Visitor) do end @@ -367,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) @@ -398,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) @@ -429,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) @@ -444,8 +539,11 @@ 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] + n_propdefs: Collection[Object], # Should be Collection[APropdef] + n_kwend: nullable TKwend ) do empty_init @@ -470,6 +568,14 @@ 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 + end for n in n_superclasses do assert n isa ASuperclass _n_superclasses.add(n) @@ -480,6 +586,8 @@ redef class AStdClassdef _n_propdefs.add(n) n.parent = self end + _n_kwend = n_kwend.as(not null) + n_kwend.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -546,6 +654,26 @@ 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 + assert new_child isa AExternCodeBlock + _n_extern_code_block = new_child + else + _n_extern_code_block = null + end + return + end for i in [0.._n_superclasses.length[ do if _n_superclasses[i] == old_child then if new_child != null then @@ -570,8 +698,70 @@ redef class AStdClassdef return end end + if _n_kwend == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwend + _n_kwend = new_child + else + abort + 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_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 @@ -588,12 +778,19 @@ 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 for n in _n_superclasses do v.enter_visit(n) end for n in _n_propdefs do v.enter_visit(n) end + v.enter_visit(_n_kwend) end end redef class ATopClassdef @@ -627,6 +824,8 @@ redef class ATopClassdef end end + + redef fun visit_all(v: Visitor) do for n in _n_propdefs do @@ -665,6 +864,8 @@ redef class AMainClassdef end end + + redef fun visit_all(v: Visitor) do for n in _n_propdefs do @@ -698,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) @@ -742,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) @@ -774,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) @@ -805,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) @@ -814,12 +1048,17 @@ redef class AExternClasskind private init empty_init do end init init_aexternclasskind ( - n_kwextern: nullable TKwextern + n_kwextern: nullable TKwextern, + n_kwclass: nullable TKwclass ) do empty_init _n_kwextern = n_kwextern.as(not null) n_kwextern.parent = self + _n_kwclass = n_kwclass + if n_kwclass != null then + n_kwclass.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -834,11 +1073,38 @@ redef class AExternClasskind end return end + if _n_kwclass == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwclass + _n_kwclass = new_child + else + _n_kwclass = null + end + return + 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) + if _n_kwclass != null then + v.enter_visit(_n_kwclass.as(not null)) + end end end redef class AFormaldef @@ -846,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 @@ -856,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) @@ -880,57 +1151,79 @@ 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 private init empty_init do end init init_asuperclass ( - n_kwspecial: nullable TKwspecial, n_kwsuper: nullable TKwsuper, - n_type: nullable AType + n_type: nullable AType, + n_annotations: nullable AAnnotations ) do empty_init - _n_kwspecial = n_kwspecial - if n_kwspecial != null then - n_kwspecial.parent = self - end - _n_kwsuper = n_kwsuper - if n_kwsuper != null then - n_kwsuper.parent = self - end + _n_kwsuper = n_kwsuper.as(not null) + 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) do - if _n_kwspecial == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TKwspecial - _n_kwspecial = new_child - else - _n_kwspecial = null - end - return - end if _n_kwsuper == old_child then if new_child != null then new_child.parent = self assert new_child isa TKwsuper _n_kwsuper = new_child else - _n_kwsuper = null + abort end return end @@ -944,17 +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 - if _n_kwspecial != null then - v.enter_visit(_n_kwspecial.as(not null)) - end - if _n_kwsuper != null then - v.enter_visit(_n_kwsuper.as(not null)) - end + 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 @@ -970,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 @@ -1006,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 @@ -1104,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 @@ -1116,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 @@ -1141,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 @@ -1228,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 @@ -1250,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 @@ -1270,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) @@ -1334,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 @@ -1348,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 @@ -1445,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 @@ -1470,7 +2011,8 @@ redef class AExternMethPropdef n_methid: nullable AMethid, n_signature: nullable ASignature, n_extern: nullable TString, - n_extern_calls: nullable AExternCalls + n_extern_calls: nullable AExternCalls, + n_extern_code_block: nullable AExternCodeBlock ) do empty_init @@ -1498,6 +2040,10 @@ redef class AExternMethPropdef if n_extern_calls != null then n_extern_calls.parent = self end + _n_extern_code_block = n_extern_code_block + if n_extern_code_block != null then + n_extern_code_block.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -1582,11 +2128,78 @@ redef class AExternMethPropdef end return end - end - - redef fun visit_all(v: Visitor) - do - if _n_doc != null then + if _n_extern_code_block == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AExternCodeBlock + _n_extern_code_block = new_child + else + _n_extern_code_block = 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_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 v.enter_visit(_n_doc.as(not null)) end if _n_kwredef != null then @@ -1602,6 +2215,9 @@ redef class AExternMethPropdef if _n_extern_calls != null then v.enter_visit(_n_extern_calls.as(not null)) end + if _n_extern_code_block != null then + v.enter_visit(_n_extern_code_block.as(not null)) + end end end redef class AConcreteMethPropdef @@ -1614,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 @@ -1634,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 @@ -1702,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 @@ -1714,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 @@ -1726,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 @@ -1741,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 @@ -1763,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 @@ -1831,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 @@ -1843,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 @@ -1857,11 +2608,240 @@ 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 end end +redef class AExternInitPropdef + private init empty_init do end + + init init_aexterninitpropdef ( + n_doc: nullable ADoc, + n_kwredef: nullable TKwredef, + n_visibility: nullable AVisibility, + n_kwnew: nullable TKwnew, + n_methid: nullable AMethid, + n_signature: nullable ASignature, + n_extern: nullable TString, + n_extern_calls: nullable AExternCalls, + n_extern_code_block: nullable AExternCodeBlock + ) + do + empty_init + _n_doc = n_doc + if n_doc != null then + n_doc.parent = self + end + _n_kwredef = n_kwredef + if n_kwredef != null then + n_kwredef.parent = self + end + _n_visibility = n_visibility.as(not null) + n_visibility.parent = self + _n_kwnew = n_kwnew.as(not null) + n_kwnew.parent = self + _n_methid = n_methid + if n_methid != null then + n_methid.parent = self + end + _n_signature = n_signature.as(not null) + n_signature.parent = self + _n_extern = n_extern + if n_extern != null then + n_extern.parent = self + end + _n_extern_calls = n_extern_calls + if n_extern_calls != null then + n_extern_calls.parent = self + end + _n_extern_code_block = n_extern_code_block + if n_extern_code_block != null then + n_extern_code_block.parent = self + end + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_doc == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa ADoc + _n_doc = new_child + else + _n_doc = null + end + return + end + if _n_kwredef == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwredef + _n_kwredef = new_child + else + _n_kwredef = null + end + return + end + if _n_visibility == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AVisibility + _n_visibility = new_child + else + abort + end + return + end + if _n_kwnew == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwnew + _n_kwnew = new_child + else + abort + end + return + end + if _n_methid == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AMethid + _n_methid = new_child + else + _n_methid = null + 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_extern == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TString + _n_extern = new_child + else + _n_extern = null + end + return + end + if _n_extern_calls == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AExternCalls + _n_extern_calls = new_child + else + _n_extern_calls = null + end + return + end + if _n_extern_code_block == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AExternCodeBlock + _n_extern_code_block = new_child + else + _n_extern_code_block = 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_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 + v.enter_visit(_n_doc.as(not null)) + end + if _n_kwredef != null then + v.enter_visit(_n_kwredef.as(not null)) + end + v.enter_visit(_n_visibility) + v.enter_visit(_n_kwnew) + if _n_methid != null then + v.enter_visit(_n_methid.as(not null)) + end + v.enter_visit(_n_signature) + if _n_extern != null then + v.enter_visit(_n_extern.as(not null)) + end + if _n_extern_calls != null then + v.enter_visit(_n_extern_calls.as(not null)) + end + if _n_extern_code_block != null then + v.enter_visit(_n_extern_code_block.as(not null)) + end + end +end redef class AMainMethPropdef private init empty_init do end @@ -1905,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 @@ -1924,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 @@ -1944,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) @@ -2008,8 +3009,61 @@ redef class ATypePropdef 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_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 if _n_doc != null then @@ -2022,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 @@ -2065,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 @@ -2129,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 @@ -2166,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) @@ -2197,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) @@ -2228,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) @@ -2259,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) @@ -2290,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) @@ -2321,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) @@ -2352,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) @@ -2383,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) @@ -2414,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) @@ -2445,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) @@ -2476,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) @@ -2507,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) @@ -2538,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) @@ -2569,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) @@ -2613,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) @@ -2645,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) @@ -2689,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) @@ -2747,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) @@ -2758,30 +3996,44 @@ redef class ASignature private init empty_init do end init init_asignature ( + n_opar: nullable TOpar, n_params: Collection[Object], # Should be Collection[AParam] - n_type: nullable AType, - n_closure_decls: Collection[Object] # Should be Collection[AClosureDecl] + n_cpar: nullable TCpar, + n_type: nullable AType ) do empty_init + _n_opar = n_opar + if n_opar != null then + n_opar.parent = self + end for n in n_params do assert n isa AParam _n_params.add(n) n.parent = self end + _n_cpar = n_cpar + if n_cpar != null then + n_cpar.parent = self + end _n_type = n_type 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) do + 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_params.length[ do if _n_params[i] == old_child then if new_child != null then @@ -2794,6 +4046,16 @@ redef class ASignature 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_type == old_child then if new_child != null then new_child.parent = self @@ -2804,31 +4066,45 @@ 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 + v.enter_visit(_n_opar.as(not null)) + end for n in _n_params do v.enter_visit(n) end + if _n_cpar != null then + v.enter_visit(_n_cpar.as(not null)) + end 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 @@ -2837,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 @@ -2851,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) @@ -2885,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 @@ -2999,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 @@ -3014,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) @@ -3050,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 @@ -3061,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 @@ -3102,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) @@ -3112,7 +4390,8 @@ redef class ABlockExpr private init empty_init do end init init_ablockexpr ( - n_expr: Collection[Object] # Should be Collection[AExpr] + n_expr: Collection[Object], # Should be Collection[AExpr] + n_kwend: nullable TKwend ) do empty_init @@ -3121,6 +4400,10 @@ redef class ABlockExpr _n_expr.add(n) n.parent = self end + _n_kwend = n_kwend + if n_kwend != null then + n_kwend.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -3137,13 +4420,35 @@ redef class ABlockExpr return end end + if _n_kwend == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwend + _n_kwend = new_child + else + _n_kwend = null + end + return + 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 v.enter_visit(n) end + if _n_kwend != null then + v.enter_visit(_n_kwend.as(not null)) + end end end redef class AVardeclExpr @@ -3154,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 @@ -3174,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) @@ -3228,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) @@ -3243,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 @@ -3288,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 @@ -3354,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) @@ -3391,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) @@ -3454,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 @@ -3523,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) @@ -3603,6 +5054,32 @@ redef class AIfExpr 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_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) @@ -3706,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) @@ -3798,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) @@ -3867,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) @@ -3978,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) @@ -4063,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) @@ -4114,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) @@ -4146,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) @@ -4190,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) @@ -4235,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) @@ -4280,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) @@ -4325,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 @@ -4370,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 @@ -4415,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 ) @@ -4460,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) @@ -4505,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) @@ -4550,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) @@ -4595,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) @@ -4640,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) @@ -4685,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) @@ -4730,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) @@ -4775,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) @@ -4820,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) @@ -4865,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) @@ -4910,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) @@ -4955,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) @@ -5000,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) @@ -5045,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) @@ -5090,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) @@ -5135,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) @@ -5148,7 +7049,7 @@ redef class ANewExpr n_kwnew: nullable TKwnew, n_type: nullable AType, n_id: nullable TId, - n_args: Collection[Object] # Should be Collection[AExpr] + n_args: nullable AExprs ) do empty_init @@ -5160,11 +7061,8 @@ redef class ANewExpr if n_id != null then n_id.parent = self end - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -5199,20 +7097,42 @@ redef class ANewExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + 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) @@ -5220,9 +7140,7 @@ redef class ANewExpr if _n_id != null then v.enter_visit(_n_id.as(not null)) end - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) end end redef class AAttrExpr @@ -5264,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) @@ -5335,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) @@ -5408,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) @@ -5422,8 +7396,7 @@ redef class ACallExpr init init_acallexpr ( n_expr: nullable AExpr, n_id: nullable TId, - n_args: Collection[Object], # Should be Collection[AExpr] - n_closure_defs: Collection[Object] # Should be Collection[AClosureDef] + n_args: nullable AExprs ) do empty_init @@ -5431,16 +7404,8 @@ redef class ACallExpr n_expr.parent = self _n_id = n_id.as(not null) n_id.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end - for n in n_closure_defs do - assert n isa AClosureDef - _n_closure_defs.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -5465,42 +7430,40 @@ redef class ACallExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - 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 + return + 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) - for n in _n_args do - v.enter_visit(n) - end - for n in _n_closure_defs do - v.enter_visit(n) - end + v.enter_visit(_n_args) end end redef class ACallAssignExpr @@ -5509,7 +7472,7 @@ redef class ACallAssignExpr init init_acallassignexpr ( n_expr: nullable AExpr, n_id: nullable TId, - n_args: Collection[Object], # Should be Collection[AExpr] + n_args: nullable AExprs, n_assign: nullable TAssign, n_value: nullable AExpr ) @@ -5519,11 +7482,8 @@ redef class ACallAssignExpr n_expr.parent = self _n_id = n_id.as(not null) n_id.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self _n_assign = n_assign.as(not null) n_assign.parent = self _n_value = n_value.as(not null) @@ -5552,18 +7512,16 @@ redef class ACallAssignExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + end if _n_assign == old_child then if new_child != null then new_child.parent = self @@ -5586,13 +7544,38 @@ 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) v.enter_visit(_n_id) - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) v.enter_visit(_n_assign) v.enter_visit(_n_value) end @@ -5603,7 +7586,7 @@ redef class ACallReassignExpr init init_acallreassignexpr ( n_expr: nullable AExpr, n_id: nullable TId, - n_args: Collection[Object], # Should be Collection[AExpr] + n_args: nullable AExprs, n_assign_op: nullable AAssignOp, n_value: nullable AExpr ) @@ -5613,11 +7596,8 @@ redef class ACallReassignExpr n_expr.parent = self _n_id = n_id.as(not null) n_id.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self _n_assign_op = n_assign_op.as(not null) n_assign_op.parent = self _n_value = n_value.as(not null) @@ -5646,18 +7626,16 @@ redef class ACallReassignExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + end if _n_assign_op == old_child then if new_child != null then new_child.parent = self @@ -5680,13 +7658,38 @@ 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) v.enter_visit(_n_id) - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) v.enter_visit(_n_assign_op) v.enter_visit(_n_value) end @@ -5697,7 +7700,7 @@ redef class ASuperExpr init init_asuperexpr ( n_qualified: nullable AQualified, n_kwsuper: nullable TKwsuper, - n_args: Collection[Object] # Should be Collection[AExpr] + n_args: nullable AExprs ) do empty_init @@ -5707,11 +7710,8 @@ redef class ASuperExpr end _n_kwsuper = n_kwsuper.as(not null) n_kwsuper.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -5736,29 +7736,44 @@ redef class ASuperExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + 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 v.enter_visit(_n_qualified.as(not null)) end v.enter_visit(_n_kwsuper) - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) end end redef class AInitExpr @@ -5767,7 +7782,7 @@ redef class AInitExpr init init_ainitexpr ( n_expr: nullable AExpr, n_kwinit: nullable TKwinit, - n_args: Collection[Object] # Should be Collection[AExpr] + n_args: nullable AExprs ) do empty_init @@ -5775,11 +7790,8 @@ redef class AInitExpr n_expr.parent = self _n_kwinit = n_kwinit.as(not null) n_kwinit.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -5804,27 +7816,40 @@ redef class AInitExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + 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) v.enter_visit(_n_kwinit) - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) end end redef class ABraExpr @@ -5832,23 +7857,14 @@ redef class ABraExpr init init_abraexpr ( n_expr: nullable AExpr, - n_args: Collection[Object], # Should be Collection[AExpr] - n_closure_defs: Collection[Object] # Should be Collection[AClosureDef] + n_args: nullable AExprs ) do empty_init _n_expr = n_expr.as(not null) n_expr.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end - for n in n_closure_defs do - assert n isa AClosureDef - _n_closure_defs.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -5863,41 +7879,34 @@ redef class ABraExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return - end - 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 + 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 - end + return + 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) - for n in _n_args do - v.enter_visit(n) - end - for n in _n_closure_defs do - v.enter_visit(n) - end + v.enter_visit(_n_args) end end redef class ABraAssignExpr @@ -5905,7 +7914,7 @@ redef class ABraAssignExpr init init_abraassignexpr ( n_expr: nullable AExpr, - n_args: Collection[Object], # Should be Collection[AExpr] + n_args: nullable AExprs, n_assign: nullable TAssign, n_value: nullable AExpr ) @@ -5913,11 +7922,8 @@ redef class ABraAssignExpr empty_init _n_expr = n_expr.as(not null) n_expr.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self _n_assign = n_assign.as(not null) n_assign.parent = self _n_value = n_value.as(not null) @@ -5936,18 +7942,16 @@ redef class ABraAssignExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + end if _n_assign == old_child then if new_child != null then new_child.parent = self @@ -5970,12 +7974,32 @@ 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) - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) v.enter_visit(_n_assign) v.enter_visit(_n_value) end @@ -5985,7 +8009,7 @@ redef class ABraReassignExpr init init_abrareassignexpr ( n_expr: nullable AExpr, - n_args: Collection[Object], # Should be Collection[AExpr] + n_args: nullable AExprs, n_assign_op: nullable AAssignOp, n_value: nullable AExpr ) @@ -5993,11 +8017,8 @@ redef class ABraReassignExpr empty_init _n_expr = n_expr.as(not null) n_expr.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end + _n_args = n_args.as(not null) + n_args.parent = self _n_assign_op = n_assign_op.as(not null) n_assign_op.parent = self _n_value = n_value.as(not null) @@ -6016,18 +8037,16 @@ redef class ABraReassignExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return + 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 - end + return + end if _n_assign_op == old_child then if new_child != null then new_child.parent = self @@ -6050,38 +8069,46 @@ 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) - for n in _n_args do - v.enter_visit(n) - end + v.enter_visit(_n_args) v.enter_visit(_n_assign_op) v.enter_visit(_n_value) end end -redef class AClosureCallExpr +redef class AVarExpr private init empty_init do end - init init_aclosurecallexpr ( - n_id: nullable TId, - n_args: Collection[Object], # Should be Collection[AExpr] - n_closure_defs: Collection[Object] # Should be Collection[AClosureDef] + init init_avarexpr ( + n_id: nullable TId ) do empty_init _n_id = n_id.as(not null) n_id.parent = self - for n in n_args do - assert n isa AExpr - _n_args.add(n) - n.parent = self - end - 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) @@ -6096,68 +8123,14 @@ redef class AClosureCallExpr 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 AExpr - _n_args[i] = new_child - new_child.parent = self - else - _n_args.remove_at(i) - end - return - end - 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) - for n in _n_args do - v.enter_visit(n) - end - for n in _n_closure_defs do - v.enter_visit(n) - end end -end -redef class AVarExpr - private init empty_init do end - init init_avarexpr ( - n_id: nullable TId - ) - do - empty_init - _n_id = n_id.as(not null) - n_id.parent = self - end + redef fun n_id=(node) + do + _n_id = node + node.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 @@ -6216,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) @@ -6275,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) @@ -6287,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 @@ -6295,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) @@ -6319,31 +8331,84 @@ 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 private init empty_init do end init init_acrangeexpr ( + n_obra: nullable TObra, n_expr: nullable AExpr, - n_expr2: nullable AExpr + n_expr2: nullable AExpr, + n_cbra: nullable TCbra, + n_annotations: nullable AAnnotations ) do empty_init + _n_obra = n_obra.as(not null) + n_obra.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self _n_expr2 = n_expr2.as(not null) 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) do + if _n_obra == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TObra + _n_obra = new_child + else + abort + end + return + end if _n_expr == old_child then if new_child != null then new_child.parent = self @@ -6364,31 +8429,106 @@ redef class ACrangeExpr end return end + if _n_cbra == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TCbra + _n_cbra = new_child + else + abort + 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 private init empty_init do end init init_aorangeexpr ( + n_obra: nullable TObra, n_expr: nullable AExpr, - n_expr2: nullable AExpr + n_expr2: nullable AExpr, + n_cbra: nullable TObra, + n_annotations: nullable AAnnotations ) do empty_init + _n_obra = n_obra.as(not null) + n_obra.parent = self _n_expr = n_expr.as(not null) n_expr.parent = self _n_expr2 = n_expr2.as(not null) 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) do + if _n_obra == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TObra + _n_obra = new_child + else + abort + end + return + end if _n_expr == old_child then if new_child != null then new_child.parent = self @@ -6409,62 +8549,146 @@ redef class AOrangeExpr end return end + if _n_cbra == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TObra + _n_cbra = new_child + else + abort + 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: Collection[Object] # Should be Collection[AExpr] + n_exprs: nullable AExprs, + n_annotations: nullable AAnnotations ) do empty_init - for n in n_exprs do - assert n isa AExpr - _n_exprs.add(n) - n.parent = self + _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) do - for i in [0.._n_exprs.length[ do - if _n_exprs[i] == old_child then - if new_child != null then - assert new_child isa AExpr - _n_exprs[i] = new_child - new_child.parent = self - else - _n_exprs.remove_at(i) - end - return + if _n_exprs == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AExprs + _n_exprs = new_child + else + abort end - 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 - for n in _n_exprs do - v.enter_visit(n) - end + 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) @@ -6479,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 @@ -6498,6 +8749,8 @@ redef class AImplicitSelfExpr do end + + redef fun visit_all(v: Visitor) do end @@ -6506,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) @@ -6526,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) @@ -6557,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) @@ -6588,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) @@ -6619,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 visit_all(v: Visitor) - do - v.enter_visit(_n_number) + 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) @@ -6650,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) @@ -6681,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) @@ -6712,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 @@ -6745,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) @@ -6776,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) @@ -6807,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) @@ -6816,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 @@ -6825,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) @@ -6841,29 +9344,72 @@ 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 private init empty_init do end init init_aparexpr ( - n_expr: nullable AExpr + n_opar: nullable TOpar, + n_expr: nullable AExpr, + n_cpar: nullable TCpar, + n_annotations: nullable AAnnotations ) do empty_init + _n_opar = n_opar.as(not null) + n_opar.parent = self _n_expr = n_expr.as(not null) 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) do + 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 + abort + end + return + end if _n_expr == old_child then if new_child != null then new_child.parent = self @@ -6874,11 +9420,60 @@ redef class AParExpr end return 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 + abort + 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 @@ -6887,7 +9482,9 @@ redef class AAsCastExpr init init_aascastexpr ( n_expr: nullable AExpr, n_kwas: nullable TKwas, - n_type: nullable AType + n_opar: nullable TOpar, + n_type: nullable AType, + n_cpar: nullable TCpar ) do empty_init @@ -6895,8 +9492,12 @@ redef class AAsCastExpr n_expr.parent = self _n_kwas = n_kwas.as(not null) n_kwas.parent = self + _n_opar = n_opar.as(not null) + n_opar.parent = self _n_type = n_type.as(not null) n_type.parent = self + _n_cpar = n_cpar.as(not null) + n_cpar.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6921,6 +9522,16 @@ redef class AAsCastExpr 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 + abort + end + return + end if _n_type == old_child then if new_child != null then new_child.parent = self @@ -6931,13 +9542,52 @@ redef class AAsCastExpr end return 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 + abort + end + return + 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) v.enter_visit(_n_kwas) + v.enter_visit(_n_opar) v.enter_visit(_n_type) + v.enter_visit(_n_cpar) end end redef class AAsNotnullExpr @@ -6946,8 +9596,10 @@ redef class AAsNotnullExpr init init_aasnotnullexpr ( n_expr: nullable AExpr, n_kwas: nullable TKwas, + n_opar: nullable TOpar, n_kwnot: nullable TKwnot, - n_kwnull: nullable TKwnull + n_kwnull: nullable TKwnull, + n_cpar: nullable TCpar ) do empty_init @@ -6955,10 +9607,14 @@ redef class AAsNotnullExpr n_expr.parent = self _n_kwas = n_kwas.as(not null) n_kwas.parent = self + _n_opar = n_opar.as(not null) + n_opar.parent = self _n_kwnot = n_kwnot.as(not null) n_kwnot.parent = self _n_kwnull = n_kwnull.as(not null) n_kwnull.parent = self + _n_cpar = n_cpar.as(not null) + n_cpar.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) @@ -6983,6 +9639,16 @@ redef class AAsNotnullExpr 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 + abort + end + return + end if _n_kwnot == old_child then if new_child != null then new_child.parent = self @@ -7003,14 +9669,58 @@ redef class AAsNotnullExpr end return 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 + abort + end + return + 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) v.enter_visit(_n_kwas) + v.enter_visit(_n_opar) v.enter_visit(_n_kwnot) v.enter_visit(_n_kwnull) + v.enter_visit(_n_cpar) end end redef class AIssetAttrExpr @@ -7065,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) @@ -7072,25 +9799,64 @@ redef class AIssetAttrExpr v.enter_visit(_n_id) end end -redef class APlusAssignOp +redef class ADebugTypeExpr private init empty_init do end - init init_aplusassignop ( - n_pluseq: nullable TPluseq + init init_adebugtypeexpr ( + n_kwdebug: nullable TKwdebug, + n_kwtype: nullable TKwtype, + n_expr: nullable AExpr, + n_type: nullable AType ) do empty_init - _n_pluseq = n_pluseq.as(not null) - n_pluseq.parent = self + _n_kwdebug = n_kwdebug.as(not null) + n_kwdebug.parent = self + _n_kwtype = n_kwtype.as(not null) + n_kwtype.parent = self + _n_expr = n_expr.as(not null) + n_expr.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_pluseq == old_child then + if _n_kwdebug == old_child then if new_child != null then new_child.parent = self - assert new_child isa TPluseq - _n_pluseq = new_child + assert new_child isa TKwdebug + _n_kwdebug = new_child + else + abort + end + return + end + if _n_kwtype == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TKwtype + _n_kwtype = new_child + else + abort + 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 + abort + end + return + end + 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 @@ -7098,181 +9864,251 @@ redef class APlusAssignOp 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_pluseq) + v.enter_visit(_n_kwdebug) + v.enter_visit(_n_kwtype) + v.enter_visit(_n_expr) + v.enter_visit(_n_type) end end -redef class AMinusAssignOp +redef class AListExprs private init empty_init do end - init init_aminusassignop ( - n_minuseq: nullable TMinuseq + init init_alistexprs ( + n_exprs: Collection[Object] # Should be Collection[AExpr] ) do empty_init - _n_minuseq = n_minuseq.as(not null) - n_minuseq.parent = self + for n in n_exprs do + assert n isa AExpr + _n_exprs.add(n) + n.parent = self + end end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_minuseq == old_child then - if new_child != null then - new_child.parent = self - assert new_child isa TMinuseq - _n_minuseq = new_child - else - abort + for i in [0.._n_exprs.length[ do + if _n_exprs[i] == old_child then + if new_child != null then + assert new_child isa AExpr + _n_exprs[i] = new_child + new_child.parent = self + else + _n_exprs.remove_at(i) + end + return end - return - end + end end + + redef fun visit_all(v: Visitor) do - v.enter_visit(_n_minuseq) + for n in _n_exprs do + v.enter_visit(n) + end end end -redef class AClosureDef +redef class AParExprs 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 + init init_aparexprs ( + n_opar: nullable TOpar, + n_exprs: Collection[Object], # Should be Collection[AExpr] + n_cpar: nullable TCpar ) 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_opar = n_opar.as(not null) + n_opar.parent = self + for n in n_exprs do + assert n isa AExpr + _n_exprs.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 + _n_cpar = n_cpar.as(not null) + n_cpar.parent = self 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 _n_opar == old_child then if new_child != null then new_child.parent = self - assert new_child isa AClosureId - _n_id = new_child + assert new_child isa TOpar + _n_opar = new_child else abort end return end - for i in [0.._n_ids.length[ do - if _n_ids[i] == old_child then + for i in [0.._n_exprs.length[ do + if _n_exprs[i] == old_child then if new_child != null then - assert new_child isa TId - _n_ids[i] = new_child + assert new_child isa AExpr + _n_exprs[i] = new_child new_child.parent = self else - _n_ids.remove_at(i) + _n_exprs.remove_at(i) end return end end - if _n_kwdo == old_child then + if _n_cpar == old_child then if new_child != null then new_child.parent = self - assert new_child isa TKwdo - _n_kwdo = new_child + assert new_child isa TCpar + _n_cpar = new_child else - _n_kwdo = null + abort end return end - if _n_expr == old_child then + 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) + for n in _n_exprs do + v.enter_visit(n) + end + v.enter_visit(_n_cpar) + end +end +redef class ABraExprs + private init empty_init do end + + init init_abraexprs ( + n_obra: nullable TObra, + n_exprs: Collection[Object], # Should be Collection[AExpr] + n_cbra: nullable TCbra + ) + do + empty_init + _n_obra = n_obra.as(not null) + n_obra.parent = self + for n in n_exprs do + assert n isa AExpr + _n_exprs.add(n) + n.parent = self + end + _n_cbra = n_cbra.as(not null) + n_cbra.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_obra == 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 TObra + _n_obra = new_child else - _n_expr = null + abort end return end - if _n_label == old_child then + for i in [0.._n_exprs.length[ do + if _n_exprs[i] == old_child then + if new_child != null then + assert new_child isa AExpr + _n_exprs[i] = new_child + new_child.parent = self + else + _n_exprs.remove_at(i) + end + return + end + end + if _n_cbra == old_child then if new_child != null then new_child.parent = self - assert new_child isa ALabel - _n_label = new_child + assert new_child isa TCbra + _n_cbra = new_child else - _n_label = null + abort end return 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_bang) - v.enter_visit(_n_id) - for n in _n_ids do + v.enter_visit(_n_obra) + for n in _n_exprs 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 + v.enter_visit(_n_cbra) end end -redef class ASimpleClosureId +redef class APlusAssignOp private init empty_init do end - init init_asimpleclosureid ( - n_id: nullable TId + init init_aplusassignop ( + n_pluseq: nullable TPluseq ) do empty_init - _n_id = n_id.as(not null) - n_id.parent = self + _n_pluseq = n_pluseq.as(not null) + n_pluseq.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_id == old_child then + if _n_pluseq == old_child then if new_child != null then new_child.parent = self - assert new_child isa TId - _n_id = new_child + assert new_child isa TPluseq + _n_pluseq = new_child else abort end @@ -7280,30 +10116,37 @@ redef class ASimpleClosureId 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_id) + v.enter_visit(_n_pluseq) end end -redef class ABreakClosureId +redef class AMinusAssignOp private init empty_init do end - init init_abreakclosureid ( - n_kwbreak: nullable TKwbreak + init init_aminusassignop ( + n_minuseq: nullable TMinuseq ) do empty_init - _n_kwbreak = n_kwbreak.as(not null) - n_kwbreak.parent = self + _n_minuseq = n_minuseq.as(not null) + n_minuseq.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - if _n_kwbreak == old_child then + if _n_minuseq == old_child then if new_child != null then new_child.parent = self - assert new_child isa TKwbreak - _n_kwbreak = new_child + assert new_child isa TMinuseq + _n_minuseq = new_child else abort end @@ -7311,9 +10154,16 @@ redef class ABreakClosureId end end + redef fun n_minuseq=(node) + do + _n_minuseq = node + node.parent = self + end + + redef fun visit_all(v: Visitor) do - v.enter_visit(_n_kwbreak) + v.enter_visit(_n_minuseq) end end redef class AModuleName @@ -7375,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 @@ -7430,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) @@ -7450,6 +10321,8 @@ redef class AExternCall do end + + redef fun visit_all(v: Visitor) do end @@ -7480,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) @@ -7511,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) @@ -7520,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 @@ -7538,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 + 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 @@ -7570,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 @@ -7583,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 @@ -7605,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 @@ -7615,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 ) @@ -7622,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) @@ -7640,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 @@ -7662,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 @@ -7721,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) @@ -7793,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) @@ -7801,52 +10795,181 @@ redef class AAsNotNullableExternCall v.enter_visit(_n_kwnullable) end end -redef class AQualified +redef class AInLanguage private init empty_init do end - init init_aqualified ( - n_id: Collection[Object], # Should be Collection[TId] - n_classid: nullable TClassid + init init_ainlanguage ( + n_kwin: nullable TKwin, + n_string: nullable TString ) do empty_init - for n in n_id do - assert n isa TId - _n_id.add(n) - n.parent = self - end - _n_classid = n_classid - if n_classid != null then - n_classid.parent = self - end + _n_kwin = n_kwin.as(not null) + n_kwin.parent = self + _n_string = n_string.as(not null) + n_string.parent = self end redef fun replace_child(old_child: ANode, new_child: nullable ANode) do - for i in [0.._n_id.length[ do - if _n_id[i] == old_child then - if new_child != null then - assert new_child isa TId - _n_id[i] = new_child - new_child.parent = self - else - _n_id.remove_at(i) - end - return - end - end - if _n_classid == old_child then + if _n_kwin == 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 TKwin + _n_kwin = new_child else - _n_classid = null + abort end return end - end - + if _n_string == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TString + _n_string = new_child + else + abort + end + return + 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) + v.enter_visit(_n_string) + end +end +redef class AExternCodeBlock + private init empty_init do end + + init init_aexterncodeblock ( + n_in_language: nullable AInLanguage, + n_extern_code_segment: nullable TExternCodeSegment + ) + do + empty_init + _n_in_language = n_in_language + if n_in_language != null then + n_in_language.parent = self + end + _n_extern_code_segment = n_extern_code_segment.as(not null) + n_extern_code_segment.parent = self + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + if _n_in_language == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa AInLanguage + _n_in_language = new_child + else + _n_in_language = null + end + return + end + if _n_extern_code_segment == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TExternCodeSegment + _n_extern_code_segment = new_child + else + abort + end + return + 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 + v.enter_visit(_n_in_language.as(not null)) + end + v.enter_visit(_n_extern_code_segment) + end +end +redef class AQualified + private init empty_init do end + + init init_aqualified ( + n_id: Collection[Object], # Should be Collection[TId] + n_classid: nullable TClassid + ) + do + empty_init + for n in n_id do + assert n isa TId + _n_id.add(n) + n.parent = self + end + _n_classid = n_classid + if n_classid != null then + n_classid.parent = self + end + end + + redef fun replace_child(old_child: ANode, new_child: nullable ANode) + do + for i in [0.._n_id.length[ do + if _n_id[i] == old_child then + if new_child != null then + assert new_child isa TId + _n_id[i] = new_child + new_child.parent = self + else + _n_id.remove_at(i) + end + return + end + end + if _n_classid == old_child then + if new_child != null then + new_child.parent = self + assert new_child isa TClassid + _n_classid = new_child + else + _n_classid = null + end + return + 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 @@ -7888,6 +11011,8 @@ redef class ADoc end end + + redef fun visit_all(v: Visitor) do for n in _n_comment do @@ -7895,18 +11020,601 @@ redef class ADoc end end end +redef class AAnnotations + private init empty_init do end -redef class Start - init( - n_base: nullable AModule, - n_eof: EOF) + init init_aannotations ( + n_at: nullable TAt, + n_opar: nullable TOpar, + n_items: Collection[Object], # Should be Collection[AAnnotation] + n_cpar: nullable TCpar + ) do - _n_base = n_base - _n_eof = n_eof + 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) + do if _n_base == old_child then if new_child == null then else