+2009-07-22 Marek Safar <marek.safar@gmail.com>
+
+ * expression.cs: More verifier instrumentation.
+
+ * statement.cs: Do proper throw expression conversion.
+
2009-07-22 Marek Safar <marek.safar@gmail.com>
A fix for bug #522789
return CreateConstantResult (TypeManager.IsEqual (d, t));
}
- if (!TypeManager.IsReferenceType (expr.Type))
+ if (TypeManager.IsGenericParameter (expr.Type))
expr = new BoxedCast (expr, d);
return this;
vr.EmitLoad (ec);
}
- if (is_type_parameter)
- return DoEmitTypeParameter (ec);
-
if (Arguments != null)
Arguments.Emit (ec);
return false;
}
}
+
+ if (is_type_parameter)
+ return DoEmitTypeParameter (ec);
ConstructorInfo ci = (ConstructorInfo) method;
#if MS_COMPATIBLE
if (expr == null)
return false;
- Type t = expr.Type;
+ if (Convert.ImplicitConversionExists (ec, expr, TypeManager.exception_type))
+ expr = Convert.ImplicitConversion (ec, expr, TypeManager.exception_type, loc);
+ else
+ Report.Error (155, expr.Location, "The type caught or thrown must be derived from System.Exception");
- if ((t != TypeManager.exception_type) &&
- !TypeManager.IsSubclassOf (t, TypeManager.exception_type) &&
- t != TypeManager.null_type) {
- Error (155, "The type caught or thrown must be derived from System.Exception");
- return false;
- }
return true;
}