* 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
+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
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);
// 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;
if (t == null)
return false;
+ bool is_ret = false;
+
foreach (Pair p in declarators){
VariableInfo vi = (VariableInfo) p.First;
Expression e = (Expression) p.Second;
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);
ig.Emit (OpCodes.Stloc, vi.LocalBuilder);
- statement.Emit (ec);
+ is_ret = statement.Emit (ec);
// Clear the pinned variable.
ig.Emit (OpCodes.Ldc_I4_0);
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);
}
}
- return false;
+ return is_ret;
}
}