parser: split `AIntExpr` and `ADecIntExpr`
[nit.git] / src / astbuilder.nit
index e6182a0..fa1d188 100644 (file)
@@ -32,7 +32,7 @@ class ASTBuilder
        # 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
@@ -56,9 +56,9 @@ class ASTBuilder
        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
@@ -112,7 +112,7 @@ redef class AExpr
                        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
@@ -220,7 +220,7 @@ redef class AType
        end
 end
 
-redef class AIntExpr
+redef class ADecIntExpr
        private init make(value: Int, t: MType)
        do
                self.value = value
@@ -238,7 +238,7 @@ redef class ANewExpr
                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
@@ -255,7 +255,7 @@ redef class ACallExpr
                        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
@@ -287,11 +287,11 @@ redef class AAttrAssignExpr
 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