Esempio n. 1
0
 public override void AddYieldTarget(YieldStatement ys, YieldTarget yt, CodeGen cg)
 {
     stmt.AddYieldTarget(yt.FixForTryCatchFinally(cg));
     ys.Label = yt.YieldContinuationTarget;
 }
Esempio n. 2
0
            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;
            }