private static Expression GenResult(ObjExpr objx, GenContext context, Expr expr, bool genUnboxed, Type retType)
{
MaybePrimitiveExpr mbExpr = expr as MaybePrimitiveExpr;
Expression result = genUnboxed && mbExpr != null
? mbExpr.GenCodeUnboxed(RHC.Expression, objx, context)
: expr.GenCode(RHC.Expression, objx, context);
if (result.Type != retType)
{
if (expr is ThrowExpr)
{
// Fix type on the throw expression
UnaryExpression ur = (UnaryExpression)result;
result = Expression.Throw(ur.Operand, retType);
}
else result = Expression.Convert(result, retType);
}
return result;
}