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')")); }
internal override MSA.Expression /*!*/ Transform(AstGenerator /*!*/ gen) { return(Methods.RegisterShutdownHandler.OpCall(_block.Transform(gen))); }
internal override MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen) { return(_block.Transform(gen, true)); }