Babel.Compiler.CodeGeneratingVisitor.VisitYield C# (CSharp) Method

VisitYield() public method

public VisitYield ( YieldStatement yield ) : void
yield YieldStatement
return void
        public override void VisitYield(YieldStatement yield)
        {
            if (exceptionLevel > 0) {
                report.Error(yield.Location,
                             "`yield' statements may not appear " +
                             "in `protect' statements.");
                return;
            }
            if (yield.Value != null) {
                ilGenerator.Emit(OpCodes.Ldarg_0);
                yield.Value.Accept(this);
                BoxIfNecessary(yield.Value.RawType,
                               currentIter.Current.FieldType);
                ilGenerator.Emit(OpCodes.Stfld, currentIter.Current);
            }
            ilGenerator.Emit(OpCodes.Ldarg_0);
            ilGenerator.Emit(OpCodes.Ldc_I4, yield.ResumePoint.Index);
            ilGenerator.Emit(OpCodes.Stfld, currentIter.CurrentPosition);
            ilGenerator.Emit(OpCodes.Ldc_I4_1);
            ilGenerator.Emit(OpCodes.Br, returnLabel);
            ilGenerator.MarkLabel(yield.ResumePoint.Label);
        }