internal void AddYieldTarget(YieldTarget target) { if (yieldTargets == null) yieldTargets = new List<YieldTarget>(); yieldTargets.Add(target); }
internal void AddFinallyYieldTarget(YieldTarget target) { if (finallyYieldTargets == null) finallyYieldTargets = new List<YieldTarget>(); finallyYieldTargets.Add(target); }
internal void AddTryYieldTarget(YieldTarget target) { if (tryYieldTargets == null) tryYieldTargets = new List<YieldTarget>(); tryYieldTargets.Add(target); }
internal void AddElseYieldTarget(YieldTarget target) { if (elseYieldTargets == null) elseYieldTargets = new List<YieldTarget>(); elseYieldTargets.Add(target); }
internal void AddCatchYieldTarget(YieldTarget target) { if (catchYieldTargets == null) catchYieldTargets = new List<YieldTarget>(); catchYieldTargets.Add(target); }
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; }
public abstract void AddYieldTarget(YieldStatement ys, YieldTarget yt, CodeGen cg);