public override void AddYieldTarget(YieldStatement ys, YieldTarget yt, CodeGen cg) { stmt.AddYieldTarget(yt.FixForTryCatchFinally(cg)); ys.Label = yt.YieldContinuationTarget; }
public override void AddYieldTarget(YieldStatement ys, YieldTarget yt, CodeGen cg) { switch (state) { case State.Try: if (isPython24TryFinallyStmt) cg.Context.AddError("cannot yield from try block with finally", ys); else stmt.AddTryYieldTarget(yt.FixForTryCatchFinally(cg)); break; case State.Handler: stmt.AddCatchYieldTarget(yt.FixForTryCatchFinally(cg)); break; case State.Finally: stmt.AddFinallyYieldTarget(yt.FixForTryCatchFinally(cg)); break; case State.Else: stmt.AddElseYieldTarget(yt.FixForTryCatchFinally(cg)); break; } ys.Label = yt.YieldContinuationTarget; }