Inheritance: ReturnStatement
示例#1
0
文件: codegen.cs 项目: shugo/babel
 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);
 }
示例#2
0
文件: typecheck.cs 项目: shugo/babel
 public override void VisitYield(YieldStatement yield)
 {
     if (currentIter == null) {
         report.Error(yield.Location,
                      "`yield' statements may not appear in routines.");
         return;
     }
     CheckReturnValue(yield);
     yield.ResumePoint.Index = currentIter.ResumePoints.Count;
     currentIter.ResumePoints.Add(yield.ResumePoint);
 }
示例#3
0
文件: node.cs 项目: shugo/babel
 public virtual void VisitYield(YieldStatement yield)
 {
 }