2002-06-10 Martin Baulig <martin@gnome.org>
authorMartin Baulig <martin@novell.com>
Thu, 20 Jun 2002 15:45:20 +0000 (15:45 -0000)
committerMartin Baulig <martin@novell.com>
Thu, 20 Jun 2002 15:45:20 +0000 (15:45 -0000)
* interface.cs (Interface.PopulateIndexer): When creating the setter, we need to
add the "value" parameter to the parameter list.

* statement.cs (Fixed.Emit): Pass the return value of the child block's Emit()
to our caller.

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

mcs/mcs/ChangeLog
mcs/mcs/interface.cs
mcs/mcs/statement.cs

index fec461d5ab0f146823c27f8a6e3a864ea0adab2f..9cf26cae5774e5c65c8dee35dd344b943212540a 100755 (executable)
@@ -1,3 +1,11 @@
+2002-06-10  Martin Baulig  <martin@gnome.org>
+
+       * interface.cs (Interface.PopulateIndexer): When creating the setter, we need to
+       add the "value" parameter to the parameter list.
+
+       * statement.cs (Fixed.Emit): Pass the return value of the child block's Emit()
+       to our caller.
+
 2002-06-19  Miguel de Icaza  <miguel@ximian.com>
 
        * expression.cs (ArrayCreation.ExpressionToArrayArgument): Convert
index 7dce95696e32bc224960e2b362e0e6ec5a950e82..81933a1853cc81b96f4638cf7f0b33464d3a61bb 100755 (executable)
@@ -490,8 +490,15 @@ namespace Mono.CSharp {
 
                        if (ii.HasSet){
                                Parameter [] p = ii.Parameters.FixedParameters;
+                               Parameter [] pv;
                                int i = 0;
                                
+                               pv = new Parameter [p.Length + 1];
+                               p.CopyTo (pv, 0);
+                               pv [p.Length] = new Parameter (ii.Type, "value", Parameter.Modifier.NONE, null);
+                               Parameters value_params = new Parameters (pv, null, Location.Null);
+                               value_params.GetParameterInfo (decl_space);
+                               
                                set_item = TypeBuilder.DefineMethod (
                                        "set_Item", property_attributes,
                                        TypeManager.void_type, value_arg_types);
@@ -500,7 +507,7 @@ namespace Mono.CSharp {
                                // HACK because System.Reflection.Emit is lame
                                //
                                InternalParameters ip = new InternalParameters (
-                                       value_arg_types, ii.Parameters);
+                                       value_arg_types, value_params);
                                if (!RegisterMethod (set_item, ip, value_arg_types)) {
                                        Error111 (ii);
                                        return;
index 480e2e2d6276f2e5009129cb75531e2c221f87bc..f0a9ea71e9adc64d61c1f403e324052dec76a844 100755 (executable)
@@ -2186,6 +2186,8 @@ namespace Mono.CSharp {
                        if (t == null)
                                return false;
 
+                       bool is_ret = false;
+
                        foreach (Pair p in declarators){
                                VariableInfo vi = (VariableInfo) p.First;
                                Expression e = (Expression) p.Second;
@@ -2232,7 +2234,7 @@ namespace Mono.CSharp {
                                        e.Emit (ec);
                                        ig.Emit (OpCodes.Stloc, vi.LocalBuilder);
 
-                                       statement.Emit (ec);
+                                       is_ret = statement.Emit (ec);
 
                                        // Clear the pinned variable.
                                        ig.Emit (OpCodes.Ldc_I4_0);
@@ -2277,7 +2279,7 @@ namespace Mono.CSharp {
                                        
                                        ig.Emit (OpCodes.Stloc, vi.LocalBuilder);
 
-                                       statement.Emit (ec);
+                                       is_ret = statement.Emit (ec);
                                        
                                        // Clear the pinned variable.
                                        ig.Emit (OpCodes.Ldc_I4_0);
@@ -2307,7 +2309,7 @@ namespace Mono.CSharp {
                                        converted.Emit (ec);
                                        ig.Emit (OpCodes.Stloc, vi.LocalBuilder);
                                        
-                                       statement.Emit (ec);
+                                       is_ret = statement.Emit (ec);
 
                                        // Clear the pinned variable
                                        ig.Emit (OpCodes.Ldnull);
@@ -2315,7 +2317,7 @@ namespace Mono.CSharp {
                                }
                        }
 
-                       return false;
+                       return is_ret;
                }
        }