Expr ILastStatementVisitor <Expr> .Visit(LastStatement.Return lastStatement)
{
var returnLabel = scope.GetReturnLabel();
if (returnLabel == null)
{
return(Expr.Empty());
}
var returnValues = lastStatement.Values
.Select(expr => Expr.Convert(expr.Visit(this), typeof(object))).ToArray();
if (returnValues.Length == 0)
{
return(Expr.Return(returnLabel));
}
if (returnValues.Length == 1)
{
return(Expr.Return(returnLabel, returnValues[0]));
}
return(Expr.Return(
returnLabel,
Expr.New(MemberInfos.NewVarargs, Expr.NewArrayInit(typeof(object), returnValues))));
}