public override Choice VisitChoice(Choice node) { //Contract.Requires(node != null); Contract.Ensures(Contract.Result<Choice>() != null); return base.VisitChoice((Choice)node.Clone()); }
public virtual Choice VisitChoice(Choice node) { Contract.Requires(node != null); Contract.Ensures(Contract.Result<Choice>() != null); node.rs = this.VisitRESeq(node.rs); return node; }
public override Choice VisitChoice(Choice node) { Contract.Ensures(Contract.Result<Choice>() == node); this.VisitRESeq(node.rs); return node; }
public static RE Transform(Block b) { Contract.Requires(b != null); Contract.Ensures(Contract.Result<RE>() != null); TransferCmd tc = b.TransferCmd; if (tc is ReturnCmd) { return new AtomicRE(b); } else if (tc is GotoCmd) { GotoCmd/*!*/ g = (GotoCmd)tc; Contract.Assert(g != null); Contract.Assume(g.labelTargets != null); if (g.labelTargets.Count == 1) { return new Sequential(new AtomicRE(b), Transform(cce.NonNull(g.labelTargets[0]))); } else { List<RE> rs = new List<RE>(); foreach (Block/*!*/ target in g.labelTargets) { Contract.Assert(target != null); RE r = Transform(target); rs.Add(r); } RE second = new Choice(rs); return new Sequential(new AtomicRE(b), second); } } else { Contract.Assume(false); throw new cce.UnreachableException(); } }