+
+ if callsite != null then
+ self.callsite = callsite
+ self.mtype = callsite.msignature.return_mtype
+ self.is_typed = true
+ end
+ end
+end
+
+redef class AAsCastExpr
+ private init make(n_expr: AExpr, n_type: AType)
+ do
+ init_aascastexpr(n_expr, new TKwas , null , n_type, null)
+ end
+end
+
+redef class AAsNotnullExpr
+ private init make(n_expr: AExpr, t: nullable MType)
+ do
+ init_aasnotnullexpr(n_expr, new TKwas, null, new TKwnot, new TKwnull, null)
+ _mtype = t
+ if t != null then _is_typed = true
+ end
+end
+
+redef class ANullExpr
+
+ private init make(t: nullable MType)
+ do
+ init_anullexpr(new TKwnull, null)
+ _mtype = t
+ if t != null then self.is_typed = true
+ end
+end
+
+redef class ASelfExpr
+
+ private init make(v: nullable Variable, t: nullable MType)
+ do
+ init_aselfexpr(new TKwself, null)
+ _mtype = t
+ if t != null then is_typed =true
+ end
+
+ redef fun clone: SELF
+ do
+ return new ASelfExpr.make(self.variable, self.mtype)
+ end
+end
+
+redef class AImplicitSelfExpr
+
+ redef fun clone: SELF
+ do
+ var self_clone = new AImplicitSelfExpr.make(variable, mtype)
+ self_clone.is_sys = is_sys
+ return self_clone