Author: sudha
Date: 2005-05-09 03:02:49 -0400 (Mon, 09 May 2005)
New Revision: 44245

Modified:
   trunk/mcs/mbas/ChangeLog
   trunk/mcs/mbas/parameter.cs
   trunk/mcs/mbas/statement.cs
Log:
        * parameter.cs : Support 'Optional ByRef' parameters
        * statement.cs : Using 'System.Reflection.Missing.Value' in case  of 
missing argument for LateBinding cases



Modified: trunk/mcs/mbas/ChangeLog
===================================================================
--- trunk/mcs/mbas/ChangeLog    2005-05-09 07:01:39 UTC (rev 44244)
+++ trunk/mcs/mbas/ChangeLog    2005-05-09 07:02:49 UTC (rev 44245)
@@ -1,3 +1,8 @@
+2005-05-09 Satya Sudha K <[EMAIL PROTECTED]>
+       * parameter.cs : Support 'Optional ByRef' parameters
+       * statement.cs : Using 'System.Reflection.Missing.Value' in case of 
missing argument for 
+                        LateBinding cases
+               
 2005-05-07 Rafael Teixeira <[EMAIL PROTECTED]>
        * driver.cs : Oops, correcting some find-and-replace mishaps
 

Modified: trunk/mcs/mbas/parameter.cs
===================================================================
--- trunk/mcs/mbas/parameter.cs 2005-05-09 07:01:39 UTC (rev 44244)
+++ trunk/mcs/mbas/parameter.cs 2005-05-09 07:02:49 UTC (rev 44245)
@@ -123,7 +123,7 @@
                
                public ParameterAttributes Attributes {
                        get {
-                               int flags = ((int) ModFlags) & ~((int) 
Parameter.Modifier.ISBYREF);
+                               int flags = ((int) ModFlags) & ~((int) 
Parameter.Modifier.ISBYREF | (int) Parameter.Modifier.REF);
                                switch ((Modifier) flags) {
                                case Modifier.NONE:
                                        return ParameterAttributes.None;

Modified: trunk/mcs/mbas/statement.cs
===================================================================
--- trunk/mcs/mbas/statement.cs 2005-05-09 07:01:39 UTC (rev 44244)
+++ trunk/mcs/mbas/statement.cs 2005-05-09 07:02:49 UTC (rev 44245)
@@ -3517,9 +3517,14 @@
                        if (args != null) {
                                //arrayInitializers = new ArrayList ();
                                argCount = args.Count;
-                               foreach (Argument a in args) {
-                                       arrayInitializers.Add (a.Expr);
-                                       originalArgs.Add (a.Expr);
+                               for (int index = 0; index < args.Count; index 
++) {
+                                       Argument a = (Argument) args [index];
+                                       Expression argument = a.Expr;
+                                       if (a.ArgType == Argument.AType.NoArg) {
+                                               argument = Parser.DecomposeQI 
("System.Reflection.Missing.Value", loc);
+                                       }
+                                       arrayInitializers.Add (argument);
+                                       originalArgs.Add (argument);
                                }
                        }
 
@@ -3581,7 +3586,8 @@
                                rank_specifier.Add (new IntLiteral (argCount));
                                arrayInitializers = new ArrayList ();
                                for (int i = 0; i < argCount; i++) {
-                                       if (((Argument)args[i]).Expr is 
Constant)
+                                       Argument a = (Argument) args [i];
+                                       if (a.Expr is Constant || a.ArgType == 
Argument.AType.NoArg)
                                                arrayInitializers.Add (new 
BoolLiteral (false));
                                        else 
                                                arrayInitializers.Add (new 
BoolLiteral (true));
@@ -3612,6 +3618,8 @@
 
                        for (int i = 0; i< argCount; i ++) {
                                Expression thisArg = (Expression) originalArgs 
[i];
+                               if (((Argument) args [i]).ArgType == 
Argument.AType.NoArg)
+                                       continue;
                                if (thisArg is Constant)
                                        continue;
                                Expression intExpr = new IntLiteral (i);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to