IronRuby.Compiler.Ast.ForLoopExpression.TransformRead C# (CSharp) Метод

TransformRead() приватный Метод

private TransformRead ( AstGenerator gen ) : Expression
gen AstGenerator
Результат System.Linq.Expressions.Expression
        internal override MSA.Expression/*!*/ TransformRead(AstGenerator/*!*/ gen) {
            Assert.NotNull(gen);

            MSA.Expression transformedBlock = _block.Transform(gen);

            MSA.Expression blockArgVariable = gen.CurrentScope.DefineHiddenVariable("#forloop-block", typeof(Proc));

            MSA.Expression result = CallSiteBuilder.InvokeMethod(gen.Context, "each", RubyCallSignature.WithScopeAndBlock(0),
                gen.CurrentScopeVariable,
                _list.TransformRead(gen),
                blockArgVariable
            );

            return gen.DebugMark(MethodCall.MakeCallWithBlockRetryable(gen, result, blockArgVariable, transformedBlock, true),
                "#RB: method call with a block ('for-loop')");
        }
    }