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));
        }
示例#2
0
		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));
        }