Пример #1
0
        public static Dictionary <ProofState, MemberDecl> GenerateMembers(ProofState state, Dictionary <ProofState, BlockStmt> bodies)
        {
            Contract.Requires <ArgumentNullException>(state != null, "state");
            Contract.Requires <ArgumentNullException>(bodies != null, "bodies");
            var result = new Dictionary <ProofState, MemberDecl>();
            var cl     = new Cloner();

            foreach (var body in bodies)
            {
                var md = cl.CloneMember(state.TargetMethod) as Method;
                if (md != null)
                {
                    md.Body.Body.Clear();
                    md.Body.Body.AddRange(body.Value.Body);
                    if (result.Values.All(x => x.Name != md.Name))
                    {
                        result.Add(body.Key, md);
                    }
                    else
                    {
                        md = new Method(md.tok, FreshMemberName(md, result.Values.ToList()), md.HasStaticKeyword, md.IsGhost, md.TypeArgs, md.Ins,
                                        md.Outs, md.Req, md.Mod, md.Ens, md.Decreases, md.Body, md.Attributes, md.SignatureEllipsis);
                        result.Add(body.Key, md);
                    }
                }
            }
            return(result);
        }
Пример #2
0
        public static MemberDecl CopyMember(MemberDecl md)
        {
            Contract.Requires(md != null);
            Cloner cl = new Cloner();

            return(cl.CloneMember(md));
        }