IronRuby.Compiler.Ast.ReturnStatement.Transform C# (CSharp) Method

Transform() private method

private Transform ( AstGenerator gen ) : Expression
gen AstGenerator
return System.Linq.Expressions.Expression
        internal override MSA.Expression/*!*/ Transform(AstGenerator/*!*/ gen) {
            MSA.Expression transformedReturnValue = TransformReturnValue(gen);

            // eval:
            if (gen.CompilerOptions.IsEval) {
                return gen.Return(Methods.EvalReturn.OpCall(gen.CurrentScopeVariable, AstUtils.Box(transformedReturnValue)));
            }

            // block:
            if (gen.CurrentBlock != null) {
                return gen.Return(Methods.BlockReturn.OpCall(gen.CurrentBlock.BfcVariable, AstUtils.Box(transformedReturnValue)));
            }

            // method:
            return gen.Return(transformedReturnValue);
        }