public override Expression CreateExpressionTree(ResolveContext ec) { MemberAccess ma = new MemberAccess(new MemberAccess(new QualifiedAliasMember("global", "System", loc), "Delegate", loc), "CreateDelegate", loc); Arguments args = new Arguments(3); args.Add(new Argument(new TypeOf(type, loc))); if (method_group.InstanceExpression == null) { args.Add(new Argument(new NullLiteral(loc))); } else { args.Add(new Argument(method_group.InstanceExpression)); } args.Add(new Argument(method_group.CreateExpressionTree(ec))); Expression e = new Invocation(ma, args).Resolve(ec); if (e == null) { return(null); } e = Convert.ExplicitConversion(ec, e, type, loc); if (e == null) { return(null); } return(e.CreateExpressionTree(ec)); }
public override Expression CreateExpressionTree (ResolveContext ec) { MemberAccess ma = new MemberAccess (new MemberAccess (new QualifiedAliasMember ("global", "System", loc), "Delegate", loc), "CreateDelegate", loc); Arguments args = new Arguments (3); args.Add (new Argument (new TypeOf (type, loc))); if (method_group.InstanceExpression == null) args.Add (new Argument (new NullLiteral (loc))); else args.Add (new Argument (method_group.InstanceExpression)); args.Add (new Argument (method_group.CreateExpressionTree (ec))); Expression e = new Invocation (ma, args).Resolve (ec); if (e == null) return null; e = Convert.ExplicitConversion (ec, e, type, loc); if (e == null) return null; return e.CreateExpressionTree (ec); }
// public override void EmitJs (JsEmitContext jec) // { // jec.Buf.Write ("delete ", Location); // Expr.EmitJs (jec); // } // public override void EmitStatementJs (JsEmitContext jec) // { // jec.Buf.Write ("\t", Location); // EmitJs (jec); // jec.Buf.Write (";\n"); // } public override Expression CreateExpressionTree(ResolveContext ec) { return(removeExpr.CreateExpressionTree(ec)); }