2008-04-29 Marek Safar <marek.safar@gmail.com>
authorMarek Safar <marek.safar@gmail.com>
Tue, 29 Apr 2008 14:17:10 +0000 (14:17 -0000)
committerMarek Safar <marek.safar@gmail.com>
Tue, 29 Apr 2008 14:17:10 +0000 (14:17 -0000)
* delegate.cs: Implemented Invoke expression.

svn path=/trunk/mcs/; revision=102122

mcs/mcs/ChangeLog
mcs/mcs/delegate.cs

index ebd98015a4c9e16fd767ab38e24979bcaab078d6..178c896b4a555d8068ecb15567dc4c5f4e5517e5 100644 (file)
@@ -1,3 +1,7 @@
+2008-04-29  Marek Safar  <marek.safar@gmail.com>
+
+       * delegate.cs: Implemented Invoke expression.
+
 2008-04-29  Marek Safar  <marek.safar@gmail.com>
 
        * expression.cs: Fixed equality reference comparison regression.
index afdfe73ae65ebcfa9c674f4f0a0bbdf9481104e8..d7fc9e19cc454bcd5fcd98c7e3b03b44fe1a4c95 100644 (file)
@@ -935,6 +935,23 @@ namespace Mono.CSharp {
                        this.Arguments = args;
                        this.loc = loc;
                }
+               
+               public override Expression CreateExpressionTree (EmitContext ec)
+               {
+                       ArrayList args;
+                       if (Arguments == null)
+                               args = new ArrayList (1);
+                       else
+                               args = new ArrayList (Arguments.Count + 1);
+
+                       args.Add (new Argument (InstanceExpr.CreateExpressionTree (ec)));
+                       if (Arguments != null) {
+                               foreach (Argument a in Arguments)
+                                       args.Add (new Argument (a.Expr.CreateExpressionTree (ec)));
+                       }
+
+                       return CreateExpressionFactoryCall ("Invoke", args);
+               }
 
                public override Expression DoResolve (EmitContext ec)
                {