n.parent = self
end
end
+ redef meth n_kwvar=(n: TKwvar)
+ do
+ _n_kwvar = n
+ if n != null then
+ n.parent = self
+ end
+ end
redef meth n_id=(n: TAttrid)
do
_n_id = n
n_kwredef: TKwredef ,
n_visibility: PVisibility ,
n_kwattr: TKwattr ,
+ n_kwvar: TKwvar ,
n_id: TAttrid ,
n_type: PType ,
n_expr: PExpr
if n_kwattr != null then
n_kwattr.parent = self
end
+ _n_kwvar = n_kwvar
+ if n_kwvar != null then
+ n_kwvar.parent = self
+ end
_n_id = n_id
if n_id != null then
n_id.parent = self
end
return
end
+ if _n_kwvar == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwvar
+ _n_kwvar = new_child
+ else
+ _n_kwvar = null
+ end
+ return
+ end
if _n_id == old_child then
if new_child != null then
new_child.parent = self
if _n_kwattr != null then
v.visit(_n_kwattr)
end
+ if _n_kwvar != null then
+ v.visit(_n_kwvar)
+ end
if _n_id != null then
v.visit(_n_id)
end
if _n_kwattr != null then
v.visit(_n_kwattr)
end
+ if _n_kwvar != null then
+ v.visit(_n_kwvar)
+ end
if _n_id != null then
v.visit(_n_id)
end
init init_asignature (
n_params: Array[Object] , # Should be Array[PParam]
- n_type: PType
+ n_type: PType ,
+ n_closure_decls: Array[Object] # Should be Array[PClosureDecl]
)
do
empty_init
if n_type != null then
n_type.parent = self
end
+ _n_closure_decls = new List[PClosureDecl]
+ for n in n_closure_decls do
+ assert n isa PClosureDecl
+ _n_closure_decls.add(n)
+ n.parent = self
+ end
end
redef meth replace_child(old_child: PNode, new_child: PNode)
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 PClosureDecl
+ _n_closure_decls[i] = new_child
+ new_child.parent = self
+ else
+ _n_closure_decls.remove_at(i)
+ end
+ return
+ end
+ end
end
redef meth visit_all(v: Visitor)
if _n_type != null then
v.visit(_n_type)
end
+ for n in _n_closure_decls do
+ v.visit(n)
+ end
end
redef meth visit_all_reverse(v: Visitor)
if _n_type != null then
v.visit(_n_type)
end
+ do
+ var i = _n_closure_decls.length
+ while i >= 0 do
+ v.visit(_n_closure_decls[i])
+ i = i - 1
+ end
+ end
end
end
redef class AParam
end
end
end
+redef class AClosureDecl
+ redef meth n_kwwith=(n: TKwwith)
+ do
+ _n_kwwith = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_kwbreak=(n: TKwbreak)
+ do
+ _n_kwbreak = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_id=(n: TId)
+ do
+ _n_id = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_signature=(n: PSignature)
+ do
+ _n_signature = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_expr=(n: PExpr)
+ do
+ _n_expr = n
+ if n != null then
+ n.parent = self
+ end
+ end
+
+ private init empty_init do end
+
+ init init_aclosuredecl (
+ n_kwwith: TKwwith ,
+ n_kwbreak: TKwbreak ,
+ n_id: TId ,
+ n_signature: PSignature ,
+ n_expr: PExpr
+ )
+ do
+ empty_init
+ _n_kwwith = n_kwwith
+ if n_kwwith != null then
+ n_kwwith.parent = self
+ end
+ _n_kwbreak = n_kwbreak
+ if n_kwbreak != null then
+ n_kwbreak.parent = self
+ end
+ _n_id = n_id
+ if n_id != null then
+ n_id.parent = self
+ end
+ _n_signature = n_signature
+ if n_signature != null then
+ n_signature.parent = self
+ end
+ _n_expr = n_expr
+ if n_expr != null then
+ n_expr.parent = self
+ end
+ end
+
+ redef meth replace_child(old_child: PNode, new_child: PNode)
+ do
+ assert old_child != null
+ if _n_kwwith == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwwith
+ _n_kwwith = new_child
+ else
+ _n_kwwith = null
+ end
+ return
+ end
+ 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_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TId
+ _n_id = new_child
+ else
+ _n_id = null
+ end
+ return
+ end
+ if _n_signature == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa PSignature
+ _n_signature = new_child
+ else
+ _n_signature = null
+ end
+ return
+ end
+ if _n_expr == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa PExpr
+ _n_expr = new_child
+ else
+ _n_expr = null
+ end
+ return
+ end
+ end
+
+ redef meth visit_all(v: Visitor)
+ do
+ if _n_kwwith != null then
+ v.visit(_n_kwwith)
+ end
+ if _n_kwbreak != null then
+ v.visit(_n_kwbreak)
+ end
+ if _n_id != null then
+ v.visit(_n_id)
+ end
+ if _n_signature != null then
+ v.visit(_n_signature)
+ end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
+ end
+
+ redef meth visit_all_reverse(v: Visitor)
+ do
+ if _n_kwwith != null then
+ v.visit(_n_kwwith)
+ end
+ if _n_kwbreak != null then
+ v.visit(_n_kwbreak)
+ end
+ if _n_id != null then
+ v.visit(_n_id)
+ end
+ if _n_signature != null then
+ v.visit(_n_signature)
+ end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
+ end
+end
redef class AType
redef meth n_id=(n: TClassid)
do
n.parent = self
end
end
+ redef meth n_expr=(n: PExpr)
+ do
+ _n_expr = n
+ if n != null then
+ n.parent = self
+ end
+ end
private init empty_init do end
init init_abreakexpr (
- n_kwbreak: TKwbreak
+ n_kwbreak: TKwbreak ,
+ n_expr: PExpr
)
do
empty_init
if n_kwbreak != null then
n_kwbreak.parent = self
end
+ _n_expr = n_expr
+ if n_expr != null then
+ n_expr.parent = self
+ end
end
redef meth replace_child(old_child: PNode, new_child: PNode)
end
return
end
+ if _n_expr == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa PExpr
+ _n_expr = new_child
+ else
+ _n_expr = null
+ end
+ return
+ end
end
redef meth visit_all(v: Visitor)
if _n_kwbreak != null then
v.visit(_n_kwbreak)
end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
end
redef meth visit_all_reverse(v: Visitor)
if _n_kwbreak != null then
v.visit(_n_kwbreak)
end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
end
end
redef class AAbortExpr
n.parent = self
end
end
+ redef meth n_expr=(n: PExpr)
+ do
+ _n_expr = n
+ if n != null then
+ n.parent = self
+ end
+ end
private init empty_init do end
init init_acontinueexpr (
- n_kwcontinue: TKwcontinue
+ n_kwcontinue: TKwcontinue ,
+ n_expr: PExpr
)
do
empty_init
if n_kwcontinue != null then
n_kwcontinue.parent = self
end
+ _n_expr = n_expr
+ if n_expr != null then
+ n_expr.parent = self
+ end
end
redef meth replace_child(old_child: PNode, new_child: PNode)
end
return
end
+ if _n_expr == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa PExpr
+ _n_expr = new_child
+ else
+ _n_expr = null
+ end
+ return
+ end
end
redef meth visit_all(v: Visitor)
if _n_kwcontinue != null then
v.visit(_n_kwcontinue)
end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
end
redef meth visit_all_reverse(v: Visitor)
if _n_kwcontinue != null then
v.visit(_n_kwcontinue)
end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
end
end
redef class ADoExpr
redef meth n_kwwhile=(n: TKwwhile)
do
_n_kwwhile = n
- if n != null then
- n.parent = self
- end
- end
- redef meth n_expr=(n: PExpr)
- do
- _n_expr = n
- if n != null then
- n.parent = self
- end
- end
- redef meth n_kwdo=(n: TKwdo)
- do
- _n_kwdo = n
- if n != null then
- n.parent = self
- end
- end
- redef meth n_block=(n: PExpr)
- do
- _n_block = n
- if n != null then
- n.parent = self
- end
- end
-
- private init empty_init do end
-
- init init_awhileexpr (
- n_kwwhile: TKwwhile ,
- n_expr: PExpr ,
- n_kwdo: TKwdo ,
- n_block: PExpr
- )
- do
- empty_init
- _n_kwwhile = n_kwwhile
- if n_kwwhile != null then
- n_kwwhile.parent = self
- end
- _n_expr = n_expr
- if n_expr != null then
- n_expr.parent = self
- end
- _n_kwdo = n_kwdo
- if n_kwdo != null then
- n_kwdo.parent = self
- end
- _n_block = n_block
- if n_block != null then
- n_block.parent = self
- end
- end
-
- redef meth replace_child(old_child: PNode, new_child: PNode)
- do
- assert old_child != null
- if _n_kwwhile == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa TKwwhile
- _n_kwwhile = new_child
- else
- _n_kwwhile = null
- end
- return
- end
- if _n_expr == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa PExpr
- _n_expr = new_child
- else
- _n_expr = null
- end
- return
- end
- if _n_kwdo == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa TKwdo
- _n_kwdo = new_child
- else
- _n_kwdo = null
- end
- return
- end
- if _n_block == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa PExpr
- _n_block = new_child
- else
- _n_block = null
- end
- return
- end
- end
-
- redef meth visit_all(v: Visitor)
- do
- if _n_kwwhile != null then
- v.visit(_n_kwwhile)
- end
- if _n_expr != null then
- v.visit(_n_expr)
- end
- if _n_kwdo != null then
- v.visit(_n_kwdo)
- end
- if _n_block != null then
- v.visit(_n_block)
- end
- end
-
- redef meth visit_all_reverse(v: Visitor)
- do
- if _n_kwwhile != null then
- v.visit(_n_kwwhile)
- end
- if _n_expr != null then
- v.visit(_n_expr)
- end
- if _n_kwdo != null then
- v.visit(_n_kwdo)
- end
- if _n_block != null then
- v.visit(_n_block)
+ if n != null then
+ n.parent = self
end
end
-end
-redef class AForExpr
- redef meth n_vardecl=(n: PExpr)
+ redef meth n_expr=(n: PExpr)
do
- _n_vardecl = n
+ _n_expr = n
if n != null then
n.parent = self
end
private init empty_init do end
- init init_aforexpr (
- n_vardecl: PExpr ,
+ init init_awhileexpr (
+ n_kwwhile: TKwwhile ,
+ n_expr: PExpr ,
n_kwdo: TKwdo ,
n_block: PExpr
)
do
empty_init
- _n_vardecl = n_vardecl
- if n_vardecl != null then
- n_vardecl.parent = self
+ _n_kwwhile = n_kwwhile
+ if n_kwwhile != null then
+ n_kwwhile.parent = self
+ end
+ _n_expr = n_expr
+ if n_expr != null then
+ n_expr.parent = self
end
_n_kwdo = n_kwdo
if n_kwdo != null then
redef meth replace_child(old_child: PNode, new_child: PNode)
do
assert old_child != null
- if _n_vardecl == old_child then
+ if _n_kwwhile == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwwhile
+ _n_kwwhile = new_child
+ else
+ _n_kwwhile = null
+ end
+ return
+ end
+ if _n_expr == old_child then
if new_child != null then
new_child.parent = self
assert new_child isa PExpr
- _n_vardecl = new_child
+ _n_expr = new_child
else
- _n_vardecl = null
+ _n_expr = null
end
return
end
redef meth visit_all(v: Visitor)
do
- if _n_vardecl != null then
- v.visit(_n_vardecl)
+ if _n_kwwhile != null then
+ v.visit(_n_kwwhile)
+ end
+ if _n_expr != null then
+ v.visit(_n_expr)
end
if _n_kwdo != null then
v.visit(_n_kwdo)
redef meth visit_all_reverse(v: Visitor)
do
- if _n_vardecl != null then
- v.visit(_n_vardecl)
+ if _n_kwwhile != null then
+ v.visit(_n_kwwhile)
+ end
+ if _n_expr != null then
+ v.visit(_n_expr)
end
if _n_kwdo != null then
v.visit(_n_kwdo)
end
end
end
-redef class AForVardeclExpr
+redef class AForExpr
redef meth n_kwfor=(n: TKwfor)
do
_n_kwfor = n
n.parent = self
end
end
+ redef meth n_kwdo=(n: TKwdo)
+ do
+ _n_kwdo = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_block=(n: PExpr)
+ do
+ _n_block = n
+ if n != null then
+ n.parent = self
+ end
+ end
private init empty_init do end
- init init_aforvardeclexpr (
+ init init_aforexpr (
n_kwfor: TKwfor ,
n_id: TId ,
- n_expr: PExpr
+ n_expr: PExpr ,
+ n_kwdo: TKwdo ,
+ n_block: PExpr
)
do
empty_init
if n_expr != null then
n_expr.parent = self
end
+ _n_kwdo = n_kwdo
+ if n_kwdo != null then
+ n_kwdo.parent = self
+ end
+ _n_block = n_block
+ if n_block != null then
+ n_block.parent = self
+ end
end
redef meth replace_child(old_child: PNode, new_child: PNode)
end
return
end
+ if _n_kwdo == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwdo
+ _n_kwdo = new_child
+ else
+ _n_kwdo = null
+ end
+ return
+ end
+ if _n_block == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa PExpr
+ _n_block = new_child
+ else
+ _n_block = null
+ end
+ return
+ end
end
redef meth visit_all(v: Visitor)
if _n_expr != null then
v.visit(_n_expr)
end
+ if _n_kwdo != null then
+ v.visit(_n_kwdo)
+ end
+ if _n_block != null then
+ v.visit(_n_block)
+ end
end
redef meth visit_all_reverse(v: Visitor)
if _n_expr != null then
v.visit(_n_expr)
end
+ if _n_kwdo != null then
+ v.visit(_n_kwdo)
+ end
+ if _n_block != null then
+ v.visit(_n_block)
+ end
end
end
redef class AAssertExpr
init init_acallexpr (
n_expr: PExpr ,
n_id: TId ,
- n_args: Array[Object] # Should be Array[PExpr]
+ n_args: Array[Object] , # Should be Array[PExpr]
+ n_closure_defs: Array[Object] # Should be Array[PClosureDef]
)
do
empty_init
_n_args.add(n)
n.parent = self
end
+ _n_closure_defs = new List[PClosureDef]
+ for n in n_closure_defs do
+ assert n isa PClosureDef
+ _n_closure_defs.add(n)
+ n.parent = self
+ end
end
redef meth replace_child(old_child: PNode, new_child: PNode)
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 PClosureDef
+ _n_closure_defs[i] = new_child
+ new_child.parent = self
+ else
+ _n_closure_defs.remove_at(i)
+ end
+ return
+ end
+ end
end
redef meth visit_all(v: Visitor)
for n in _n_args do
v.visit(n)
end
+ for n in _n_closure_defs do
+ v.visit(n)
+ end
end
redef meth visit_all_reverse(v: Visitor)
i = i - 1
end
end
+ do
+ var i = _n_closure_defs.length
+ while i >= 0 do
+ v.visit(_n_closure_defs[i])
+ i = i - 1
+ end
+ end
end
end
redef class ACallAssignExpr
init init_abraexpr (
n_expr: PExpr ,
- n_args: Array[Object] # Should be Array[PExpr]
+ n_args: Array[Object] , # Should be Array[PExpr]
+ n_closure_defs: Array[Object] # Should be Array[PClosureDef]
)
do
empty_init
_n_args.add(n)
n.parent = self
end
+ _n_closure_defs = new List[PClosureDef]
+ for n in n_closure_defs do
+ assert n isa PClosureDef
+ _n_closure_defs.add(n)
+ n.parent = self
+ end
end
redef meth replace_child(old_child: PNode, new_child: PNode)
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 PClosureDef
+ _n_closure_defs[i] = new_child
+ new_child.parent = self
+ else
+ _n_closure_defs.remove_at(i)
+ end
+ return
+ end
+ end
end
redef meth visit_all(v: Visitor)
for n in _n_args do
v.visit(n)
end
+ for n in _n_closure_defs do
+ v.visit(n)
+ end
end
redef meth visit_all_reverse(v: Visitor)
i = i - 1
end
end
+ do
+ var i = _n_closure_defs.length
+ while i >= 0 do
+ v.visit(_n_closure_defs[i])
+ i = i - 1
+ end
+ end
end
end
redef class ABraAssignExpr
end
end
end
+redef class AClosureDef
+ redef meth n_kwwith=(n: TKwwith)
+ do
+ _n_kwwith = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_kwdo=(n: TKwdo)
+ do
+ _n_kwdo = n
+ if n != null then
+ n.parent = self
+ end
+ end
+ redef meth n_expr=(n: PExpr)
+ do
+ _n_expr = n
+ if n != null then
+ n.parent = self
+ end
+ end
+
+ private init empty_init do end
+
+ init init_aclosuredef (
+ n_kwwith: TKwwith ,
+ n_id: Array[Object] , # Should be Array[TId]
+ n_kwdo: TKwdo ,
+ n_expr: PExpr
+ )
+ do
+ empty_init
+ _n_kwwith = n_kwwith
+ if n_kwwith != null then
+ n_kwwith.parent = self
+ end
+ _n_id = new List[TId]
+ for n in n_id do
+ assert n isa TId
+ _n_id.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
+ end
+
+ redef meth replace_child(old_child: PNode, new_child: PNode)
+ do
+ assert old_child != null
+ if _n_kwwith == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwwith
+ _n_kwwith = new_child
+ else
+ _n_kwwith = null
+ end
+ return
+ end
+ 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_kwdo == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TKwdo
+ _n_kwdo = new_child
+ else
+ _n_kwdo = null
+ end
+ return
+ end
+ if _n_expr == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa PExpr
+ _n_expr = new_child
+ else
+ _n_expr = null
+ end
+ return
+ end
+ end
+
+ redef meth visit_all(v: Visitor)
+ do
+ if _n_kwwith != null then
+ v.visit(_n_kwwith)
+ end
+ for n in _n_id do
+ v.visit(n)
+ end
+ if _n_kwdo != null then
+ v.visit(_n_kwdo)
+ end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
+ end
+
+ redef meth visit_all_reverse(v: Visitor)
+ do
+ if _n_kwwith != null then
+ v.visit(_n_kwwith)
+ end
+ do
+ var i = _n_id.length
+ while i >= 0 do
+ v.visit(_n_id[i])
+ i = i - 1
+ end
+ end
+ if _n_kwdo != null then
+ v.visit(_n_kwdo)
+ end
+ if _n_expr != null then
+ v.visit(_n_expr)
+ end
+ end
+end
redef class AQualified
redef meth n_classid=(n: TClassid)
do