public MLambda(string pos, MPat arg_pat, MExpr body) : base(pos) { ArgPat = arg_pat; ArgType = new TypeVar(); Body = body; }
public PVar(string pos, string name) : base(pos) { Name = name; Type = new TypeVar(); IsTag = false; TagIndex = 0; }
public MDo(string pos, MExpr e1, MExpr e2) : base(pos) { E1 = e1; E2 = e2; E1Type = new TypeVar(); E2Type = new TypeVar(); }
public MGet(string pos, MExpr expr, string field_name) : base(pos) { Expr = expr; ExprType = new TypeVar(); FieldName = field_name; Info = null; }
public MTopLet(string pos, MPat pat, MExpr expr, bool hide_type) : base(pos) { Pat = pat; Expr = expr; Type = new TypeVar(); HideType = hide_type; }
public MLet(string pos, MPat pat, MExpr e1, MExpr e2) : base(pos) { Pat = pat; E1 = e1; E2 = e2; E1Type = new TypeVar(); E2Type = new TypeVar(); }
public MVar(string name) : base("") { Name = name; Type = new TypeVar(); IsTag = false; TagIndex = 0; TagSize = 0; }
public MSSet(string pos, string class_name, string field_name, MExpr arg) : base(pos) { ClassName = class_name; FieldName = field_name; Arg = arg; ArgType = new TypeVar(); Info = null; }
public MSet(string pos, MExpr expr, string field_name, MExpr arg) : base(pos) { Expr = expr; ExprType = new TypeVar(); FieldName = field_name; Arg = arg; ArgType = new TypeVar(); Info = null; }
public MDelegate(string pos, string class_name, MExpr expr) : base(pos) { ClassName = class_name; Expr = expr; ExprType = new TypeVar(); ParamType = null; ClassType = null; CstrInfo = null; }
public MInvoke(string pos, MExpr expr, string method_name, List <MExpr> args) : base(pos) { Expr = expr; ExprType = new TypeVar(); MethodName = method_name; Args = args; Types = args.Select(item => (MType)(new TypeVar())).ToList(); Info = null; }