writable var _self_var: nullable ParamVariable
# Block of the current method
- readable writable var _top_block: nullable PExpr
+ readable writable var _top_block: nullable AExpr
# List of explicit invocation of constructors of super-classes
readable writable var _explicit_super_init_calls: nullable Array[MMMethod]
readable writable var _explicit_other_init_call: Bool = false
# Make the if_true_variable_ctx of the expression effective
- private fun use_if_true_variable_ctx(e: PExpr)
+ private fun use_if_true_variable_ctx(e: AExpr)
do
var ctx = e.if_true_variable_ctx
if ctx != null then variable_ctx = ctx
end
# Make the if_false_variable_ctx of the expression effective
- private fun use_if_false_variable_ctx(e: PExpr)
+ private fun use_if_false_variable_ctx(e: AExpr)
do
var ctx = e.if_false_variable_ctx
if ctx != null then variable_ctx = ctx
init(tc, module) do super
- private fun get_default_constructor_for(n: PNode, c: MMLocalClass, prop: MMSrcMethod): nullable MMMethod
+ private fun get_default_constructor_for(n: ANode, c: MMLocalClass, prop: MMSrcMethod): nullable MMMethod
do
var v = self
#var prop = v.local_property
###############################################################################
-redef class PNode
+redef class ANode
private fun accept_typing(v: TypingVisitor)
do
accept_abs_syntax_visitor(v)
private fun after_typing(v: TypingVisitor) do end
end
-redef class PClassdef
+redef class AClassdef
redef fun accept_typing(v)
do
v.variable_ctx = new RootVariableContext(v, self)
end
end
-redef class PPropdef
+redef class APropdef
redef fun self_var do return _self_var.as(not null)
var _self_var: nullable ParamVariable
end
end
end
-redef class PParam
+redef class AParam
redef fun after_typing(v)
do
v.variable_ctx.add(variable)
end
end
-redef class PType
+redef class AType
redef fun stype: MMType do return _stype.as(not null)
redef fun is_typed: Bool do return _stype != null
var _stype: nullable MMType
end
end
-redef class PExpr
+redef class AExpr
redef readable var _is_typed: Bool = false
redef fun is_statement: Bool do return _stype == null
redef fun stype
end
end
-redef class PAssignOp
+redef class AAssignOp
fun method_name: Symbol is abstract
end
redef class APlusAssignOp
# The real arguments used (after star transformation) (once computed)
redef fun arguments do return _arguments.as(not null)
- var _arguments: nullable Array[PExpr]
+ var _arguments: nullable Array[AExpr]
# Check the conformity of a set of arguments `raw_args' to a signature.
- private fun process_signature(v: TypingVisitor, psig: MMSignature, name: Symbol, raw_args: nullable Array[PExpr]): nullable Array[PExpr]
+ private fun process_signature(v: TypingVisitor, psig: MMSignature, name: Symbol, raw_args: nullable Array[AExpr]): nullable Array[AExpr]
do
var par_vararg = psig.vararg_rank
var par_arity = psig.arity
return null
end
var arg_idx = 0
- var args = new Array[PExpr]
+ var args = new Array[AExpr]
for par_idx in [0..par_arity[ do
- var a: PExpr
+ var a: AExpr
var par_type = psig[par_idx]
if par_idx == par_vararg then
- var star = new Array[PExpr]
+ var star = new Array[AExpr]
for i in [0..(raw_arity-par_arity)] do
a = raw_args[arg_idx]
v.check_conform_expr(a, par_type)
end
# Check the conformity of a set of defined closures
- private fun process_closures(v: TypingVisitor, psig: MMSignature, name: Symbol, cd: nullable Array[PClosureDef]): nullable MMType
+ private fun process_closures(v: TypingVisitor, psig: MMSignature, name: Symbol, cd: nullable Array[AClosureDef]): nullable MMType
do
var t = psig.return_type
var cs = psig.closures # Declared closures
redef class AAbsSendExpr
# Compute the called global property
- private fun do_typing(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, recv_is_self: Bool, name: Symbol, raw_args: nullable Array[PExpr], closure_defs: nullable Array[PClosureDef])
+ private fun do_typing(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, recv_is_self: Bool, name: Symbol, raw_args: nullable Array[AExpr], closure_defs: nullable Array[AClosureDef])
do
var prop = get_property(v, type_recv, is_implicit_self, name)
if prop == null then return
fun name: Symbol is abstract
# Raw arguments used (withour star transformation)
- fun raw_arguments: nullable Array[PExpr] is abstract
+ fun raw_arguments: nullable Array[AExpr] is abstract
# Closure definitions
- redef fun closure_defs: nullable Array[PClosureDef] do return null
+ redef fun closure_defs: nullable Array[AClosureDef] do return null
redef fun after_typing(v)
do
end
end
- private fun try_to_isa(v: TypingVisitor, n: PExpr)
+ private fun try_to_isa(v: TypingVisitor, n: AExpr)
do
var variable = n.its_variable
if variable != null then
end
end
- private fun try_to_isa(v: TypingVisitor, n: PExpr)
+ private fun try_to_isa(v: TypingVisitor, n: AExpr)
do
var variable = n.its_variable
if variable != null then
var name = n_id.to_symbol
var variable = v.variable_ctx[name]
if variable != null then
- var n: PExpr
+ var n: AExpr
if variable isa ClosureVariable then
n = new AClosureCallExpr.init_aclosurecallexpr(n_id, n_args, n_closure_defs)
n._variable = variable
end
end
-redef class PClosureDef
+redef class AClosureDef
var _closure: nullable MMClosure
redef fun closure do return _closure.as(not null)
if _accept_typing2 then super
end
- private fun accept_typing2(v: TypingVisitor, esc: EscapableClosure) is abstract
-end
-
-redef class AClosureDef
- redef fun accept_typing2(v, esc)
+ private fun accept_typing2(v: TypingVisitor, esc: EscapableClosure)
do
_escapable = esc
end
class ATypeCheckExpr
-special PExpr
- private fun check_expr_cast(v: TypingVisitor, n_expr: PExpr, n_type: PType)
+special AExpr
+ private fun check_expr_cast(v: TypingVisitor, n_expr: AExpr, n_type: AType)
do
if not v.check_expr(n_expr) then return
if not n_type.is_typed then return