# Make a new Int literal
fun make_int(value: Int): AIntExpr
do
- return new AIntExpr.make(value, mmodule.get_primitive_class("Int").mclass_type)
+ return new ADecIntExpr.make(value, mmodule.get_primitive_class("Int").mclass_type)
end
# Make a new instatiation
end
# Make a new variable read
- fun make_var_read(variable: Variable): AVarExpr
+ fun make_var_read(variable: Variable, mtype: MType): AVarExpr
do
- return new AVarExpr.make(variable)
+ return new AVarExpr.make(variable, mtype)
end
# Make a new variable assignment
place.replace_with(nvar)
self.variable_cache = variable
end
- return new AVarExpr.make(variable)
+ return new AVarExpr.make(variable, variable.declared_type.as(not null))
end
private var variable_cache: nullable Variable
end
end
-redef class AIntExpr
+redef class ADecIntExpr
private init make(value: Int, t: MType)
do
self.value = value
if args != null then
n_args.n_exprs.add_all(args)
end
- callsite = new CallSite(self, mtype, true, mmethod, mmethod.intro, mmethod.intro.msignature.as(not null), false)
+ callsite = new CallSite(self, mtype, mmethod.intro.mclassdef.mmodule, mtype, true, mmethod, mmethod.intro, mmethod.intro.msignature.as(not null), false)
self.mtype = mtype
end
end
self.n_args.n_exprs.add_all(args)
end
var mtype = recv.mtype.as(not null)
- callsite = new CallSite(self, mtype, true, mmethod, mmethod.intro, mmethod.intro.msignature.as(not null), false)
+ callsite = new CallSite(self, mtype, mmethod.intro.mclassdef.mmodule, mmethod.intro.mclassdef.bound_mtype, true, mmethod, mmethod.intro, mmethod.intro.msignature.as(not null), false)
self.mtype = t
self.is_typed = true
end
end
redef class AVarExpr
- private init make(v: Variable)
+ private init make(v: Variable, mtype: MType)
do
_n_id = new TId
variable = v
- mtype = v.declared_type
+ self.mtype = mtype
end
end