Beispiel #1
0
        private static IQueryable <T> RemoveMethods <T>(IQueryable <T> qry, IEnumerable <string> methodNames)
        {
            var methodRemover = new MethodRemover(methodNames);

            var queryDelegate = Expression.Lambda <Func <IQueryable <T> > >(methodRemover.Visit(qry.Expression)).Compile();

            var query = queryDelegate.Invoke();

            return(query);
        }
Beispiel #2
0
        public void TestMethodRemoval()
        {
            Initialise();
            var program = GetProgram("ListCopy.dfy");
            var members = GetMembers(program);

            foreach (var member in members)
            {
                if (member.Name == "Copy")
                {
                    var methodRemover = new MethodRemover(program);
                    var removables    = methodRemover.FullSimplify(member);
                    Assert.AreEqual(2, removables.RemovableInvariants.Count);
                    Assert.AreEqual(3, removables.RemovableAsserts.Count);
                    var verifier = new SimpleVerifier();
                    Assert.True(verifier.IsProgramValid(program));
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Finds unnecessary annotations throughout the specified members
        /// in the dafny program and returns information on their locations
        /// </summary>
        /// <param name="program">The unresolved dafny program</param>
        /// <param name="members">The members to be checked for dead annotations</param>
        /// <returns>A list of DareResult objects</returns>
        public List <DareResult> ProcessMembers(Program program, List <MemberDecl> members)
        {
            Status = StatusEnum.Running;
            ApplyOptions();
            List <DareResult> results;

            if (members.Count == 1)
            {
                var member        = members[0];
                var methodRemover = new MethodRemover(program);
                var removables    = methodRemover.FullSimplify(member);
                results = DareController.GetTokens(removables);
            }
            else
            {
                var DareController = new DareController(program);
                var removables     = DareController.FastRemoveAllInMethods(_stopChecker, members);
                results = DareController.GetTokens(removables);
            }
            RestoreOptions();
            Status = StatusEnum.Idle;
            return(results);
        }
Beispiel #4
0
 /// <summary>
 /// Finds unnecessary annotations throughout the specified members
 /// in the dafny program and returns information on their locations
 /// </summary>
 /// <param name="program">The unresolved dafny program</param>
 /// <param name="members">The members to be checked for dead annotations</param>
 /// <returns>A list of DareResult objects</returns>
 public List<DareResult> ProcessMembers(Program program, List<MemberDecl> members)
 {
     Status = StatusEnum.Running;
     ApplyOptions();
     List<DareResult> results;
     if (members.Count == 1) {
         var member = members[0];
         var methodRemover = new MethodRemover(program);
         var removables = methodRemover.FullSimplify(member);
         results = DareController.GetTokens(removables);
     }
     else {
         var DareController = new DareController(program);
         var removables = DareController.FastRemoveAllInMethods(_stopChecker, members);
         results = DareController.GetTokens(removables);
     }
     RestoreOptions();
     Status = StatusEnum.Idle;
     return results;
 }