n_opar: nullable TOpar,
n_params: Collection[Object], # Should be Collection[AParam]
n_cpar: nullable TCpar,
- n_type: nullable AType,
- n_closure_decls: Collection[Object] # Should be Collection[AClosureDecl]
+ n_type: nullable AType
)
do
empty_init
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)
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)
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
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 new_child != null then
- new_child.parent = self
- assert new_child isa AExpr
- _n_expr = new_child
- else
- _n_expr = null
- end
- return
- end
- end
-
- redef fun n_kwbreak=(node)
- do
- _n_kwbreak = node
- if node != null then
- node.parent = self
- end
- end
- redef fun n_bang=(node)
- do
- _n_bang = node
- node.parent = self
- end
- redef fun n_id=(node)
- do
- _n_id = node
- node.parent = self
- end
- redef fun n_signature=(node)
- do
- _n_signature = node
- node.parent = self
- 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_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))
- end
- end
-end
redef class AType
private init empty_init do end
v.enter_visit(_n_expr2)
end
end
-redef class AEeExpr
- private init empty_init do end
-
- init init_aeeexpr (
- n_expr: nullable AExpr,
- n_expr2: nullable AExpr
- )
- do
- empty_init
- _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 new_child != null then
- new_child.parent = self
- assert new_child isa AExpr
- _n_expr = new_child
- else
- abort
- end
- return
- end
- if _n_expr2 == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa AExpr
- _n_expr2 = new_child
- else
- abort
- 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 visit_all(v: Visitor)
- do
- v.enter_visit(_n_expr)
- v.enter_visit(_n_expr2)
- end
-end
redef class ANeExpr
private init empty_init do end
init init_acallexpr (
n_expr: nullable AExpr,
n_id: nullable TId,
- n_args: nullable AExprs,
- n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
+ n_args: nullable AExprs
)
do
empty_init
n_id.parent = self
_n_args = n_args.as(not null)
n_args.parent = self
- for n in n_closure_defs do
- assert n isa AClosureDef
- _n_closure_defs.add(n)
- n.parent = self
- end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
- for i in [0.._n_closure_defs.length[ do
- if _n_closure_defs[i] == old_child then
- if new_child != null then
- assert new_child isa AClosureDef
- _n_closure_defs[i] = new_child
- new_child.parent = self
- else
- _n_closure_defs.remove_at(i)
- end
- return
- end
- end
end
redef fun n_expr=(node)
v.enter_visit(_n_expr)
v.enter_visit(_n_id)
v.enter_visit(_n_args)
- for n in _n_closure_defs do
- v.enter_visit(n)
- end
end
end
redef class ACallAssignExpr
init init_abraexpr (
n_expr: nullable AExpr,
- n_args: nullable AExprs,
- n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
+ n_args: nullable AExprs
)
do
empty_init
n_expr.parent = self
_n_args = n_args.as(not null)
n_args.parent = self
- for n in n_closure_defs do
- assert n isa AClosureDef
- _n_closure_defs.add(n)
- n.parent = self
- end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
- for i in [0.._n_closure_defs.length[ do
- if _n_closure_defs[i] == old_child then
- if new_child != null then
- assert new_child isa AClosureDef
- _n_closure_defs[i] = new_child
- new_child.parent = self
- else
- _n_closure_defs.remove_at(i)
- end
- return
- end
- end
end
redef fun n_expr=(node)
do
v.enter_visit(_n_expr)
v.enter_visit(_n_args)
- for n in _n_closure_defs do
- v.enter_visit(n)
- end
end
end
redef class ABraAssignExpr
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: nullable AExprs,
- 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
- _n_args = n_args.as(not null)
- n_args.parent = self
- for n in n_closure_defs do
- assert n isa AClosureDef
- _n_closure_defs.add(n)
- n.parent = self
- end
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
end
return
end
- if _n_args == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa AExprs
- _n_args = new_child
- else
- abort
- end
- return
- end
- for i in [0.._n_closure_defs.length[ do
- if _n_closure_defs[i] == old_child then
- if new_child != null then
- assert new_child isa AClosureDef
- _n_closure_defs[i] = new_child
- new_child.parent = self
- else
- _n_closure_defs.remove_at(i)
- end
- return
- end
- end
end
redef fun n_id=(node)
_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_id)
- v.enter_visit(_n_args)
- for n in _n_closure_defs do
- v.enter_visit(n)
- end
end
end
-redef class AVarExpr
+redef class AVarAssignExpr
private init empty_init do end
- init init_avarexpr (
- n_id: nullable TId
+ init init_avarassignexpr (
+ n_id: nullable TId,
+ n_assign: nullable TAssign,
+ n_value: nullable AExpr
)
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 AVarAssignExpr
- private init empty_init do end
-
- init init_avarassignexpr (
- n_id: nullable TId,
- n_assign: nullable TAssign,
- n_value: nullable AExpr
- )
- do
- empty_init
- _n_id = n_id.as(not null)
- n_id.parent = self
- _n_assign = n_assign.as(not null)
- n_assign.parent = self
- _n_value = n_value.as(not null)
- n_value.parent = self
+ _n_assign = n_assign.as(not null)
+ n_assign.parent = self
+ _n_value = n_value.as(not null)
+ n_value.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
v.enter_visit(_n_minuseq)
end
end
-redef class AClosureDef
- private init empty_init do end
-
- init init_aclosuredef (
- n_bang: nullable TBang,
- n_id: nullable AClosureId,
- n_ids: Collection[Object], # Should be Collection[TId]
- n_kwdo: nullable TKwdo,
- n_expr: nullable AExpr,
- n_label: nullable ALabel
- )
- do
- empty_init
- _n_bang = n_bang.as(not null)
- n_bang.parent = self
- _n_id = n_id.as(not null)
- n_id.parent = self
- for n in n_ids do
- assert n isa TId
- _n_ids.add(n)
- n.parent = self
- end
- _n_kwdo = n_kwdo
- if n_kwdo != null then
- n_kwdo.parent = self
- end
- _n_expr = n_expr
- if n_expr != null then
- n_expr.parent = self
- end
- _n_label = n_label
- if n_label != null then
- n_label.parent = self
- end
- end
-
- redef fun replace_child(old_child: ANode, new_child: nullable ANode)
- do
- if _n_bang == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa TBang
- _n_bang = new_child
- else
- abort
- end
- return
- end
- if _n_id == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa AClosureId
- _n_id = new_child
- else
- abort
- end
- return
- end
- for i in [0.._n_ids.length[ do
- if _n_ids[i] == old_child then
- if new_child != null then
- assert new_child isa TId
- _n_ids[i] = new_child
- new_child.parent = self
- else
- _n_ids.remove_at(i)
- end
- return
- end
- end
- if _n_kwdo == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa TKwdo
- _n_kwdo = new_child
- else
- _n_kwdo = null
- end
- return
- end
- if _n_expr == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa AExpr
- _n_expr = new_child
- else
- _n_expr = null
- end
- return
- end
- if _n_label == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa ALabel
- _n_label = new_child
- else
- _n_label = null
- end
- return
- end
- end
-
- redef fun n_bang=(node)
- do
- _n_bang = node
- node.parent = self
- end
- redef fun n_id=(node)
- do
- _n_id = node
- node.parent = self
- end
- redef fun n_kwdo=(node)
- do
- _n_kwdo = 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_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_bang)
- v.enter_visit(_n_id)
- for n in _n_ids do
- v.enter_visit(n)
- end
- if _n_kwdo != null then
- v.enter_visit(_n_kwdo.as(not null))
- end
- if _n_expr != null then
- v.enter_visit(_n_expr.as(not null))
- end
- if _n_label != null then
- v.enter_visit(_n_label.as(not null))
- end
- end
-end
-redef class ASimpleClosureId
- private init empty_init do end
-
- init init_asimpleclosureid (
- n_id: nullable TId
- )
- do
- empty_init
- _n_id = n_id.as(not null)
- n_id.parent = self
- end
-
- redef fun replace_child(old_child: ANode, new_child: nullable ANode)
- do
- if _n_id == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa TId
- _n_id = new_child
- else
- abort
- end
- return
- end
- end
-
- redef fun 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 ABreakClosureId
- private init empty_init do end
-
- init init_abreakclosureid (
- n_kwbreak: nullable TKwbreak
- )
- do
- empty_init
- _n_kwbreak = n_kwbreak.as(not null)
- n_kwbreak.parent = self
- end
-
- redef fun replace_child(old_child: ANode, new_child: nullable ANode)
- do
- if _n_kwbreak == old_child then
- if new_child != null then
- new_child.parent = self
- assert new_child isa TKwbreak
- _n_kwbreak = new_child
- else
- abort
- end
- return
- end
- end
-
- redef fun n_kwbreak=(node)
- do
- _n_kwbreak = node
- node.parent = self
- end
-
-
- redef fun visit_all(v: Visitor)
- do
- v.enter_visit(_n_kwbreak)
- end
-end
redef class AModuleName
private init empty_init do end
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
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
end
end
- redef fun n_classid=(node)
+ redef fun n_type=(node)
do
- _n_classid = node
+ _n_type = node
node.parent = self
end
- redef fun n_quad=(node)
+ redef fun n_dot=(node)
do
- _n_quad = node
+ _n_dot = node
if node != null then
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
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
end
end
- redef fun n_classid=(node)
+ redef fun n_type=(node)
do
- _n_classid = node
+ _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
init init_acastasexterncall (
n_from_type: nullable AType,
+ n_dot: nullable TDot,
n_kwas: nullable TKwas,
n_to_type: nullable AType
)
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)
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
_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
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